My Blender Story
Blender is the world's premier open source content creation suite for high-end 3D (and 3D+2D) graphics.
I first started using Blender during the summer of 2003-2004 shortly after the release of Blender 2.33, having previously tinkered with and outgrown the capabilities of other popular freeware apps available the time (e.g. Draw3D, Anim8or, and OpenFX to name a few). Admittedly, like many, I was initially put off by the interface the first few times I tried using Blender. Having an underpowered integrated graphics card that caused a lot of flickering and glitching probably didn't help. However, after persevering through the famous "Gingerbread Man" tutorial, things finally started to click.
The production of Elephants Dream - the world's first Open Movie project - was an important moment in both the history of Blender and
Blender Development Work
Since 2006, I've been an active core Blender developer, focussing primarily on the Animation System/Tools and Grease Pencil. Under my watch, Blender's animation capabilities have developed from being viewed as a :toy", to being comparable to (and in some cases more advanced) than "industry standard" tools such that multiple feature film productions have now been fully animated (or are in the process of being animated) using tools I've created.
Animation System/Tools
Main contributions:
- Animato (2009) - Architect of a full recode of the animation system to support the "everything animateable" target for the 2.5 project, bringing Blender's animation capabilities up to a professional standard.
- Animation Editors - Module owner and responsible for fully recoding these (and all their tools)
- Animation Editors Design + Implementation (2008-2011) - Full redesign of the animation editors (and all their tools) to unify their designs and use the AnimChannel Filtering API behind the scenes.
- AnimChannel Filtering API (2008-2011) - Architect of the underlying backbone used to power all the animation editors.
- Keying Sets (2009) - A system for keyframing multiple properties at once, with support for both user-defined Keying Sets (i.e. "Absolute Keying Sets"), as well as dynamic script-generated ones (i.e. "Built-In Keying Sets", such as the standard Location, Rotation, Scaling ones based on the current selection)
- Constraint System Refactor (2007) - Refactored the constraints system to be more modular, more easily extensible, and more flexible.
Developed the following constraints:
- Transform Limiting Constraints - Limit Location/Rotation/Scale
- Copy Transforms
- Limit Distance
- Clamp To
- Damped Track
- Transformation
- PyConstraint
- New Dependency Graph Engine Architecture(DEG) (2013) - Investigated and designed
- Bullet RigidBody Sim Integration (2010)
Notable Contributions:
- Bendy Bones (2016)
- Long Keyframes (2008)
- Breakdowner, Push/Relax Pose
- Pose Propagate
- Pose Libraries
- Spline IK
- Bone Colour Sets + Custom Bone Colors + Bone Groups
- Mask Modifier
Other Animation-Related Development
- Various Timeline Marker Tools/Improvements
- Marker Editing Support in All Animation Editors
- "Local Markers" Support (needed for the Pose Libraries tool)
- Armature Drawing Features:
- "Wire" Draw Mode
- Custom Bone Colors
- Various Armature Editing Tools
- Interactive Bone Roll tool (in Edit Mode)
- Join/Separate Armatures
- Fill Bone Chains
- Merge Bones
- Switch Direction (of bones in Edit Mode)
- Snap (Shift-S) (with bone space awareness)
Grease Pencil
Original creator of the Grease Pencil tools in Blender. For more details, see the paper.
Blender 2.5 Project
In addition to working on the Animation System refactor for Blender 2.5, I also worked on the following projects:
- View2D Cleanup/Porting - Cleaned up the code used to implement the scrollable/zoomable 2D UI regions used across the UI
- Operator and RNA Porting - During the early stages of the Blender 2.5 project, I worked on porting some of the first working "operators" in 2.5. Many of the operators now still retain many of the conventions I introduced during this time.
General Development
Other things I've worked on include:
- Text-based Search/Filtering in the Outliner
- Horizontal scrolling support in the Outliner (2.42/3)
- The Orphan Datablocks mode/tools in the Outliner (2.7x)
- Refactored the Outliner code to be more maintainable (by splitting into separate files)
- Curve point selection tools (e.g. Select First/Last, Nth, etc.)
- Themeable primary axis colours
Scripts and Addons
- Remap Shapekeys - Tool for transferring shape keys (and associated drivers) between meshes, where the source mesh is a subset of the destination mesh. It is designed to be used to transfer facial shape keys from a detailed head/face mesh on to a body built with the head mesh as a starting point (i.e. parts of both meshes are the same, even if the overall vertex count/order are different).
configure_blender.py
- Script for applying personal default settings to new Blender installs (e.g. after using--factory-startup
)