Upcoming Events
Unite 2010
11/10 - 11/12 @ Montréal, Canada

GDC China
12/5 - 12/7 @ Shanghai, China

Asia Game Show 2010
12/24 - 12/27  

GDC 2011
2/28 - 3/4 @ San Francisco, CA

More events...
Quick Stats
103 people currently visiting GDNet.
2406 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!
Link to us Events 4 Gamers
Intel sponsors gamedev.net search:
Character Rigging Best Practices
Posted March 28 5:06 PM by Kelly Murdock
The “Character Rigging Best Practices” session was presented by Steve Theodore and Doug Wilcox. It was an advanced-level presentation that presented ways to handle several different rigging problems. At the start of the presentation, Steve emphasized that these techniques are considered “best practices” learned from experience, but they don’t represent the only or definitive way to rig characters. Rather they are solutions to the boring, reoccurring problems that riggers face.

A Framework of Key Rigging Concepts

Steve was hopeful that by defining a list of key rigging concepts and a common language, that riggers throughout the industry would be better able to communicate and share solutions to problems. Steve’s presentation covered six different areas of rigging including Spaces, Kinematics, IK Controls, Switching Systems, Coordination and Putting it Together. In each area he focused on a specific rig area including Roots, Torsos, Legs, Arms, Fingers, and Heads. The last part of the session covered bringing it all together and a call to build the rigging community while being professional.

The question was posed, “What is a Rig?” Although the first answer might be a system that enables posing, but actually posing is secondary. The main job of a rig is to enable motion. Therefore, a rig is not an interface, but a bunch of potential animations. Rigs cannot be expected to solve every problem. For some problems, you may need multiple rigs.

Spaces and Roots

Concerning spaces, you need to understand that a complex motion in one space may be simple in another. Spaces are defined as a frame of reference for motion. These are typically defined as the local transforms for an object. Managing spaces is the key to good rigging. If an animator needs to counter an animation, then the rigging is a failure.

Spaces can be subdivided, but you need to learn to control the scope of the spaces and to keep the scope consistent. You can check the space scope by examining the function curves. If all the keys are within a common scale, then the scope is good, but if one function curve drowns the rest out, then there is a scope problem. For example, if a space includes the wiggling of the hips along with the walking of the character, then the function curve for the walking motion will far out-scale the hip motion. A space with good scope will show the details of the function curves. You also need to be aware of over-lapping spaces.

For complex motions where the spaces aren’t clearly defined, you can create “fake spaces” with good scope. This actually liberates animators. Behavioral controls are a good example of this. For example, the movement of the eye would be complex if you created a rigging for rotating the eye internally, but by having the eye look at an object in space, gives the animator the ability to control the complex eye movement without complex controls. A rigging should never limit the freedom of expression, but it needs to take away the opportunity to mess up the character. Path animations, drivers and expressions are all good examples of behavioral controls. Expressions in particular are useful because they know about time.

When dealing with roots, there are two preferred methods that you can use. The first is a C-G Root Rig. This root is a 6 degree of freedom control based on the character’s center of gravity and allows a translate-only offset control for positioning the character in the scene. It is good for motions that move the character vertically in the space, but it can have scope issues for large moves. The second rigging root method is the Ground Shadow Rig. This root is located on the ground under the character and allows positional translation and yaw rotation about the character’s center axis. This option has good scope, but doesn’t allow vertical translations easily.

Kinematics and Torsos

Two common animation methods are available for animators. IK systems are good for motions that require precision such as a controlling exactly where the tip of sword moves. It generates power from thrust. FK systems are good for expressive motions where the power comes from inside such as slashing, throwing, and swinging. It transfers power via torque and is imprecise. Kinematics is not about posing, but about what happens between the keys. A good book that describes these motions is the Animator’s Survival Kit by Richard Williams.

There are two ways to handle kinematic motions—baking and faking. The baking method translates all kinematic motions to FK. Motion capture is a good example of this as all mo-cap data is always FK. The baking method provides a simple interface for animation blending, but can result in a dense set of data. The faking method translates between kinematic systems. To do this, duplicate the control, parent constrain the duplicate to the source, bake the constraints, copy the baked function curves to the original control and delete the duplicate.

There are several methods for handling spine kinematics. It is best to use IK for linear movements and FK for orbital motions. When building an FK system, you can place the root at the first joint above the pelvis, which is good for standing and sitting poses, but poor for contraposto; or you could place the root above the navel, which is good for action, but poor for sitting. For body space torso control for FK systems, you should parent the torso control to the root, then constrain the control point to the top of the spine. This is good for upright actions, but bad for whip actions.

For handling FK rotations, FK chains can act wacky. For example, each rotation alters each bone in the spine and you can’t add up the results. You also need to worry about gimbal lock and even if you convert to quaternions, they won’t fix everything. By nature, 3 DOF chains are inherently unstable because the end positions wobble, and they are vulnerable to locks. 2 DOF chains, however, are stable.

To handle unstable 3 DOF chains, many packages use a Twist feature. Twist is a special type of rotation that is easy to explain, but hard to model. When using twist bones, move their rotations out of the hierarchy. This yields a 2 DOF chain with a single 1 DOF twist bone, but the last bone still has 3 DOF to drive the twist. You can distribute the twist based on the last joint.

Another alternative is to use the 2 + 1 FK torso model. This is a 2 DOF chain from the pelvis to the torso with a 1 axis fixup parented to each spine link in order to control twist. When the torso twists, it drives these fixups and the skin in bound to the fixups. This method is good for animating spine links using a 2-axis FK method while allowing twist rotation of the top chest joint.

An alternative to this is the Hybrid IK/FK Torso, which uses a simple FK chain to deform a simple NURBS curve using a skin deformer. The NURBS curve then drives the spline IK. This method has twist controls on the first and last bones. The FK chain is parented to the body control. This method gives you the flexibility of FK with the smoothness of spline IK, but it can be tricky to setup.

Many riggers prefer to use spline IK solvers to drive the spine motions. This method includes a twist parameter for controlling the torso’s rotation. It results in a smooth flowing motion, but can sometimes have pops and snaps. To deal with the popping and snapping, you need to understand that the bone’s orientation comes from the curve tangent. The curve tangent can be controlled by grouping the last 4 CVs. Popping occurs when a curve is too short for the bone chain and snapping occurs when the curve is too tight. You can fix popping problems by extending the control curve and you can minimize snapping problems by limiting the number of CVs using the SmoothCurve operation.

The Contraposto “Isner” torso is made by grouping the hip and chest controls under the C-G node. Then build controls to deform an IK NURBS curve via skin deformers. This provides controls for action animations and movement cycles, but isn’t good for creating a whip action.

IK Controls and Legs

When dealing with IK controls, it is important to realize that “it is not just your skeleton that determines how you move.” A good example of this is a women walking in high heels. The concept of control groups defines how multiple functions are contained within a single control. “Double IK” is a control group where a second IK handle drives the extremity resulting in an automatic pointing behavior.

By grouping a pole vector (PV) with an IK effector, you can control the translation and rotation of elbow and knee joints. This is good for kneeling, crawling and actions where the knee contacts the ground, but it can be difficult for regular movements. A pole vector is really just a twist applied to an IK chain. Beware when using pole vectors that gimbal lock can happen and when the PV gets too near to the effector, the chain can jiggle. The only way to fix this is to move the PV away. A good rule of thumb is to use PV when the limb’s range of motion is more than 180 degrees and to control the exact location of middle joints such as the elbow. Twist controls are more appropriate when the range of motion is limited and when the limb is locked in place.

When working with legs, the IK setup is simple involving only a 2 link IK with the pole vector parented to the foot control. The real problem with legs are the feet pivots. A foot has multiple pivot points including one at the ankle for in-air motions, one at the metatarsals for movements about the ball of the foot and separate pivots at the heel and toe for locomotion. The ball of the foot rig is a best accomplished using an IK control group with a three link IK chain for the “shock-absorber” effect. Heel and toe rigs (often called the “reverse foot” rig) can use a control group to simulate moving pivots.

The reverse foot control group is created by connecting the heel to the ball of the foot to the IK effector. This allows the heel to have 6 DOF and the ball to only rotate. The heel is also connected to the toe controls, which allows pitch and roll only. The toe orient-constrains the skeleton toe and the ball orient-constrains the skeleton ankle.

Another way to rig the reverse foot controls is with the 4-pivot method. This method connects the heel to the ball pivot to the ball lift to the IK effector. This gives the heel 6 DOF, the ball pivot rotation in yaw only, the toe rotation only and the ball lift pitch and roll only. This creates a system with better takeoff from the toes, but is a pretty tricky system to setup resulting in many function curves.

The moral of rigging feet is that “simplicity ain’t simple.” There should be a method that gives the power of the 4-pivot method without the complexity. The solution is to create a “fake space” that gives this control. This is done using a world space foot control object with a single pivot at the ball of the foot. An elevation proxy control is parented to the foot control and allows only 1 DOF, several pivot proxies for the heel, ball, toe and ankle are parented to the elevation control, and the effector control, also parented to the elevation proxy located at the ankle. Two user parameters on the foot control drive the constraint weights between air and ground and front to rear.

Switching Systems and Arms

When considering moving between IK and FK, you need to “know what’s driving what.” In the example of a pole vaulter, is the vaulter driving the stick’s motion or is the stick driving the vaulter’s motion? When combining the motions of separate objects, you need to understand, when does this become part of the rig. This happens when both components interact, such as a person getting out of a rocking chair; when momentum is preserved, such as with the pole vault example; or when intention is preserved, as when a moving target is grabbed.

One way to handle this is with constraint switches. It is best to drive handoffs with one centralized value, not two. Always use a constraint switch formula that drives the weight of one up when the other goes down using ease curves for blending and step curves for force snaps. Constraint switching is an excellent candidate for scripting. One example of this is serial switches, where a series of targets all constrain a single proxy object such as Tarzan swinging from vine to vine. Serial switching has the drawback that all targets must be sequential. Another common switch mechanism is a scheduler. Schedulers act like a normal serial switch, but it allows a random sequence of targets. This is good for unpredictable sequences such as footsteps.

For many animation sequences, kinematics is the critical dimension. FK/IK is the critical space for limbs. It is extremely common for arms, but not so common for legs. FK/IK switching is much harder than it should be. The best way to think about it is to imagine it as 3 copies that are animated side by side including an FK copy, an IK copy and a FK blended copy. One simple alternative is to use a “dingo” setup. This setup uses 3 bones for FK, IK and the result. It is easy to debug, but an inelegant solution. Another alternative is a Pseudo FK system, which is a body space IK with an extra pivot at the hip and shoulder to twist the limbs. A third alternative is to use interval matching. This makes passing control between FK and IK easy using a native FK/IK parameter. For this to work, you need to make sure that both sets of keys match physically.

When rigging arms, you should use FK for expressions and IK for directional movements. Arm rigs are typically more complex than legs. FK arm rigs are good for performance and freedom including gestures, emoting, walking and swimming. IK arm rigs are good for power, tension and contact including punch, pull, holding a gun and jogging.

When animating hands interacting with the world, it is easiest if the hand control is a child of the world. This makes it easy to place the hand, but makes it tough to move the hand with the rest of the body. For movement in the world, it is better to parent the hand control to the center of gravity or to the ground shadow. This allows the hand to move with the body, but extra constraints are used to make the hand contact something in the world.

One of the trickiest part of the arm rig is the clavicle. Physically, the arm cannot be raised above the shoulder without the clavicle. This can be rigged using a simple FK solution, but this detaches the shoulder from the arm chain. A simple IK solution is good for representing tension, but it offers no direct control.

Another common difficulty with arms is handling weapons such as a gun. It is best to constrain the gun to the trigger hand. The support hand can then be parented to the gun. This is an easy method, but others exist. For aiming, build a pseudo-FK rig that allows rotation at the shoulder.

Coordination and Fingers

There is a benefit to using pose libraries. Poses don’t know past or future positions and can be used to organize messy systems. Poses are better than frozen transforms and are easy to reset without changing the space. When working with poses, apply the parameter values first and then the transforms. Non-Linear Editors (NLE) offer a superset of pose library benefits allowing poses to be animated into clips.

Fingers are easy to animate, but hard to manage because they consist of many small objects positioned close together. It is often easier to select fingers using a separate interface like the Outliner. Hotkeys and pickwalks are also helpful, but it is best to have a single hotkey for a single finger and other hotkeys to navigate up and down the joint and between fingers. You can also use selection proxies located at the end of each finger. Control objects can be created for fingers to animate curl, lift and spread. These don’t often address the thumb, which needs to be dealt with separately. You could also animate fingers with IK where each finger is a 3-joint chain. This works well to simulate gripping actions.

Putting it Together and Heads

Neck control choices are basically the same as those available for the torso. For heads, you can rig a world space FK head using a world space head control that the head is orient-constrained to follow. This allows the head to move independent of the body, which is both good and bad depending on your motions. One way to fix this is to parent the head control to the ground shadow control. Another alternative is to use a spline IK head where the head control is parented to the body root and a rotate-only neck control is parented to the torso. This allows the head to move using a single control, but it also allows impossible moves. A third possibility is to have the head driven solely by an aim constraint. This is good when the head needs to follow an object, but it doesn’t account for eye movement.

Conclusion

Steve concluded the session with a plea for feedback from the attendees. He encouraged all in attendance to go home and argue about this stuff with their co-workers while maintaining professionalism. He then stressed that rigging is a service business and that we should actively speak with animator to discover what works and what doesn’t. He made the statement that “Being a genius is not enough,” we need to make our rigs bulletproof. Automation is the key to quality. By learning to script, we can enforce naming conventions, use hidden attributes for markup, hide plumbing in predictable places, and plan for removal. You should always use the simplest solution that works.





 
 
Menu
 Back to GDC 2006
 See more Visual Arts Track
 Discuss this article