November 2011 SeaPIG Meeting Notes
The meeting was held on Thursday, November 10, 2011, 7-9pm, at Office Nomads
Attendees: Bruno, Mark, Shannon, Oscar Baechler, Melissa, Jonathan, Larry Hastings (from Radio Free Python), Paul, Mike.
Oscar Baechler demonstrated Blender, a free, open source 3D animation and content creation suite.
Oscar showed us the basics of getting around in Blender's UI, including making the model, rigging the model (making a skeleton of "bones" so that character motions can be described), putting skin and texture on this (e.g., fur or feathers), animating and rendering. Blender is written in python and C and has an extensive API exposed and tightly integrated with the UI so that you can go back and forth between the UI and hand-editing the code generated in the UI. Hovering over the UI buttons shows you the API call associated to that action or property (what a good idea!). You can access a full undo/redo history and see the API calls for these. Blender imports and exports to an incredibly long list of other tools including animation tools and game engines. You can also make automation tools for Blender such as Nathan Vegdahl's rigify, which automates rigging (see a tutorial video).
Oscar also showed us some of his art work (see his blog), an example blender character rig that he made that you can download and play with, a blender file exchange website BlenderSwap, and other useful blender sites such as BlenderNation.
He described the Blender business model which seems very successful in the sense that the quality and speed of development of Blender rivals that of commercial software yet Blender is free and open source. It works like this: open movie projects are proposed with the direct purpose of adding specific capabilities to Blender. DVD pre-sales fund developers to make the movie and to build the new Blender features in the process. Once the movies are made they are available for free download (of the movie and the blender source files) as well as for purchase of the DVDs. Check out the movies and production information.
Oscar runs SeaBUG (Seattle Blender Users Group) where he frequently delivers tutorial talks. Oscar's friend and colleague, Tony Mullen, has written many Blender books, which you can find at Amazon or hopefully wherever you like to buy technical books. Oscar is also writing a Blender book, so check out the SeaBUG meetings where you might get to see Oscar demonstrate some cool stuff from his upcoming book!
Here are some additional contributed links related to Blender:
Tony Mullen is giving a Blender workshop;
Blender artist support forum;
Blender developer mailing list;
RenderFarm is a BOINC-based grid-computing resource for rendering with Blender and other tools.
Here are some more detailed notes from Oscar's talk:
Blender is a tool for making 3-D animated art for movies, games, and other applications such as medical visualizations. It is written in Python and C and has an extensive pythonic API which is tightly coupled to the user interface. For instance, you can hover over a button in the UI and see a tooltip showing the python API call associated to that functionality. You can also see and modify the python code generated by using the UI and you can write automation and scripting tools in python for Blender. In addition, nothing is locked down in the UI - you can customize everything. The UI looks like a window in which you see your work, and movable, dockable subwindows for tools and properties displays.
Blender is free and open source but is on par with commercial animation software that sells for thousands of dollars per seat. Blender has an intriguing business model which is responsible for its developing much faster than many other open source projects. As mentioned above, new features are targeted for Blender and a screenplay is proposed which requires these features. DVD pre-sales for the movie fund the creation of both the movie and the new Blender features. For instance, in order to develop the capability to have "fur" in blender, the short open movie project Big Buck Bunny was proposed, funded (by DVD pre-sales) and created, together with writing the code for producing "fur". And "fur" is not just for mammals but can be used for anything with a fur-like texture such as grass or feathers.
Blender is a very hot-key- and mouse-intensive program so Oscar recommends these hardware pre-requisites:
- a nice three-button mouse with a scroll wheel (such as logitech), rather than a mouse where you have to fake the third button in some way;
- a real numeric keypad (not one that you fake by holding down an extra "function" button - it will be like twister when you try to hold down control, alt, shift, function, 5)
- blender is surprisingly light on resources and does not require any more memory than, say, Photoshop.
Creating an animated segment in Blender consists of these steps:
- Preproduction: the artist draws pictures or a storyboard to give a concept or guide of what is to be created (not in Blender necessarily - possibly on paper);
- Make a model: this looks like cubes or blocks arranged in the general shape of your character - a person might be six cubes in the shape of a cross to start with;
- Rig the model: this entails placing "bones" inside the model, which will be used, like a skeleton, as the structural element which allows the character to move in a natural way;
- Skin, fur, or texture: add an exterior texture to the character such as skin, fur, or feathers, or the texture of water or ice or brick for landscape or architectural objects;
- Animating: specifying the sequence of movements the character will make;
- Rendering: computing the final image sequence from the rigged model and animation instructions.
Rigging is one of Oscar's specialties.
Blender has a number of coordinate systems and mastering these is a big part of the learning curve for 3-D animation and scene creation. There is a global coordinate system and coordinate systems that are local to particular objects. There are also coordinate systems associated to camera views. Within any of these coordinate systems one can make different kinds of transforms such as translation, rotation, and scaling. Transformations can be done organically (i.e., by hand with the mouse or keyboard they way you would draw) or mathematically by specifying the transformation with a sequence of mathematical or programmatic instructions, like in CAD or CNC machining.
There are object hierarchies in Blender which, among other things, help determine which objects move and transform together with which other objects. For instance, bones would be child objects of the model in which they reside. Assigning these relationships is called "parenting" as in "we parent this bone to this model".
Working in 3-D can be really challenging and it helps to keep in mind this order of doing things:
1. Get the right view.
2. Get the right selection of objects.
3. Do the right action.
For instance, if you are working with a bunch of objects and you are having trouble doing something to an object which is partially behind some other objects, then you need first to remember to change the view point to one where you can more readily see and select the desired object. This sounds really obvious to say it like that, but you get a really visceral feel for what this means if you watch Oscar work in Blender. His fingers are constantly in motion on the keyboard and the view is constantly moving around to look at the scene from different perspectives. It's like closely examine a sculpture by moving around it and looking at it from all different angles and distances. Or like a camera mounted on a bee and the bee is flying all around looking at a flower from different positions and angles.
Oscar also explained to us some of the intricacy of "bones" which are metaphorically like bones but more complicated. Bones can be used for specifying rigid motions, so one might use bones where a person or animal has actual bones, or also in other places where rigid motions are appropriate. Soft tissue sorts of motion are handled with shape objects. But there are many types of bones, each with different functionality. There are root bones, which serve as parent containers for other bones. There are control and deform bones and org bones, which each have some role in specifying motion, but now we are beyond my understanding of Blender bones.
Finally, Blender also has a game engine and, as mentioned previously, extensive import/export capability so you can move to and from other related tools and software packages.
About Blender...
Blender is a multi-platform, GPL-licensed, free and open source animation tool for making animated films, visual effects, interactive 3D applications, video games, etc. Its capabilities place it on par with mid- to high-end commercial animation packages. It currently runs on Linux, Mac OS X, Microsoft Windows, and FreeBSD. Blender contains a full python interpreter and provides an API which allows users to extend its functionality using python scripts. See the Blender Gallery for examples of artwork and movies created in Blender. The history of Blender is also fascinating.
About Oscar...
Oscar is a professional illustrator, 2D and 3D animator, rigger and designer. Check out his blog and some of his art work. He also runs Seabug: the Seattle Blender User Group.