Human Sculpting and Rig Tool Planning
When I originally wanted to take on this standard human project, I had the idea to take the rig one body area/module at a time. I would model the arms, rig them, animate them, and package that into a module for my auto rig system. When exploring the arm and shoulder, it became painfully clear that this approach would not work. Much like figure drawing, the best strategy is to take the whole piece at once, developing each facet of the body to make sure everything is working well together.
Because of this, I took the time to sculpt out the entire body in ZBrush. I think this will make my weight paints much stronger and let me think of how each modular piece of the rig should influence others as I develop them all as a single artwork. I’ve also done work to make a plan of how I want to approach the areas of this model, and did some barebones framework for my own animation library and pose creation system, something I’ve always wanted to do to help with weighting extreme poses.
The Model
This character is designed to be as standardized as possible. I want to be able to take much of the work for this character like weights, animation, topology, and build tools to significantly cut the work for humanoid character with personality. The human is the canonical 8 heads tall, and has just enough muscle in keys areas that I can experiment with some advanced deformation for real time.
High poly sculpt on the left. Retopology/game ready model on the right
For the retopologized model I was adding tris as much as I felt necessary in order to give plenty of room for solid deformation around each joint. In the end the model comes around 28000 tris. This number will change once the face model is complete, but I still think there’s plenty of room when I’ve seen modern models in the 75000 tri range. I will look for areas where the density is unnecessary to optimize future models.
Front view
Back view
Rig and Tool Planning
As I mentioned above, I want to treat this project as a base to accelerate the work of future characters. The skeleton I make here should be useable for other humanoids and the animation transferrable as a result. I also want each body part, like a leg or arm, to exist as an independent structure, so hypothetically a foot module could be put on the end of an arm module with no issue. This can be achieved by keeping the data in a module private, and being intentional about what other modules are able to access data wise.
I am also taking this project as my opportunity to start moving away from Maya constraints and taking advantage of matrix workflows. There are many reasons for this. Matrices can flatten DAG hierarchies and improve performance. They make my understanding of 3D graphics stronger by generalizing my rigging to be based on Linear Algebra rather than Maya’s built in nodes. Having a foundation in matrices for basic systems like FK and IK open the door for much more complex prop or creature rigging that just isn’t possible with constraints.
A big idea I want to work on in tandem is a custom animation library tool. This will serve a couple purposes. For one, it should allow me to save keyframe poses on a bind skeleton so I can reuse extreme poses for skin weighting. The other main function will be saving full animations to be reused onto the control rig. Because my rigs will use the same joint structure with custom attribute tags, I will be able to take a walk animation on one human, and transfer it to another, accounting for proportional distances.
Basic framework for Pyside2 UI
A rig will have its initial joint bind positions saved to a .json file. Another .json file will hold the world matrix positions for each joint at the specified keyframe. Those .json files will be read into the UI and each is represented by a selectable image (taken at the time of pose creation). Adding the pose will put the animation on the specified frame. I also want the poses to be sortable by tags that are assigned based on rig type, pose or animation, and any other custom user input. If a rig with different poses wants to use the animation, it will compare the proportions of each rig to adjust the necessary values for the animation to look reasonable.
The specifics will likely change in practice, but that is the initial plan. I will be kicking back and forth between character rigging and building this tool in the coming weeks!