I’ve been experimenting with Growl lately, which is a great notifications system for osx with a whole load of useful controls, including notification by email, as well as a python api for doing notifications. Afters seeing Jason Van Gumster’s render music script, I thought it would be a good project to try and combine the two. The result is a Growl notifier addon for blender that gives you notifications about rendering, which is really useful to have if you’re setting off an animation to render over night and you want be kept up to date with how it’s doing, or even if you’re just web browsing whilst you wait for a quick render and want to be notified when it’s done.
I started learning python a bit more seriously late last year, and since then it’s saved my bacon more times than I can count. It’s a terrific tool both inside and outside of blender, for automating tedious batch processes and adding little functions to blender that you just wish were there sometimes. Whilst learning python and the bpy API more fully will take some (well spent) time, you can get to know blenders python API very easily thanks to the Autocomplete function (Ctrl-Space) which will present you with a list of available options when exploring the api from blenders python console.
One use of the python console that is very quick to get the hang of is using for loops to the properties of multiple objects at the same time. To get a list of all the selected objects, you can use bpy.context.selected_objects. Then you can run through the list with a for loop, which will do the same thing to each entry in the list. For example the following sets all of the selected objects display level to wireframe:
for x in bpy.context.selected_objects: x.draw_type = 'WIRE'
An example that might be useful if you’re working on a complex render setup might be to batch assign object indices to a selection:
for x in bpy.context.selected_objects: x.pass_index = 1
Another useful example is setting the display level for all your objects subsuf modifiers to zero. This greatly speeds up your viewport performance when working with a complex scene, and whilst blender lets you do this using the simplification tools in the scene tab, you can’t (to my knowledge) do it just for objects in the 3D Viewport (the simplify options affect both the viewport and rendertime). This time, we to use try to allow blender to ignore objects that don’t have subsurf modifiers that need changing:
for x in bpy.context.selected_objects: try: x.modifiers['Subsurf'].levels = 0 except KeyError: print("No subsurf on this object")
A handy one when working with blenders camera tracking tools (or something else that generates lot of empties) is to use a for loop to change the draw type and size for a whole bunch of empties. It’s handy for shrinking them down to keep them out of the way:
for x in bpy.context.selected_objects: try: x.empty_draw_type = 'CUBE' x.empty_draw_size = 0.1 except KeyError: print("This one isn't an empty.")
You can find more options that you can change this way by exploring the api with autocomplete, or if you have a specific property in mind that you want to change you can simply right click it in blenders UI and select Copy Data Path to copy the last part of the data path to the clipboard. You can either save these little snippets as scripts or simply type them in when you need them - they’re pretty short. If you’re saving them as a script remember to add the line “import bpy” at the beginning of the script (you don’t need to do this in the console). Anyway, I just wanted to share something in python that might be pretty easy for beginners to grasp, and that I’ve found really useful. Let me know in the comments if you have any good ones of your own!
My friend and partner in crime at Gecko Animation, Jonathan Lax, recently put together some breakdowns of the shots we did for our short film Assembly: Life in Macrospace, which won Best Designed short film at the suzanne awards last year. Have a watch if you’re interested in how it was made.
All of the CG shots were done in blender, though some of the fluid sim was done with realflow and then imported into blender as .obj files using a little python script I wrote. The rendering was all done in blender internal, and post processing with a mix of blender and After Effects. We mainly used AE for the depth of field as blenders defocus node is kind of slow and has some issues with foreground blur, whereas the Frischluft lens blur plugin for AE is pretty darn fantastic. The grading and other effects were all done with blender.
If you haven’t seen the original itself you can find it here.
Here are some models I made over the past year, I put together some turntable renders for a little showreel. Most of these are modelled in blender/sculpted in zbrush. The turntable renders were done with v-ray and composited back in blender.
Hmm, maybe it was a power station, maybe a factory or a warehouse. All we know now is it’s falling apart. A project I began a long time ago, which has been gathering dust on my hard drive, so I thought I’d post it up. At some point in the future I might resurrect it in its originally intended animated form, but for now here are some stills.
All the modelling was done in blender 2.49, with some sculpting and texturing in blender 2.5. Most of the texturing was done in GIMP, with a whole bunch of textures from CGTextures.com. Rendering was done in V-Ray, thanks to Andrey Izrantsev’s fantastic blender 2.49 to vray exporter (though the newer 2.5 version is even better). Compositing was done in blender 2.5.
Click images for full size (1920×1080) versions.
Done for Gecko Animation Ltd, which I am now a part of!
A short experimental piece featuring a blend of Macro Photography and CG Animation. It started with an idea from David Parvin, of Two Rivers Partnership, involving abstract forms and macro photography. With the footage shot, Jonathan Lax and myself worked on constructing a narrative from the forms we saw by combining CG elements with the original footage.
The CG elements were all done in blender (though some of the fluid sim stuff was done with RealFlow) and rendered in BI. Lots of animated node materials for the shifting surfaces and displacements.
Director of Photography – David Parvin
Live Action Shoot – David Parvin, Jonathan Lax, Tobin Brett
CG Animation and Effects – Ben Simonds, Jonathan Lax
Editing – Jonathan Lax
Music and Sound FX – Alistair Lax