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.

I'm not obsessive compulsive, but a clean and organized schematic is essential to my overall efficiency as an animator. I always rearrange the schematic view of any character so that the individual nodes end up resembling the physical structure of the character itself. The leg nodes are moved into the rough area where the character's legs would be situated, as are the arm and head nodes etc. When all of the pieces are in place, I end up with a very crude representation of my character. Choosing a node couldn't be any simpler.
To further enhance the readability of my schematic window, I name every skeleton node corresponding to the anatomical part that it controls or represents. My upper left arm skeleton would be aptly named LFT_BICEP. A lower right leg skeleton would be aptly named RGT_SHIN. Do this by selecting your respective node and clicking on Info à Selection. To top off this wonderfully effective 'map' of my characters anatomy, I like to color my joints one common hue using the color palette provided at the bottom left of the Softimage screen. Again, visually, this is excellent in helping me to visually access any piece of my character that I need at any given time. In production, it all comes down to Workflow, workflow, workflow ….

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

Keep in mind that it is extremely important that the scaling values of each null remain the same. Ideally, keep them at the default scale of one. The reasons for this will be explained at the end of the tutorial when you can see the global relationship of one null to the other. Select Constraint >Position, and constrain the null to the ROTATOR node by clicking on it as a reference. The null will snap into position by constraining itself to the center of the ROTATOR object. Relax the constraint by clicking Constraint> Relax.
We have just effectively placed the null into position so that we can re-constrain the ROTATOR object to the null, without having the characters body jump to the nulls position. This is able to happen because both objects centers are occupying the same coordinates in cartesian space. Select the ROTATOR node, and click on Constraint > Position. Pick the null as reference. The null is the first part of the harness. Since it now controls the position of the ROTATOR, the rest of the body and skeleton must follow this null wherever it is moved. If you go into your schematic view, and activate Model mode, you will see the relationship between the two objects symbolized by a yellow line. Name the null COG (Center of Gravity) This is the object that you will use to move your character around by saving Explicit Translation keyframes

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.

Duplicate the RGT_FOOT null, and select the new null node. It is already in position for our purposes (at the center of the heel joint of the right foot). Click Constraint > Orientation, and pick the first joint of the foot as reference, when the mouse line prompts you to do so. The null orients itself towards the joints X direction . Relax the Orientation Constraint, select the joint, and perfrom another Constraint > Orientation, only this time you constrain the joint to the X direction of the null. Name the null RGT_ORI, and make it a child of the RGT_FOOT node. Do the same for the other leg.

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.

Character Rigging in Softimage 3D was written by Adam Sale. Adam is a Technical Director and co-founder of Joncrow Entertainment. He can be reached at adamsale@home.com.