We have moved our animation and rigging pipeline to fully embrace Unity Mecanim and specifically the Humanoid solution within it.
Core Rig Update
Updating our core humanoid skeleton to be a one to one match with the Mecanim Humanoid skeleton. It is possible to use a non one-to-one skeleton with the Humanoid, but we found that having a discrepancy resulted in inconsistencies with animation and gave no particular gain. Getting things 1:1 involved stripping off pieces not supported by the humanoid, such as the face joints other than the jaw and eyes, as well as simplifying the joint hierarchy where are old joint counts did not match, such as in the spine. With this done the rigging scripts had to be split apart and updated correspondingly.
Addons
The next step was to come up with a system by which extra joints and their rigging is attached to the core skeleton. We refer to these as addons. A couple key things to note about these are that they are not controlled by the humanoid and that they exist as ‘leafs’ of the core hierarchy not within it. Our rigging process consists of two parts; the creation of the skeleton and then the building of the control rig base off of that.
On the skeleton side we did two things; add the ability to build joints for addons on top of an existing skeleton, since previously all our skeletons were built from ground up to be fully complete instead of this more modular approach, and secondly we mark the skeleton with meta-data saying what addons have been built on top of the hierarchy.
When it comes to the rigging the core skeleton is always rigged, then the skeleton is checked for which addons exist, via the previously added meta-data, and then corresponding rigging scripts are triggered.
Export + Unity Setup
Our character and animation export process has always been agnostic to the particular hierarchy of a rig so we did not have to make changes there. In Unity there are a couple core steps; the creation of an Avatar for the character based off the core hierarchy and then setting up animations to recognize the addon.
By default when you apply a humanoid avatar to an animation all non-humanoid joints are disabled, this would mean none of the animation on are addons would be visisble. To get them to be recognized we simply apply a mask that contains all the joints to this animation.
Lastly, while some addons can have animation simply baked to them, those that are more dynamic, such as the soft eyes need scripts created to to drive them.