In a scenario in which multiple skeletons share a common base bone hierarchy but diverge in certain custom parts, I was wondering if there is any existing functionality for Control Rig inheritance, in which we could have a base Control Rig for the shared bone structure, and then two child Control Rigs to handle the unique bones that are particular to each skeleton.
Alternatively, I also wanted to ask if there is a way to have a Control Rig asset agnostic to the skeleton, in a similar manner as to how Template Animation Blueprints work, so it can be constructed procedurally for any given skeleton using only the Construction Event.
We don’t have the concept of inheritance in control rig, but we have some other tools in place. The first is modular rigs, the idea being that you would build smaller modules and then construct your rig based on your needs and the skeleton. Modular rigs can be put together and then used at runtime.
The issue with the above is that you really can’t handle that dynamically in the anim blueprint. And you would basically need to build a rig that handles all the situations that your character customization has ahead of time. Imagine the scenario that you specified of a main rig and two child rigs to handle something like pouches or hair. Your control rig would need to handle that scenario specifically. This leads us to your next method of handling this type of thing if you need runtime support.
You can build small control rigs and run them in sequence in different spots. So, say in your main graph you have your control rig node to handle ik hands or other modifications on the main skeleton, but then in your post-process animbp for your hair (imaginary scenario where you have control rig physics setup for a hair attachment) you can run a control rig node there for your attachment. The main thing to look out for is performance; it is okay to run small control rig modules, but be careful and monitor your performance during rig initialization. Similar to the advice we’ve given before, you don’t need to import the whole hierarchy for the rig.
Lastly, we do have the concept of function library’s for control rig, if you find yourself building a simple FK rig with dynamics over and over, you can simplify your control rig by putting a majority of the functionality of your rig into a function library and then have inputs for what bones/controls you are working on and then put them into individual graphs as you need them.
Control Rig asset agnostic to the skeleton:
Yes, we do have support for this. I linked the modular rigging documentation before and that is a good example. The main thing to note is that it is an editor time solution to building rigs. If you want something that is built at runtime, you can use the import skeleton node in your construction script. Once you do that, you can search for specific bones to build your rig off of using the item name search node if you don’t have a particular naming convention.
Thank you very much for all the detailed information. For the specific problem we are trying to solve, it seems that the import skeleton node might be the way to go - If I understood correctly, that node would import the skeleton hierarchy of the given character and then allow for the generation of the control rig procedurally from the Construction Event, then build the Forward Solve and Backward Solve logic from it.