I'm writing an autorigger in Python for Maya to create game rigs for Unity. I come from the cinematic world, and I am aware that some of the rigging methodologies for cinematic rigs don't work well with game rigs.
My workflow is as follows: I have a Bind skeleton that is skinned to the mesh. My script creates a separate Control rig with control joints (IK and FK), controls and other deformers that manipulate the bind skeleton. The bind skeleton joints are connected to the relevant control rig joints.
I have a few questions that I hope you could help me to setup my control rig:
1. Stretchy limbs - Can I use the scale channels to stretch the limbs or should I use only the translation ones to do so? This is particularly relevant to creating a stretchy spine using a spline IK setup and streching the joints based on the length of the spline curve. I read some conflicting information on the subject, and I would appreciate some clarification.
Connecting Bind skeleton to Control rig - What would be the most efficient way to do so, based on the fact that the animations will be baked out? Should the Bind skeleton be connected via constraints (orient, point/parent for stretch based on translation, scale)? Can I use direct connections, for example blendColor nodes to drive the translations and rotations of the Bind skeleton?
Primary joint orientation - Is there a preference for Unity? Maya's default is X-down. I find it more logical to use Y-down, with X as secondary axis and secondary world orientation
T-pose vs. A-pose - I see a lot of game models in the standard T-pose. The main advantage is that this pose allows for any character to fit a standardized skeleton vs a relaxed, A-pose. On the other hand, when it comes to binding the mesh, you get unwanted deformations and stretching especially on the shoulders, clavicles, upper torso and arms. Now, it's obviously a lot easier also to build a rig in the T-pose, where there's less chance of encountering strange rotations, especially when IK setups need to be on a flat plane. My question is: Would it make sense to 1)model the mesh in a relaxed pose, 2) create a standard T-pose Bind skeleton, 3) save keys on frame 0 for all Bind joints, 4) rotate the joints to match the relaxed pose, 5) skin/weight paint the mesh to the Bind skeleton and 6) reset to frame 0 in order to apply the rig back as a T-pose?
Facial rigs - The 64-million dollar question: joint based vs. blendshapes? How well does Unity deal with blendshapes these days? Any advantage of one over the other for game rigs?
I appreciate your comments. I'm sure a lot of people encounter similar issues and hope these questions could answer theirs as well. If you can also explain the logic behind your answer, that would be great!