Okay, so I mentioned in a post a while back that I was working on a facial control projection tool and that I’d write a big post on that when it’s released. Well, it’s released and has over 120 downloads already! That’s pretty exciting, to be honest, and I do want to write a post about the inner workings of it and the process of making it. I may do that after my current project.
I do want to write this as I’m working on it though because I think it’ll be more indicative of my process and I’ll be able to more easily talk about issues I’m coming up with as I go along.
So, remember that automatic rigging module I was working on? Probably not, and that’s okay, because I’ve totally changed its scope. It was originally just gonna be an autorigger for arbitrary bipeds and quadrupeds… and that’s fine as a learning experiment, but really there are a ton of those available already.
Instead, I’ve decided to do something far more ambitious. I’m writing a rigging toolset that a) is cross application (i.e. works identically in Maya, 3DS Max, Blender, and possibly some others), b) has a metanode network that makes rigs fully compatible with the Red9 StudioPack animation tools, and c) is extremely versatile, allowing for a decent production ready rig (excluding skinning for now, which will be done by hand) to be created in minutes, and for that same rig script to be functional on similar skeletons (e.g. bipeds with different proportions).
I’m writing the beginnings of this toolset (which I’m calling Workbench) for a school assignment, so I should be updating the blog fairly frequently. Below is what I wrote for my initial pitch:
I’m making a set of rigging tools that vastly speed up rigging workflows. It is intended to be used by rigging artists, not in lieu of them. It’ll be written abstractly to allow for arbitrary rig types (biped, quadruped, car, spider, etc). It’ll include multiple modules for different body parts, including spine, head, limb (arms and legs), and tail. Modules will be declared as classes. The modules will use components (also declared as classes) in their construction. The components are common parts of a rig such as IK chains, FK chains, IK/FK switches, ribbon splines, etc.
Hopefully it will function in such a way that the same rig script could be applied to multiple similar skeletons (e.g. various bipedal characters with different proportions) with little if any alteration.
The intention is that this tool will be extended after this assignment to allow this functionality in other 3D applications. For this purpose, nodes referenced by components and which may be used inbetween or in conjunction with components will be wrapped in intermediary classes, and the maya commands will exist either as methods of those node classes or as intermediary functions in a conversions.py module. This will allow functionality for other 3D applications to be added without modifying the code that makes up the modules and components.
Additionally, because this is an ambitious project already, the metanode classes, User Interfaces, and rig script saving functionality that will be mentioned in pre-production documentation will not be written during this assignment, but rather at a future date. It is included in the documentation as an indication of the extended scope and to show why some elements are being abstracted the way they are.
The extended tool aims to enable rigs to be transferred seemlessly between applications, and facilitates a standardised rigging workflow regardless of a given studio’s preferred animation workflow and applications.
The tool that will be built for this assignment is the minimal viable product (i.e. enough to make arbitrary production-ready rigs, assuming a provided skeleton, and excluding skinning).