Get Adobe Flash player

3D Character Rigging - with 3ds MAX 4

high-lighted = 3ds MAX specific
high-lighted = object for rig

Setting up a character to walk and talk is the last stage before the process of character animation can begin. This stage is called 'Character Rigging' and is the underlying system that drives the movement of a character to bring it to life. This paper will examine several key techniques used in character rigging and provide an explanation of why these procedures are critical to good animation.

'…rigging can be one of the most complicated aspects of getting a 3D character on the screen.' (Swain 2001)

 
 

Often the most tedious task in the process of creating a character, a well-planned and executed rig can 'save you a lot of headaches during the animation of your character' (Keith 2002). Planning a rig involves knowing what is planned for the character in the animation. For example, the rig of a background character would be somewhat simpler than a main character that jumps off buildings and yells with maximum body movement and facial expression. Ultimately if the rig is not developed enough it will slow down future animation processes, and similarly you will spend unnecessary time and effort over-developing rigs for background characters. For the purpose of this paper the example rig will be in full detail.
   


Mesh Setup

Before you create your character's rig there are several steps that can be taken to simplify its creation. Make sure your character's mesh is in a specific pose to make bone placement simple and reduce the need for fine-tuning bone rotations. For example, humanoid characters should be modelled standing with the arms out stretched horizontal with the palms facing the ground, while the legs should be straight and the head level and looking forward. The model should then be set to see-through in the objects properties and then frozen. This is so you can see inside the model for bone placement and guarantee the model is not selected or accidentally moved. Also, as you create your character rig, remember to name every object.


2seethru.jpg
See-through and frozen


Bone Creation

The skeletal structure is a series of bones setup to drive the deformation of your character's mesh. Each bone has a parent that it is linked to, creating a bone hierarchy to which any mesh can be deformed. The bones are placed inside a character's mesh and closely correlate with real-world anatomy to deform the mesh in the most natural way (Keith 2002). For example, placing bones for an elbow joint would involve a bone pivot point between the upper and lower arms to simulate their respective real world bones. However, incorrectly placing bones inside a mesh can result in an unnatural deformation when animating.

   


In the example character 'Angus,' his skeletal structure has no more than 60 bones, whereas a real world character similar to Angus would have around 200. Therefore, only bones that aid in the movement of a character are necessary for this type of character rig. Furthermore, to minimise your workload, simulate the spine with 3-4 bones, rather than the 26 found in the human spine. 'Strive to maintain the fewest number of bones in your character' (Keith 2002), as the fewer bones created the less work your character rig will require to start animating.

 

Defining the centre of your character is the first thing required before bone placement. Place a point called centre control just below the navel on your character to provide a starting point to which all subsequent bones will be linked. The importance of the centre control is that it is an overall pivot point for the body, as many movements originate in this area. Once you have positioned the centre control, you can start creating several bone chains to form the skeletal structure. A bone chain is a series of bones that are created at the same time and are automatically linked to form a hierarchy. The spinal hierarchy is divided up into 6 main parts as follows:
 


Hips
Waist
Chest
Neck base
Neck
Head

 


These bones provide sufficient detail to simulate the bending and rotation of the spine. Be sure to adjust bone sizes to closely match the character's mesh. Create a bone chain starting at the hips and finishing at the head and right click to end the chain. To move individual bones click on Don't affect children in the Hierarchy panel to turn off bone's effect on its neighbours and allow precise bone placement. For the purpose of setting up an inverse kinematics (IK) solver, an extra bone is automatically created on the end of the head bone, but this can safely be deleted as this rig does not use IK for spine movement.

6resize.jpg
spine bones resized


However, the legs will use IK as it is 'one of the most efficient ways to animate a skeleton' (Busby & Bousquet 2002). Animating with IK legs is a very simple process, requiring the animator to simply manipulate the leg's goal and the IK solver calculates the rotations for the leg bones automatically. The forward kinematics (FK) method of animating would require these rotations to be done manually. To setup the legs for use with an IK solver the leg and foot bones can be simplified to the following bones:


Upper leg
(above knee)
Lower leg (below knee)
Foot
Toes (Angus is wearing socks so all the toes will be simulated with one bone)
Loose sock
Loose sock IK (used for IK solver only)

   

Choose the left or right side of the body to create both the leg and arm bones, as these bones can be mirrored to the other side once they have been positioned correctly. Starting with the upper leg bone create a bone chain (in the side view port) right through to the loose sock and right click to end the chain. This time leave the extra bone created after the loose sock bone, as the leg setup will require this to control the last bone via an IK solver.
 

Using IK to control the arms, FK will drive the hand setup. This is so that arm movements can be made with little fuss, while finger and wrist movements can be controlled with the precision of FK. The complex real world bone structure of an arm can be simplified into several bones:
   


Shoulder
(or Clavicle)
Upper arm
Lower arm
Wrist
Hand

   

From the top view-port create a chain down to the hand starting from the shoulder bone. It is important that bones are created in certain view-ports to tweak their positions easier. Ensure that Don't affect children in the Hierarchy panel is turned on. Right-click to end the chain but delete the extra bone created as the IK chain used on the arm will end with the wrist bone.
 

The finger bones should be aligned as closely as possible with real-world anatomy to provide the most natural skin creases and folds as fingers can rotate up 90 degrees for each joint. All the real world finger bones including the pinky finger's metacarpal (refered to as 'pinky cup') need to appear natural in the finger bones setup. Following are the bones required for a natural deformation:
 


Thumb base
Thumb middle
Thumb tip
Index base
Index middle
Index tip
Middle base
Middle middle
Middle tip

Ring base (Angus has no ring finger so is not shown in the example)
Ring middle
Ring tip

Pinky cup (this bone provides the slight cupping that hands are capable of)
Pinky base
Pinky middle
Pinky tip

   

If you want your character to talk, a jawbone is required to make correct mouth shapes. The jawbone should start from behind the ears and can be any length. Also if you wish to have moving ears, ear bones should be created in a logical position.
   


Setting up IK

After all the bone chains have been placed, implement the History independent IK (HI IK) solvers to drive the arms and legs. HI IK solvers are 'the preferred method for character animation' (3ds Max User…2001) as they provide a fast IK solution at any stage of an animation, unlike history dependant (HD) solvers which the take longer to calculate a solution as an animation progresses (3ds Max User…2001). It is for this reason that History independent IK solvers or HI IK solvers will be used on both the arms and legs of the example rig.

   

Rigging the legs requires several IK solvers to provide sufficient anchoring to the ground. The idea behind this IK leg is that all the IK solvers will constantly pull the foot into it its natural position. The natural position can then be changed to bend the foot and toes via an added FK system that controls the position of the IK goals. IK goals are what the IK solver uses to guide the rotations of the bones. When the IK goal is moved so do the bones.
   

The first IK solver should start from the upper leg and finish at the foot, enabling it control over the upper and lower leg bones. Creating IK solvers can be done by selecting the bone for use with the IK solver (upper leg bone), select HI solver from the Animation/IK solvers menu and then clicking the last bone where the IK solver will stop affecting (foot bone). Then from the foot bone to the toe bone, the IK solver created will have control over the foot bone (follow same procedure as above). Create another IK solver between the toes and the loose sock bones to give the toes an IK solver. Finally, create an IK solver between the loose sock bone and the loose sock IK bone. There are now 4 IK solvers controlling the rotations of the entire leg setup, yet they will not function correctly until the linking stage of rigging.
 

Continuing, the arms require an IK solver between the upper arm and wrist bone. This IK solver will provide the movement for both the upper and lower arm. Following the same procedure as in applying the leg IK solvers, make a HI IK solver for the arm.
   

Adding the Control Points


An animator uses a rig's control points to animate with. To control the movement of the IK goals, they are linked to the control points and eventually hold the controls for the FK setup to drive bones such as the fingers and spine. It is very important that your rig has a minimal set of control points, as 'good rigging is to make things as simple as possible' (Sale n.d.). As a general rule 2 control points can be used for each arm or leg, and similarly for the spine and head controls. The arms and legs have one extra control for controlling the angle at which they point.
   

For exact positioning of the points, the snap feature should be adjusted to snap to pivot points, which can be done by right-clicking on the snap button. With snap turned on, create the following points for the leg:
   


Foot control
(this point should be positioned at the ball of the foot)
Toes rotate (snap to the toes bone pivot)
Loose sock rotate (snap to the loose sock bone pivot)
Loose sock tip rotate (snap to the loose sock IK pivot)
Knee control (position directly in front of the knee but the length the leg out in front)

 

The points with 'rotate' in their names are to drive the FK setup that will bend the foot and loose sock. In the final stages of rig completion these features should be frozen to avoid accidental moving by the animator. However the knee control point is used to control the direction of the leg. By assigning the IK solver plane target on the leg's IK chain to the knee control point directly in front of the knee the animator has maximum control over leg movement.
   

The arm employs the use of only one IK solver so it only has one IK goal to control. The hand control point controls the IK goal of the upper and lower arm and also contains the controls for the entire hand FK setup. Similar to the leg setup, the arm requires an elbow control point to provide maximum control over the arm's movement. The following points should be created:
 


Hand control
(snap to the wrist bone pivot)
Elbow control (position directly behind the elbow but the length of the arm away)

   

The head control point will be responsible for opening the jaw, bending the neck, tilting and turning the head or anything bone related in that area. FK drives their rotations. A point should be created at the neck bone's pivot called:
   


Head control

   

The eyes need to have a control point to look at. When animating this point can be placed on an object and the eyes will rotate to look at it. Create the following point to provide eye movement:
 


Eyes target
(position this point in front of the eyes about a metre away from the head)

   

Once all the control points have been created and positioned, customise their size and colour to suit. The final preparation for the control points before the linking stage is to align all their pivot points to the world. Select all the points in your scene, navigate to the hierarchy panel, select affect pivot only and then click align to world. This will guarantee that all their local axes have the same meaning when animating. For example, if you were lifting the arm up and down using the z-axis and the legs were using the y-axis, this would become very confusing to animator, so it is overcome by having all their axes aligned to each other.
   

Linking


With all the control points, bones and IK solvers in place you now have the required elements to start linking the rig together. Linking is a simple process, but it must be done precisely. Incorrectly linking bones and points can cause unpredictable results and can be difficult to correct if not realised immediately. Much of the linking is done when bone chains are created, but further linkage is required to complete the skeletal structure.
   

To link an object to another object select the object you wish to be the child (object controlled by another), click the link button and select the desired parent (object to control the child). Select the following bones and use the linking process to link them to the centre control:
 


Upper leg
Hips

   

When you move the centre control point both the leg and spine will follow (notice how the IK leg is bending). It is important to test a new link's effect on the rig as you progress and then undo any movements made to ensure that it was linked correctly. Here is a full list of bones that that need to be linked to complete the skeletal structure:
 


Upper leg
> Centre control
Hips
> Centre control
Shoulder
> Neck base
Jaw
> Head
Bottom teeth
> Jaw
Top teeth
> Head
Ears
> Head
Eyes
> Head
Thumb base
> Hand
Index base
> Hand
Middle base
> Hand
Ring base
> Hand
Pinky cup
> Hand

   

Move the centre control and observe that all the bones move and the hands and feet will try to stay in the same position. This effect is due to the IK solvers calculating logical rotations in response to the movement of the centre control. Before the arms and legs can be easily moved the IK goals need to be linked to their respective control points which can be done with the following links:
 


Leg IK goal
> Foot control
Foot IK goal
> Toes rotate
Toes IK goal
> Loose sock rotate
Loose sock goal
> Loose sock tip rotate
Arm IK goal
> Hand control

   

The appropriate linkage of the control points in the leg setup mean the entire leg can be controlled via a single point. The following links provide the foot control with power over the entire leg:
   


Loose sock tip rotate
> Loose sock rotate
Loose sock rotate
> Toes rotate
Toes rotate
> Foot control
Knee control
> Foot control

   

Move the foot control up and down and if the objects were correctly linked the entire leg will move and the foot will stay horizontal. This is because the IK goals that control the bone rotations are now linked through a series of other links to the foot control so when the foot control moves so do the IK goals.
 

To make the eyes constantly look at the eye target, navigate to the motion panel and assign a LookAt constraint to the rotation component under Assign controller. After the eyes target is picked as the LookAt target the eye suddenly jumps to align itself to look at the eyes target. Repeat this procedure for the remaining eye and test the setup by moving the eye target.
 

Finally, to control the angle at which the arms and legs point the IK solver plane targets need to be linked to their control points. Select the IK solver for the leg and navigate to the motion panel and click the pick target option in the IK solver plane group, then click the knee control. Do the same for the arm IK solver but this time select the elbow control. Test the IK solver plane targets move the Knee or Elbow controls, which should result in the leg or arm rotating to point at the controller.
 

Setting up FK


With all the IK solvers in place and their goals linked to their respective control points, the IK solvers now have full control of the arm and leg bones. The combination of an FK setup will now breathe life into the hands, spine and head. While you can certainly animate by manually rotating these features not controlled by the IK solvers, there are ways of streamlining the FK process. By combining the rotations of several bones into one ease-to-use spinner, you can at least halve the time spent on defining bone positions. For example, rotating the spine may involve hand rotating as many as 5 bones, yet if these rotations were driven by a single property defined by the user they could all rotate as one. Also, another benefit of this FK setup is that bone rotations can be limited, so you will never have to worry about posing an unnatural pose.
   

The process involved in driving bone rotations is based on using Custom attributes on the several control points that have already been created. A custom attribute can be added to any existing object as an extra feature but is useless until its function is defined. The custom attributes in this case drive bone rotations and are added to the control points for convenience. To create a custom attribute, select the object you wish to add to, and from the animation menu select Add custom attribute. A window prompts you for various characteristics of your custom attribute, but for this entire rig there will be only one kind and that is a Float with a UI type Spinner. These custom attributes give the option to define a number range to which the custom attribute will be restricted. When setup to react to the custom attribute, increasing or decreasing the number within the set range can rotate a bone or other transformation. Select the centre control and apply custom attributes with the following criteria:
 
Bend back
Range: -10 >10
Default: 0

Lean sideways
Range: -10 >10
Default: 0

Twist back
Range: -10 >10
Default: 0
   

Movements that are specific to the spine area should be added to the centre control. Logical placement of custom attributes on control points is important to avoid confusion for the animator. For example, if the custom attributes for the foot were added to the hand controls there would be a considerable amount of time wasted looking for the appropriate foot control. Select the foot control and add the following custom attributes:
   
Bend foot
Range: -10 >10
Default: 0

Bend loose sock
Range: -10 >10
Default: 0

 
   

The default value of 0 on each custom attribute is so when the bone rotations are setup to react to them their natural position can be set to 0. Continuing, add the following custom attributes to the head control:
   
Bend neck
Range: -10 >10
Default: 0
Turn head
Range: -10 >10
Default: 0
Right ear
Range: -10 >10
Default: 0
Nod head
Range: -10 >10
Default: 0
Open jaw
Range: 0 >10
Default: 0
 
Tilt head
Range: -10 >10
Default: 0
Left ear
Range: -10 >10
Default: 0
 
   

Select the hand control and add the following custom attributes:
   
Index knuckle
Range: -10 >10
Default: 0
Ring middle
Range: 0 >10
Default: 0
Thumb middle
Range: 0 >10
Default: 0
Index middle
Range: -10 >10
Default: 0
Ring tip
Range: 0 >10
Default: 0
Thumb tip
Range: -1 >10
Default: 0
Index tip
Range: -10 >10
Default: 0
Pinky cup
Range: 0 >10
Default: 0
Thumb up and down
Range: -10 >10
Default: 0
Middle knuckle
Range: -10 >10
Default: 0
Pinky knuckle
Range: -1 >10
Default: 0
Wrist up and down
Range: -10 >10
Default: 0
Middle middle
Range: -10 >10
Default: 0
Pinky middle
Range: 0 >10
Default: 0
Wrist side to side
Range: -10 >10
Default: 0
Middle tip
Range: 0 >10
Default: 0
Pinky tip
Range: 0 >10
Default: 0
Wrist rotation
Range: -10 >10
Default: 0
Ring knuckle
Range: -1 >10
Default: 0
Thumb base
Range: 0 >10
Default: 0
Finger spread
Range: -10 >10
Default: 0
 

To connect all of the custom attributes to the relevant bone rotations use a float reactor. A float reactor can define how much a property reacts to the changing of another property. In this rig's case, the properties involved in these reactions will be a rotation axis of a bone and its custom attribute held by a control point. Starting with the spine, to make the first connection to the bend back custom attribute there are several steps involved.
   

Select the hip bone and navigate to the motion panel. Assign a rotation list controller to the rotation transform and then a Euler XYZ controller to the available controller created by the rotation list. Euler XYZ controllers split up the XYZ axes so they can be accessed individually by the float reactors. Convert the Z rotation to a float reactor. Click the React to: button and select the centre control point, then navigate to the bend back custom attribute in the displayed menu. The Z rotation of the hips bone is now reacting to the bend back custom attribute. However, the bone's reaction has not been established. Leave the Reactor Parameters window displayed and select the centre control. The maximum value of 10 in the bend back custom attribute should correlate with maximum bend back position of your character. Set the bend back custom attribute to 10 and click create reaction in the Reactor Parameters window. Adjusting the state spinner you can visually witness the result of the bone's reaction. Once you are satisfied with the reaction, the maximum reaction in the opposite direction must be set. Select the centre control and change the bend back custom attribute to -10, noticing that the bone snaps back into its natural position as the reactor float does not know how to react at -10. Click create reaction in the Reactor Parameters window and adjust the state spinner to set the maximum bent backward position. Close the Reactor Parameters window and operate the bend back custom attribute to see that the hips bone's Z rotation is now controlled by the bend back custom attribute.

However, the hip bone is not the only bone involved in bending your characters back. Both the waist and chest bones require slight rotation when bending the back. These bones can also be setup to react to the bend back custom attribute and achieved by following the same procedure as the hips bone.
   

For the rest of the FK setup follow the same procedure with each custom attribute and bone rotation. Make sure that each bone limit is set to the maximum rotation of a real world bone. Eventually you will have all the float reactors setup and can operate all the custom attributes to drive the bone rotations. However, the foot operations are not controlled by simple bone manipulation, but are controlled via IK solvers linked to points. To drive these points the procedure is the same as for the bones.
 

Mirroring the rig


The entire rig now has both the IK solvers and FK setups to operate all the bones, but there is only one arm and one leg present. The reason only half the rig is setup until this stage is to save time. It takes several hours to reach this stage yet only a matter of minutes to mirror the arm and leg to the other side to complete the bone setup. To mirror the rig, select the leg and arm setups (including the IK solvers and control points) and click the mirror selected objects from the main tool bar. Make sure the clone selection is set to copy and adjust the offset spinner to match the arm and leg with other side of the character's mesh.
   

Once the arm and leg have been mirrored, the float reactors need to be re-directed to point to the controller points on the opposite side. The reason for this becomes apparent when using the original controller point, as both sides of the body will react to the same controller point. To rectify this problem, simply access the float reactors of the mirrored side and adjust their reaction to point to the correct controller point.
   

Skinning


You now have a complete skeletal rig with both IK and FK ability. However, it is not attached to your character's mesh. The process of attaching a mesh to a bone structure is called skinning and is applied with the use of the skin modifier. The skin modifier attaches the vertices to the bones and therefore assigns control to the bones. Once a mesh is skinned its initial position should never be moved and the mesh should only be manipulated through the bone structure. If the mesh is moved via the move tool, the vertices will be unaligned with the bones and cause confusion to the animator.
   

Unfreeze
your character's mesh and start skinning your character by applying a skin modifier to it. Click the add bone button and select all the bones except for the Loose sock IK bones. These 2 bones are for IK purposes only and are not required for the skinning process. After applying the skin modifier and assigning the required bones, each bone has an envelope for vertex control. Vertices within these envelopes move with the bones and where envelopes overlap, vertex motion is a blend between the envelopes.
   

Adjust all of the bone's envelopes to fit your character's mesh. Using the weight properties feature select vertices which fall outside the grasp of an envelope and increase their Abs. effect to assign control to a bone. To test if all vertices have been assigned a bone, go to frame 20 and turn on animate. Move the centre control a distance to which all bones move significantly. Turn off animate and play from frame 0, any vertices that have not been assigned to a bone will remain stationary. Unclaimed vertices can be assigned to a bone using the Abs. effect feature of the skin modifier.

The arm area is of particular importance when skinning. Knowing what bones to assign control over vertices is only apparent when their specific rotations are known. For example, the wrist bone will only provide rotation for the forearm to simulate the natural action of the Ulna and Radius bones. Other movements, such as up and down and side to side are results of the hand bone rotating. The reason being that when you rotate your wrist the movement is felt all the way up to the elbow and if the hand were to provide this rotation the skin would only deform as far as the wrist. To counteract this the wrist bone is skinned with a gradual influence fall-off towards the elbow, providing the required forearm movement.
 

To provide natural mesh deformation, it is important to study real world humans or animals to realistic simulation via the skin modifier. For example, skinning the jaw bone requires a gradual influence fall off right back to the ears and has slight influence over the upper lip as the jaw opens. Adding these features can bee seen visually with the skin modifier's colour coding. Vertices with no influence by a bone are blue while vertices that are 100 percent influenced are red. To further assist the skinning process, animate the jaw bone over time to see the result of the vertex assignment while skinning. By adjusting the time after each change the result can be viewed for errors.

Test the skin deformations by posing the rig in poses you expect to animate with. For example, if you plan to have a character crouch, this is an extreme pose and should be tested before the final animation begins. If there are any unnatural deformations they can be corrected and 'if you're diligent and test every conceivable body position, you should have a rock-solid character' (Maestri 1996)
   

Morphing


The skin modifier has attached the entire mesh to the bone structure, but the character is still expressionless. Morphing, the last stage of character rigging, enables your character to talk by simulating muscle movement of the face. A morpher modifier changes the shape of one mesh into another, provided that the target mesh has the same vertex count as the original. By creating duplicates of the original mesh and deforming it into specific facial expressions they can then be used in conjunction with the original mesh in the form of morph targets.
   

Make a duplicate of your character's mesh and move it away from the original. Add a morph modifier to the original mesh and then drag the modifier below the skin modifier. To avoid the morph modifier counteracting the skin modifier's deformations, the morph modifier must be calculated first by placement before the skin modifier. Select the duplicate mesh and duplicate it again. Call it left eyebrow up and then using your favourite modelling techniques adjust the left eyebrow to an upward position. Then click on the original mesh and navigate to the morpher modifier. Right-click on the first channel and click pick from scene. Select the left eyebrow up mesh and view the result by adjusting the channel's value. Using the same technique create the following morph targets to create a library of facial movements:
   

Left eyebrow up
Right eyebrow up
Left eyebrow down
Right eyebrow down
Left eyebrow sorrow
Right eyebrow sorrow
Left wink
Right wink
Left squint
Right squint
Mouth grin

Mouth smile

Mouth frown
Mouth sneer
Mouth bare teeth
Phoneme A
Phoneme UI
Phoneme E
Phoneme O
Phoneme CKG
Phoneme FV
Phoneme MBP
Phoneme NLDT
Phoneme W OO
phonemesA.jpg
phonemeA
phonemesUI.jpg
phonemeUI
phonemesE.jpg
phonemeE
phonemesE.jpg
phonemeO
phonemesCKG.jpg
phonemeCKG
phonemesFV.jpg
phonemeFV
phonemesMBP.jpg
phonemeMBP
phonemesNLDT.jpg
phonemeNLDT
phonemesW.jpg
phonemeW OO
Shown are the 9 basic phoneme targets. Together they should provide enough detail to create the illusion of speech.
 

With these 24 morph targets it is possible to create hundreds of facial expressions and also lip-sync with the 9 basic phonemes. Of course there are many other possible morph targets that could be created. These basic morph targets should be customised to suit each character and certainly elaborated on for maximum effect.
   

Final Setup


But before you start animating you should hide and freeze several objects to ensure they are not moved accidentally. Select the following objects and hide them:
   


All of the bones
All of the IK solvers

   

Select the following objects and freeze them:
   


Character mesh
Both of the eyes

   

Your character rig is now complete.
 

The techniques presented in this paper provide the basis for any character's rig. Different techniques can certainly be added or removed from this very basic rig. There are hundreds of possible techniques and combinations used to create character rigs, each which have their advantages and disadvantages. The end result of any character rig should always be simple to use and not limit the animator in any way.