Softimage Recipe
The Character Rig
by Adam Sale
________________________________________________________________________
Objective: To build a functional, working character rig for your Softimage characters
Synopsis: Through the use of Hierarchies, Position Constraints and Orientation Constraints, we will construct a rugged character rig using primitive null objects, to withstand the hostile environment of Cartesian space, as well as to stand up to the demands of 3D Animators.
________________________________________________________________________
Preparing the Character
Load your character into Softimage. Switch to your schematic view. Open up your schematic view, click on the L shaped ruler icon, and deactivate the "update after delete/parent" option. This will eliminate Softimage from rearranging your schematic window every time you delete or parent an object.




The Null Hierarchy
Most of the time when you are building a character, you will be using a global envelope to connect your geometry to the skeleton system you have created; your geometry becomes the parent of your skeleton structure. With this enveloping method, the top of your hierarchy should end up being the waist of your character or a piece of geometry located close to your characters Center Of Gravity, the 'logical parent from which all other geometric pieces radiate hierarchically'. This pieces center will become the proper rotational pivot point for your character. Name that top node of geometry, ROTATOR, for this will be the node that used to rotate your character's hips, bend it over, twist, et cetera. Get yourself three null objects. Each of these objects will be used to control a portion of the rig that your actor will be harnessed to. Select one of the nulls. We will Position Constrain it to the top of the characters hierarchy, the ROTATOR node. This null will control the characters movement in the three axes



Select one of the next nulls and Constraint . Position it to the effector of one of the leg chains, the effector located just below the shin joint of your actor. Again, it is important to consider that this step is simply used to move the null into position over the center of the effector, before re-constraining the effector to the null. Relax the constraint. When you have done so, select the effector and Constraint> Position it to the null. Select the null and name it RGT_FOOT.
Do the same for the other leg.

When both legs have been constrained into their respective rigs, it is time to focus our attention to creating a harness for the feet. Generally, when performing a walk cycle using the Null harnesses for IK or giving your character a little bounce in his movement, the feet tend to crash down through the floor. The only solution in such cases is to keyframe the rotation of the bones at nearly every frame so that the feet look like they are in contact with the floor. Consequently, this is an astronomical waste of time, unless this is the effect you so desire.
To alleviate this monotony, you will create an Orientation Constraint between a null and the first joint of the foot. An Orientation Constraint, locks an objects X direction, to the X direction of another object.

Putting it All Together
Your legs, feet, hips, and pelvis are now all ready for animation. Select one of the legs as a branch, and perform Explicit Translation on it. The leg should move nicely, and the feet don't crash down through the floor. With the same branch selected, rotate the selection. Notice how the branch controls the rotation of the foot as well.
By saving Explicit Translation Keys, and Rotation keys on the branch, you can control how the leg and foot behave.

The last thing we need to do is put these Harness nulls into an orderly Hierarchy. Get another null and name it GRAMMA. Make the COG, RGT_FOOT, and LFT_FOOT, children of this null. Also make the ROTATOR node a child of the GRAMMA node. Again, be sure that all of the nulls have the exact same scaling values.
The GRAMMA null is usually only animated if you are performing a cycled animation on the spot. You can extrapolate the cycle by animating the translation of the GRAMMA null to make it look like your character is progressing forward. Generally though, the GRAMMA is left alone, as many Grandparents are, neglected and lonely in their retirement homes.
The GRAMMA is only a reference point for all of the harness nulls, as well as a scaling reference point that the other nulls use to judge their motion off of in Softimage units. This brings us to the reason for having the same scaling values for all of the nulls that are parented into the Null hierarchy.

When the nulls are all parented in to the hierarchy, they all look to the parent node, or the GRAMMA, for reference. Assume your character is performing a walk cycle animated on the spot using explicit translation values for the foot nulls, and the COG. You want to extrapolate that "johnny on the spot" cycle so that the character is moving forward, but also so that the feet look like they are grounded and actually propelling your character forward in a believable manner. In this instance, you will animate the GRAMMA. In our example, let us assume that the COG, RGT_FOOT, and LFT_FOOT all have scales of one in X,Y, and Z. The GRAMMA has a scale of two. The scale is measured in Softimage units, therefore if my GRAMMA is 2 softimage units large, it will move twice as far as the other nulls if the same transformation values are applied to it. Any Explicit translation movement that you save on the COG, RGT_FOOT, and LFT_FOOT nulls will be multiplied by a factor of two, which will throw off the amount of translation that you have deemed necessary for your characters walk to look realistic. Your character will slide all over the place. This is all because the children look up to the parents in a monkey see monkey, do kind of way.
Your rig is now complete.
