Reaction - On Demand Rigging [GDC2018]
Reaction is an On-Demand Rigging framework we built during the latter stages of Warhammer 2. Given that we're heavily invested in a referencing pipeline it was a bit of a leap to go fully on-demand.
Instead we decided to take a middle ground. We built a tool (Reaction) which held components (using plugged - read here for more info). Each component can be thought of as a bolt-on rig which drives or modifies the reference rig.
This approach meant that we no longer needed to code in all the possible variations of a rig into our base reference. Instead, our reference rig can be kept lightweight and the animators could apply components as they saw fit based on the needs of their current animation.
The components are more than just a rig however. A component is a package containing rig building/modification code as well as some UI elementswhich expose tools specific to that component. This means the animator gets a much richer and more tailored workflow.
Because the tools become far more component specific, they're also faster to develop. Building tools which can work in every context can be incredibly tricky and time consuming. Taking this approach meant we could be far more agile and be a little more creative with the solutions we gave.
The whole setup utilised our plugged architecture - which is a Factory/Plugin implementation within Python. By adding version numbers to our plugins we could implement the same component multiple times as we had new ideas.
This meant we could reliably change the rig within a component, as well as refactoring the tools packaged with it - all without altering/breaking any pre-existing implementations of the component during production.
This freedom was a huge bonus, as it re-enforced the approach of roughing something in quickly for the animator and allowing us to continually refine over timewithout breaking any scenes which contained previous versions of a rig.
Finally, at any stage the animator could choose to bake out the component. This would bake the results back onto the reference rig via an additive animation layer - meaning the animator could dial the effect in and out even after the component has been removed.