As this is my first post about a Rigging and Animation topic I have decided to explain something rather simple yet extremely useful. The concept was introduced to me while I attended Sheridan College in Oakville, Ontario, Canada in 2008 by my Rigging professor Mike Fabris. Keith Lango also has an article about “Layers of abstraction” which is ideally the same principle.
When building a rig for a character, prop, or vehicle; it is important to be able to get your character back to a rest pose. This helps to reset the character if you need to redo a pose or a whole animation on a portion or on a character in its entirety. Some programs such as Autodesk’s Softimage and Maya have a feature which is called a neutral pose that allows you to set a global position as an objects local zeroed out position.
So if you take a cube object and move it vertically to a Y value of say 10. If this position is the default position you would like it to be in as its zero (neutral) position you would set a neutral pose on the object and the local transform for Y becomes 0 while leaving your object 10 units up on the Y axis. Technically this gets the job done, however there is a posibility that someone may be able to come along and mess with that neutral pose. Somehow an animator may accedently override the neutral pose. Then how are you to know where the neutral pose was? You can’t unless you store that information somewhere in maybe a backup file or if you write it down. Too much work to keep track of that stuff else where in my opinion. So a tried and true way to ensure that a neutral pose can never be lost is the following:
- Create the controller and name it “Simple_CNT”
- Position it where you need it to be for its neutral pose
- Create a Null object named “Simple_RestNull”
- Match all the transforms of the Simple_RestNull object to the Simple_CNT object
- Parent the Simple_CNT underneath the Simple_RestNull
- Hide the visibility and selectability of the Simple_RestNull
Now the Simple_CNT’s local coordinates are based off of the Simple_RestNull object. So if you move the Simple_CNT and need to get it back to its rest position all you need to do is reset it’s local transforms. Even if an animator is able to set a neutral pose on top of that, you can clear the neutral pose and reset the transforms to get it back to 0. Also if you ever need to adjust the rest position you simply unhide the _RestNull object and reposition it. The controller will follow along due to the parent hierarchy.
I use this method all the time and has never failed me. Live it, learn it, love it.