Now that the model is ready, it's time to start rigging. We will be building the left half of the skeleton first. The Knee is bent just a little so that the IK Handle control, that we add later, will know which way to bend (when we create the IK Handle later on).
Settings for Joint Tool.
To begin creating joints, make sure the menus are set for , then open up Skeleton > Joint Tool .... For Degrees of Freedom, leave to Default settings (we'll change these later for specific joints) and keep Auto Joint Orient set to xyz (the convention we will follow for this rig).
When I model my characters, I set them up to initially have slightly bent legs and arms.
Make the skeleton for the leg starting in the side view. If you make the skeleton in this view, it will ensure that the entire skeleton for the leg is in the same plane (which also helps the IK Handle know which way to bend). Never create joints in the persp view! Start from the hip and keep creating joints down to the toes as shown.
When you are done creating the leg skeleton in the side view, go to the front view and move the hip joint so that it is centered in the left leg. (Make sure you are following the joint naming convention as you go... the names are displayed in the images below).
*make sure that you snap the joint to the center of the sphere in the X, Y, & Z axis.
Naming the joints:
Use the Move Tool in Local mode to move knee_R. Click and drag the X axis on the move manipulator until knee_R is once again aligned with the leg. Do the same to ankle_R. Use insert key to snap joints to correct locations.
Now we have to setup the joint orientation. When joints are created, each parent joint points towards its child with one of its rotation axes. In other words, each child joint lies along one of the rotation axes of its parent joint. This is a good property to keep in a rig. Based on the Joint Tool settings we used for this rig, each child joint lies along the X rotation axis of its parent joint. Moving a child joint along the X axis in Local mode keeps this property in the rig.
To manually orient a joint’s local axes, we first need to display the joints current axes. To make the Local Rotation Axes visible, toggle Display > Transform Display > Local Rotation Axes, switch to component mode and then activate Miscellaneous components.
So the question is, what is the correct orientation of the the joints?
First lets freeze the joint rotation. To freeze the rotation of an object, open up Modify > Freeze Transformation ... and leave only Rotate checked. Select the object whose rotation you want frozen and click Apply. This sets the rotation of the object to zero. For joints, it also keeps its local axes oriented in the same direction.
In this case we want the X handle to point to through to the next joint. The Z handle should be perpendicular to the movement of the joint. Think of it as the pin to a hinge.
In some joints, you will want to limit the rotation to just one axis, like setting the RightLeg (knee) to only rotate about their Z rotation axis. In the attribute editor, uncheck the Degrees of Freedom for both the X & Y. This will lock the Rotate X & Y Attribute.
Repeat for the RightBall.
Try rotating kneeL and ballL to see the effects of limiting their rotation (remember to undo).
Arm Joints
Use the Joint Tool to create the arm joints by clicking at these places in the top view:
In the front view, notice how the arm joints you just created are sitting on the XZ plane. As we did for the leg joints and the left leg, we want to align the arm joints with the left arm.
After having moved the clavicleL, rotated it, and aligned the other joints to the arm.
Move clavicleL up until the arm joints are at the same level as the left arm. Starting from clavicleL, rotate each joint so that the next joint is aligned with the corresponding place on the arm. It is better in this case to rotate the arm joints using the Rotate Tool in Local mode. Rotating these joints in Local mode seem to keep the Z axis of elbowL more perpendicular to the arm than rotating them in Global mode.
As we did for kneeL, limit elbowL to only rotate about its Z rotation axis.
At this point, the rig has joints that are aligned with the limbs on the left side of the character. We want to mirror these to create joints for the limbs on the right side.
Tip:
Options for Mirror Joint.
To mirror joints, open up Skeleton > Mirror Joint .... Set Mirror Across to be the plane of symmetry for your character and keep Mirror Function set to Behavior. Mirror Joint can also give sensible names to the joints that it creates. For the joints we're mirroring, set Search for to L and Replace with to R. Select the highest joint of the joint heirarchy that you want mirrored, then click Apply. You may discover that the mirror tool can mirror only one joint heirarchy each time it is applied.
After mirroring hipL and clavicleL.
Mirror the joint chains rooted at hipL and clavicleL over the YZ plane. (This is why we checked for the model being centered over the axes!) Have it replace any L's in the names with R's.
At this point, the rig has joints that are aligned with all the limbs of the character.
Backbone joints created on grid, then aligned to spine.
Create backbone joints on one of the gridlines. Creating joints in a straight line is one way of making sure that they are oriented in the same direction. Start at the same level as the base of the backbone then stop near the arm level. For this rig, three or four joints would do.
Tip:
To create joints on a gridline, turn on "Snap to grids" before creating joints (either by toggling or by holding down the x key).
Starting from the joint at the base of the backbone, name the joints something like spine1, spine2, and so on. As done with the arm joints, move spine1 into place then, starting with spine1, rotate each joint so that the next joint is aligned with the backbone. If you need to move the spine joints along the way, use the X axis on the move manipulator in Local mode.
More Rigging:
For a more complicated backbone with many joints, this way of making sure that joints orient in the same direction can be tedious. An alternative is to create the joints in the shape of the backbone then edit their Joint Orient attributes. But editing Joint Orient can be tedious as well. Fortunately, there are tools for re-orienting many joints at once. See the tutorial on orienting joints.
The head and neck joints can be created in the same way as the joints for the backbone. Since this character has no jaws or other head parts, no joints are necessary between the bottom and top of the head.
Name these joints neck1, neck2, neck3, and head_end.
At this point, the rig has joints that are aligned with the legs, the arms, the backbone, and the head/neck. In the next section, we'll connect them together into one heirarchy of joints.
Create a joint named pelvis slightly below spine1. This joint allows for movement in the hips of the character.
Apply Connect Joint to parent hipL and hipR under pelvis.
Tip:
To use Connect Joint to parent a joint under another joint, open up Skeleton > Connect Joint ..., set Mode to Parent Joint, select the child joint followed by the parent joint that you want, then click Apply.
Create a separate joint named root. This joint will be at the root of the joint heirarchy, allowing the pelvis and the torso in this rig to be animated independently.
Apply Connect Joint to parent pelvis and spine1 under root.
Less Rigging:
A simpler way to set up joints for a character is to position pelvis between the hip joints and make it the root of the joint heirarchy. This would limit the torso to follow the hips when animated.
Finally, use Connect Joint again to parent clavicleL, clavicleR, and neck1 under the last spine joint. This makes the shoulders and neck move with the top end of the spine.
More Rigging:
Another way to connect separate heirarchies of joints is to use a combination of Group and Parent.
You've finished creating the joints in this rig. For all except the simplest of characters, directly using joints to animate can be difficult. In the following sections, we'll add functionality to the rig to make the character easier to animate.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
As mentioned earlier, IK in Maya is specified by creating IK handles. To begin creating IK handles, open up Skeleton > IK Handle Tool .... The IK Handle Tool expects you to pick two joints that lie on the same chain of joints: a higher one (the start joint) followed by a lower one (the end joint). The joints between these two joints in the heirarchy will be controlled via IK.
Use the IK Handle Tool to create a rotation plane IK handle by picking RightUpLeg and RightFoot.
*When creating the IK handle, pay close attention to the joints to see if they pop out of place. If the leg joints pop out of place, it probably means that the RightLeg joint was rotated after it was created. To fix this, first undo the creation of the IK handle, then freeze kneeL's rotation.
Name the IK handle RightLeg_ik. Try moving RightLeg_ik to see how it affects the leg (remember to undo).
Create rotation plane IK handles from hipR to ankleR, from shoulderL to wristL, and from shoulderR to wristR. As we did when creating legL_ik, you may have to freeze the rotation of the knee and elbow joints before creating the IK handles.
Name these IK handles something like legR_ik, armL_ik, and armR_ik.
Tip:
Mirroring joints affected by IK also creates a new IK handle in the process.
Unlike IK for the arms and legs, we won't need additional controls for the twist rotation of the hands and feet. When creating IK handles for the hands and feet, single chain IK handles will do. To create single chain IK handles, set Current Solver to ikSCsolver.
Use the IK Handle Tool to create single chain IK handles from each ankle joint and to its "ball of the foot" joint, and from each wrist joint to its "end of the palm" joint.
Name these IK handles something like RightFoot_ik and RightHand_ik, and so on. Try moving and rotating these IK handles (remember to undo). The hands and feet should rotate towards the IK handles.
You've finished specifying the joints in this rig that are controlled via IK. IK makes animation easier in many cases, but IK handles provide only some of the controls we want for the character. In the next section, we'll set up all the controls of the rig.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
As we set up the controls, it will be easier to see how they work if the joints had more shape to them. With this in mind, parent each piece of geometry to a corresponding joint in the rig.
Tip:
A quick way to parent multiple objects under a single parent is to select all the children objects first, select the parent object last, then apply Modify > Parent (or press the p key).
When setting up controls in general, have an idea of the controls that an animator would need for animating the various parts of the character (according to what's required by the desired motion). This may come easier with experience using controls for an existing character. We have tried the controls in the sample rig, but our character doesn't have specific requirements in terms of motion. So let's just start with a given set of controls and go from there. Keep in mind that rigging a character for particular animation may take some planning.
Import basic_character_cons.mb, which contains a set of NURBS spline objects that will serve as the controls (or cons) of this rig. NURBS spline objects work well as cons because they aren't renderable.
A finer but equally important part of setting up controls is the positioning the cons. While we set up the cons for each part of the character, we'll be positioning them accordingly.
The legs are controlled using the foot cons and the knee cons.
Position both the foot cons at the character's heels. Rotate them out towards the same direction as the character's feet. This makes it easier to animate the heels in a walk cycle.
Apply Parent Constraint to constrain legL_ik and footL_ik to footL_con. This acheives the same affect as parenting the IK handles under the con, but it doesn't actually change the heirarchy.
Tip:
To apply Parent Constraint, select the target object (footL_con) followed by an object to constrain (legL_ik or footL_ik) then apply Constrain > Parent.
Tip:
When applying any type of constraint, make sure that the target object (usually a con) is selected first, followed by the object to constrain (usually a joint or an IK handle). In addition, only one object can be constrained each time a constraint is applied. Note how applying constraints differs from applying Modify > Parent. For constraints,
Tip:
After applying a constraint, check whether a constraint node was created as the child of the object you wanted to constrain. It should be named something like objectToConstrain_constraintType. In addition, the translate and/or rotate channels of the object to constrain should be highlighted in the Channel Box. The target object, however, should remain unchanged.
Try moving footL_con to see how it affects the leg (remember to undo). Notice how the left foot moves and rotates with the control, stretching/compressing the leg.
Apply Parent Constraint again to constrain legR_ik and footR_ik to footR_con.
Place both the knee cons in front of the knee joints. One way to do this is to first move each knee con onto the pivot point of the corresponding knee joint then move the knee cons forward.
Tip:
To move an object onto the pivot point of another object, turn on "Snap to points" before using the Move Tool (either by toggling or by holding down the v key).
Apply Pole Vector Constraint to constrain legL_ik to kneeL_con.
Tip:
To apply Pole Vector Constraint, select the target object (kneeL_con) followed by a rotation plane IK handle to constrain (legL_ik) then apply Constrain > Pole Vector.
Try moving kneeL_con to see how it affects the leg (remember to undo). Notice how the left knee points towards the control. Technically, the control determines the pole vector of the rotation plane IK handle, which in turn determines the orientation of the rotation plane—an imaginary plane that goes through hipL, kneeL, and ankleL.
Apply Pole Vector Constraint again to constrain legR_ik to kneeR_con.
Try rotating the foot cons again (remember to undo). Notice how the knees stay stationary. For some animation, it may be easier for the knees to follow the feet. This is the case for the sample rig.
Assuming that's what the animation needs, parent the knee cons under their corresponding foot cons.
More Rigging:
The leg controls in this rig make it easy to roll the foot about the heel, but what about rolling them about the ball of the foot? See the reverse foot tutorial.
Align both the hand cons with character's wrist joints.
As we did for the legs, apply Parent Constraint to constrain each arm and hand IK handle to the corresponding hand con.
Position both the elbow cons behind the elbow joints.
As we did for the legs, apply Pole Vector Constraint to constrain each arm IK handle to the corresponding elbow con.
Try rotating the hand cons (remember to undo). Notice how the elbows stay stationary. As it is with the knees and feet, for some animation, it may be easier for the elbows to follow the hands. For others, it may be easier for hands and elbows to be animated independently, freeing animators from having to counter-animate the elbows. This is the case in the sample rig.
Besides the elbow/knee difference, the arm controls in this rig are virtually identical to the leg controls. In other rigs, this may not be the case. A single character may require a different controls depending on the shot and the actions/acts that the character has to perform. Let's use the arm controls as an example. Animation with hand interaction may require IK-controlled hands. For animation without hand interaction, the hands (or even entire arms) may be animated via set-driven-keys (see the sections on Torso Control and Neck Control).
More Rigging:
Some models may require rigs that are more anatomically correct than this one. For a more realistic setup of the arm, see the advanced forearm tutorial.
More Rigging:
In a rig with IK-controlled hands, the hand cons require a wide range of rotation in all directions. Because of how rotation works in math, there are limitations on how far objects can rotate in certain directions. Although these limitations affect the hand cons the most, they also apply to all the other controls. To reduce these limitations, see the gimble lock tutorial.
Position root_con at the character's center of gravity (this may or may not be at the root joint).
Apply Parent Constraint to constrain the root joint to root_con.
Position hip_con somewhere behind the pelvis joint. Since hip_con is purely a rotate control, its position is less a matter of function and more a matter of being easy to select.
Apply Orient Constraint to constrain the pelvis joint to hip_con.
Tip:
To apply Orient Constraint, select the target object (hip_con) followed by an object to constrain (the pelvis joint) then apply Constrain > Orient.
Try rotating root_con (remember to undo). Notice how the pelvis stay stationary. Since the pelvis does generally move with the body, it may make animation easier if root_con did affect the pelvis.
Parent hip_con under root_con.
Position torso_con somewhere behind the spine1 joint. Like hip_con, torso_con is also a rotate control whose position doesn't affect the character.
With Maintain Offset checked, apply Orient Constraint, to constrain the spine1 joint to torso_con. We keep Maintain Offset checked because, while the pelvis joint and hip_con are oriented the same, the spine1 joint and torso_con are oriented differently.
As we did for hip_con, parent torso_con under root_con.
The torso has many more joints than the pelvis, requiring additional controls. While adding more cons would solve this, having one con for each joint defeats the purpose of setting up controls. One alternative is to let a con's attributes drive the rotation of multiple joints.
To set up torso_con to drive the spine joints, do the following:
Tip:
To freely adjust an attribute on an object, select that object, select the name of that attribute in the Channel Box, hold down the middle mouse button in one of the views, then drag left or right.
Follow the same steps above to add attributes named bendSideToSide (which should drive the joints' rotateY) and twist (which should drive the joints' rotateX).
More Rigging:
The FK controlled torso works for most animation. For an alternate way to control the torso, see the advanced back tutorial.
Position shoulderL_con and shoulderR_con at the shoulder joints.
One way to set up shoulder controls is to create single chain IK handles from each clavicle joint to its shoulder joint, then apply Parent Constraint to constrain each IK handle to the corresponding shoulder con. This allows the shoulder cons' placement to determine the rotation of the clavicle joints, which in turn determines the position of the shoulder joints.
Yet another way to set up shoulder controls is to apply Aim Constraint to keep the clavicle joints aimed at the cons. To do this, we only need to constrain two of their axes. With Aim Vector set to point down the clavicle joints, World Up Type set to None, and two of the axes checked as the Constraint Axes, apply Aim Constraint to constrain each clavicle joint to a shoulder con. Given the way we have set up the joints, Aim Vector would be (1, 0, 0) for clavicleL and (-1, 0, 0) for clavicleR, and the Constraint Axes would be the Y and Z axes.
Tip:
To apply Aim Constraint, open up Constrain > Aim ... and set Aim Vector, World Up Type, and Constraint Axes appropriately. Select the target object (shoulderL_con) followed by an object to constrain (clavicleL) then click Apply.
Try rotating or bending the torso again (remember to undo). Whichever way you set up the shoulder controls, notice how the shoulder cons don't follow the torso.
One way to fix this would be to parent the shoulder cons under the last spine joint. However, the shoulder cons would be difficult to find in the heirarchy if they are hidden under several levels of joints.
Another way to fix this would be to group the shoulder cons together, then apply Parent Constraint to constrain that group to the last spine joint. The constraint allows the torso to affect the shoulder cons, while the group allows the shoulder cons to be animated separately.
More Rigging:
We've set up the shoulders so that each is controlled by one con. For shoulders that can also be controlled from the arm controls, see the advanced shoulder tutorial.
Position neck_con somewhere behind the neck. Like hip_con and torso_con, neck_con is also a rotate control whose position doesn't affect the character.
Compared to the torso, the neck has a smaller range of motion. While the torso has both an overall rotation and bend/twist attributes, it's probably enough that the neck has only the bend/twist attributes. We can use the rotate attributes on neck_con to drive the rotation of the neck and head joints.
With the neck joints selected, open up the Set Driven Key options window. Make sure that neck_con as the driver and neck1, neck2, and neck3 are loaded the driven.
With neck_con's rotateX attribute selected in the Driver panel and the neck joints' rotateZ attribute in the Driven panel, set a driven-key. Do the same with neck_con's rotateZ driving the neck joints' rotateY, and neck_con's rotateY driving the neck joints' rotateX. This sets driven-keys for the neutral rotation of the neck joints.
Beside for rotating the driver/driven objects and using the Set Driven Key options window, you can also set driven-keys in the Graph Editor (provide that some driven-keys have been set for the driven attributes).
Open the Graph Editor with the neck joints selected. In the Graph Editor's outline area, select the RotateZ curves. Notice that in the graph area, all three driven-keys are on the vertical axis. This means that they were set when the driver attribute (neck_con.rotateX) had a value of 0.
For all of the neck joints' RotateZ curves, use the Add Keys Tool to add driven-keys at around (-360, -120) and (360, 120). This sets driven-keys at the extreme rotations of the neck joints. These keys form approximately linear curves describing neck joints' rotation in terms of neck_con's rotation. Specifically, for every degree that neck_con rotates in rotateX, each of the three neck joints should rotate about a third of a degree in their rotateZ.
Try rotating neck_con around its X axis. Notice how head_end rotates as if it follows the rotation of neck_con.
Tip:
To add driven-keys (or any type of keys) to curve(s) in the graph editor, select the corresponding attribute(s) in the outline area, select the curve(s) in the graph area by clicking/dragging with the left mouse button, turn on the Add Keys Tool by clicking , then middle mouse click in the graph area where you want the keys to be added.
Use the Add Keys Tool again to add driven-keys for the neck joints' RotateX and RotateY curves.
Technically, any set of evenly sloped curves would enable the neck_con to drive the neck joints. In general, however, the curves should cover a wide enough range of values (in the vertical dimension) so that the character can have a flexible range of motion. According to this range of values, the curves should cover an appropriate domain of values (in the horizontal dimension) so that the controls do something intuitive when used.
Tip:
If you need the driven-keys for the neutral rotation to all share the same value (to line up vertically in the Graph Editor), freeze the rotation of the joints before setting the driven-keys.
Try rotating or bending the torso again (remember to undo). Like how the shoulder cons were initially, neck_con doesn't follow the torso. However, unlike the shoulder cons, neck_con is not a translate control but a rotate control whose position doesn't affect the character. Moreover, the neck joints remain neutral even though neck_con doesn't follow the torso.
Nevertheless, you may find neck_con easier to select and more intuitive to use if it did follow the torso. If this is the case, parent neck_con under the group of shoulder controls.
Position top_con somewhere over the character.
Parent all the parent-less cons under top_con.
You've finished setting up the controls of this rig. Besides for providing animators with a way to animate the character after rigging, having working controls during rigging can help rigging artists check the deformation of their model during the skin-binding step. However, since the model in this rig is composed of nondeformable parts, it will not require skin-binding.
More Rigging:
For a character model with deformable parts, see the skin-binding tutorial.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
Do this by selecting top_con and freezing only its translation. The first response you'll get from Maya is that you can't freeze the translation of the shoulder cons group.
Delete the parent constraint that constrains the shoulder cons group to the last spine joint. Freeze top_con's translation, then reapply Parent Constraint to constrain the shoulder cons group to the last spine joint.
Caution:
Don't undo the deletion of a constraint. If you're curious about what would happen, save your work before you try it.
Try selecting some of the cons. Notice how their translate attributes are all set to 0. To bring a character back to its original pose, simply set the cons' translate attributes to 0.
Tip:
To set multiple attributes of several objects at the same time, select those objects, click and drag over the attribute names in the Channel Box, then type in a value for those attributes.
Notice how the rotate attributes of the hand and foot cons are not 0. You may try freezing their rotation, but you'll find that it causes the hand and foot IK handles to pop out of place. If you absolutely must freeze the rotation of the hand and foot cons, delete those parent constraints then reapply them after freezing.
Controls like root_con are difficult to select. How can they be placed further away from the model while having their pivots remain where they are? One way to do this is to move the NURBS splines that form the shape of the cons.
Go to Control Vertex Mode either by using the right click/drag menu on root_con or by clicking the Select by component type: Points buttons ( : ). In one of the views, select all the control vertices of root_con then move them towards the front of the character.
You've finished rigging a character. Congratulations! You should be proud of yourself!
Creating Joints
The first step is creating the joints in the rig.Settings for Joint Tool.
To begin creating joints, make sure the menus are set for , then open up Skeleton > Joint Tool .... For Degrees of Freedom, leave to Default settings (we'll change these later for specific joints) and keep Auto Joint Orient set to xyz (the convention we will follow for this rig).
When I model my characters, I set them up to initially have slightly bent legs and arms.
Make the skeleton for the leg starting in the side view. If you make the skeleton in this view, it will ensure that the entire skeleton for the leg is in the same plane (which also helps the IK Handle know which way to bend). Never create joints in the persp view! Start from the hip and keep creating joints down to the toes as shown.
When you are done creating the leg skeleton in the side view, go to the front view and move the hip joint so that it is centered in the left leg. (Make sure you are following the joint naming convention as you go... the names are displayed in the images below).
Leg Joints
*make sure that you snap the joint to the center of the sphere in the X, Y, & Z axis.
Naming the joints:
- RightUpLeg - the hip, at the top of the femur (the thigh bone)
- RightLeg - the knee, between femur and the lower leg bones
- RightFoot - the ankle
- RightBall - the ball of the foot, and
- RightToe – the end of the toe
FROM THE AUTODESK DOCUMENTATION.
If mapping an existing skeleton, you must map all fifteen nodes required by HumanIK. This identifies the main elements of your character's skeleton. You cannot use HumanIK to control your character at runtime if you do not provide a characterization for these fifteen required nodes. In the Character Controls, you cannot save or lock a characterization until you have successfully mapped all of these required nodes.
It is highly recommended that you also map as many other bones in your character's skeleton as possible to other optional HumanIK nodes. This will enhance the quality and believability of the poses constructed by HumanIK at runtime. The following sections give you some guidance on how to decide what bones you should map to what nodes.
NoteIf you haven't yet built a character skeleton and you plan to do so using Maya's Skeleton Generator, you won't have to explicitly map character joints to define the character structure. See Create and define a default HumanIK skeleton for more information.
Required nodes
The fifteen nodes required by the HumanIK solver display in the full-body layout of the Character view, and grouped together in the Required group of the Name Match view.
Node | Maps to |
Hips
|
The bone that is the parent of your character’s spine and leg chains.
|
LeftUpLeg and RightUpLeg
|
The first bones in your character’s upper legs.
|
LeftLeg and RightLeg
|
The first bones in your character’s upper legs.
|
LeftFoot and RightFoot
|
The first bones that extend from your character’s ankles into its feet.
|
Spine
|
The first bone in the spine that is above the bone you map to the hips node. Represents the base of the spine.
|
LeftArm and RightArm
|
The first bones in your character’s upper arms.
|
LeftForeArm and RightForeArm
|
The first bones in your character’s forearms.
|
LeftHand and RightHand
|
The first bones that extend from your character’s wrists into its hands.
|
Head
|
The last full bone in your character’s spine, not the tip of the head, but the last full bone in the neck chain. This is typically the bone that controls the skinning of the head.
|
Spine and neck nodes
The HumanIK solver supports up to nine additional spine nodes (Spine1 to Spine9), and up to ten neck nodes (Neck, plus Neck1 to Neck9). These nodes are numbered from bottom up, with lower numbers closest to the hips and higher numbers closer to the head.
Finger and toe nodes
- Map the first bone in your character's spine to the required Spine node (see Required nodes above).
- Map each succeeding bone in your character's spine to the next available spine node (Spine1, Spine2, Spine3, and so on), up until the point at which your character's collar or shoulder bones are connected to the spine. HumanIK assumes that the arms are connected to the last node defined in the spine.
- Map the first bone in your character's spinal column that is not mapped to a spine node to the Neck node.
- Map each succeeding bone that lies between the bones you have mapped to the Neck node and to the Head node to the next available neck node (Neck1, Neck2, Neck3, and so on). You cannot skip a number when defining spine or neck nodes. For example, you cannot map a bone to Spine3 if Spine1 and Spine2 nodes are empty.
The Definition tab in the Character Controls lets you configure up to six toes or fingers for each foot and each hand. From left to right, the usual fingers and toes are referred to as the Thumb, Index, Middle, Ring and Pinky respectively. HumanIK also supports the use of an extra sixth toe or finger, referred to as ExtraFinger. However, the joints in the remaining fingers, as well as those of the right hand, left foot and right foot, follow the same naming conventions.
NoteTwo optional nodes are also shown in the full-body layout: the Reference and HipsTranslation nodes. For details on these optional nodes, see Special nodes below.
- Each finger and toe can have up to four main joints, identified as 1, 2, 3 and 4. You cannot skip a number when mapping these finger or toe nodes. For example, you cannot map the LeftHandIndex3 node without also mapping both the LeftHandIndex1 and LeftHandIndex2 nodes.
- For special effects, each finger also offers an additional extra in-hand joint (LeftInHandPinky and LeftInHandThumb). These nodes are optional, and can be left out. When these optional in-hand joints are omitted, the first joints of the fingers attach directly to the finger-base node (LeftHandFingerBase). When the finger-base node is also omitted, all fingers attach directly to the required wrist node.
- The thumb always connects directly to the wrist node, regardless of the presence of the finger-base node.
- When you define fingers and toes for your character, it is generally recommended that you map the tip of each finger and toe to a node. This is particularly useful when manipulating finger or toe IK effectors.
Manipulator pointing down lower leg.
Use the Move Tool in Local mode to move knee_R. Click and drag the X axis on the move manipulator until knee_R is once again aligned with the leg. Do the same to ankle_R. Use insert key to snap joints to correct locations.
Now we have to setup the joint orientation. When joints are created, each parent joint points towards its child with one of its rotation axes. In other words, each child joint lies along one of the rotation axes of its parent joint. This is a good property to keep in a rig. Based on the Joint Tool settings we used for this rig, each child joint lies along the X rotation axis of its parent joint. Moving a child joint along the X axis in Local mode keeps this property in the rig.
To manually orient a joint’s local axes, we first need to display the joints current axes. To make the Local Rotation Axes visible, toggle Display > Transform Display > Local Rotation Axes, switch to component mode and then activate Miscellaneous components.
FROM AUTODESK HELP:
- Select the joint whose local rotation axes orientation you want to set.
- Select Display > Transform Display > Local Rotation Axes. The current joint’s local rotation axes appear.
- Click the Select by component type icon in the Status Line to turn on the component selection mode.
- Click the Select Miscellaneous components icon in the Status Line.
- -click the Select Miscellaneous components icon and turn on Local Rotation Axes in the menu that appears. You can now select the local rotation axis of your joint.
- Select the local axis.
- Do one of the following:
So the question is, what is the correct orientation of the the joints?
First lets freeze the joint rotation. To freeze the rotation of an object, open up Modify > Freeze Transformation ... and leave only Rotate checked. Select the object whose rotation you want frozen and click Apply. This sets the rotation of the object to zero. For joints, it also keeps its local axes oriented in the same direction.
In this case we want the X handle to point to through to the next joint. The Z handle should be perpendicular to the movement of the joint. Think of it as the pin to a hinge.
In some joints, you will want to limit the rotation to just one axis, like setting the RightLeg (knee) to only rotate about their Z rotation axis. In the attribute editor, uncheck the Degrees of Freedom for both the X & Y. This will lock the Rotate X & Y Attribute.
Repeat for the RightBall.
Try rotating kneeL and ballL to see the effects of limiting their rotation (remember to undo).
Arm Joints
Use the Joint Tool to create the arm joints by clicking at these places in the top view:
- the side of the back/neck bones
- the shoulder, between the rib cage and the humerus (the upper arm bone)
- the elbow, between the humerus and the lower arm bones
- the wrist,
- the end of the palm
In the front view, notice how the arm joints you just created are sitting on the XZ plane. As we did for the leg joints and the left leg, we want to align the arm joints with the left arm.
After having moved the clavicleL, rotated it, and aligned the other joints to the arm.
Move clavicleL up until the arm joints are at the same level as the left arm. Starting from clavicleL, rotate each joint so that the next joint is aligned with the corresponding place on the arm. It is better in this case to rotate the arm joints using the Rotate Tool in Local mode. Rotating these joints in Local mode seem to keep the Z axis of elbowL more perpendicular to the arm than rotating them in Global mode.
As we did for kneeL, limit elbowL to only rotate about its Z rotation axis.
At this point, the rig has joints that are aligned with the limbs on the left side of the character. We want to mirror these to create joints for the limbs on the right side.
Tip:
Options for Mirror Joint.
To mirror joints, open up Skeleton > Mirror Joint .... Set Mirror Across to be the plane of symmetry for your character and keep Mirror Function set to Behavior. Mirror Joint can also give sensible names to the joints that it creates. For the joints we're mirroring, set Search for to L and Replace with to R. Select the highest joint of the joint heirarchy that you want mirrored, then click Apply. You may discover that the mirror tool can mirror only one joint heirarchy each time it is applied.
After mirroring hipL and clavicleL.
Mirror the joint chains rooted at hipL and clavicleL over the YZ plane. (This is why we checked for the model being centered over the axes!) Have it replace any L's in the names with R's.
At this point, the rig has joints that are aligned with all the limbs of the character.
Backbone Joints
Unlike the leg and arm joints, we would like to have the local rotation axes of different backbone joints to point in similar directions. This makes setting up the back control easier.Backbone joints created on grid, then aligned to spine.
Create backbone joints on one of the gridlines. Creating joints in a straight line is one way of making sure that they are oriented in the same direction. Start at the same level as the base of the backbone then stop near the arm level. For this rig, three or four joints would do.
Tip:
To create joints on a gridline, turn on "Snap to grids" before creating joints (either by toggling or by holding down the x key).
Starting from the joint at the base of the backbone, name the joints something like spine1, spine2, and so on. As done with the arm joints, move spine1 into place then, starting with spine1, rotate each joint so that the next joint is aligned with the backbone. If you need to move the spine joints along the way, use the X axis on the move manipulator in Local mode.
More Rigging:
For a more complicated backbone with many joints, this way of making sure that joints orient in the same direction can be tedious. An alternative is to create the joints in the shape of the backbone then edit their Joint Orient attributes. But editing Joint Orient can be tedious as well. Fortunately, there are tools for re-orienting many joints at once. See the tutorial on orienting joints.
Head and Neck Joints
The head and neck joints can be created in the same way as the joints for the backbone. Since this character has no jaws or other head parts, no joints are necessary between the bottom and top of the head.
Name these joints neck1, neck2, neck3, and head_end.
At this point, the rig has joints that are aligned with the legs, the arms, the backbone, and the head/neck. In the next section, we'll connect them together into one heirarchy of joints.
Finishing up the Joints
Create a joint named pelvis slightly below spine1. This joint allows for movement in the hips of the character.
Apply Connect Joint to parent hipL and hipR under pelvis.
Tip:
To use Connect Joint to parent a joint under another joint, open up Skeleton > Connect Joint ..., set Mode to Parent Joint, select the child joint followed by the parent joint that you want, then click Apply.
Create a separate joint named root. This joint will be at the root of the joint heirarchy, allowing the pelvis and the torso in this rig to be animated independently.
Apply Connect Joint to parent pelvis and spine1 under root.
Less Rigging:
A simpler way to set up joints for a character is to position pelvis between the hip joints and make it the root of the joint heirarchy. This would limit the torso to follow the hips when animated.
Finally, use Connect Joint again to parent clavicleL, clavicleR, and neck1 under the last spine joint. This makes the shoulders and neck move with the top end of the spine.
More Rigging:
Another way to connect separate heirarchies of joints is to use a combination of Group and Parent.
You've finished creating the joints in this rig. For all except the simplest of characters, directly using joints to animate can be difficult. In the following sections, we'll add functionality to the rig to make the character easier to animate.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
Creating IK Handles
The second step is specifying which joints are controlled via IK. In this rig, we want IK controls for the arms and legs. This makes planting the feet and posing the hands easier.As mentioned earlier, IK in Maya is specified by creating IK handles. To begin creating IK handles, open up Skeleton > IK Handle Tool .... The IK Handle Tool expects you to pick two joints that lie on the same chain of joints: a higher one (the start joint) followed by a lower one (the end joint). The joints between these two joints in the heirarchy will be controlled via IK.
IK for Arms and Legs
For IK affecting the arms and legs, set Current Solver to ikRPsolver. RP refers to rotation plane, which will allow us to create additional controls for the overall twist rotation of the arms and legs.Use the IK Handle Tool to create a rotation plane IK handle by picking RightUpLeg and RightFoot.
*When creating the IK handle, pay close attention to the joints to see if they pop out of place. If the leg joints pop out of place, it probably means that the RightLeg joint was rotated after it was created. To fix this, first undo the creation of the IK handle, then freeze kneeL's rotation.
Name the IK handle RightLeg_ik. Try moving RightLeg_ik to see how it affects the leg (remember to undo).
Create rotation plane IK handles from hipR to ankleR, from shoulderL to wristL, and from shoulderR to wristR. As we did when creating legL_ik, you may have to freeze the rotation of the knee and elbow joints before creating the IK handles.
Name these IK handles something like legR_ik, armL_ik, and armR_ik.
Tip:
Mirroring joints affected by IK also creates a new IK handle in the process.
IK for Hands and Feet
As you move the IK handles, you may have noticed that while we have control over the ankle and wrist positions, there is really no control over the overall orientation of the feet and palm. One way to enable this control is to create additional IK handles.Unlike IK for the arms and legs, we won't need additional controls for the twist rotation of the hands and feet. When creating IK handles for the hands and feet, single chain IK handles will do. To create single chain IK handles, set Current Solver to ikSCsolver.
Use the IK Handle Tool to create single chain IK handles from each ankle joint and to its "ball of the foot" joint, and from each wrist joint to its "end of the palm" joint.
Name these IK handles something like RightFoot_ik and RightHand_ik, and so on. Try moving and rotating these IK handles (remember to undo). The hands and feet should rotate towards the IK handles.
You've finished specifying the joints in this rig that are controlled via IK. IK makes animation easier in many cases, but IK handles provide only some of the controls we want for the character. In the next section, we'll set up all the controls of the rig.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
Setting Up Controls
The third step is setting up the controls of the rig.As we set up the controls, it will be easier to see how they work if the joints had more shape to them. With this in mind, parent each piece of geometry to a corresponding joint in the rig.
Tip:
A quick way to parent multiple objects under a single parent is to select all the children objects first, select the parent object last, then apply Modify > Parent (or press the p key).
When setting up controls in general, have an idea of the controls that an animator would need for animating the various parts of the character (according to what's required by the desired motion). This may come easier with experience using controls for an existing character. We have tried the controls in the sample rig, but our character doesn't have specific requirements in terms of motion. So let's just start with a given set of controls and go from there. Keep in mind that rigging a character for particular animation may take some planning.
Import basic_character_cons.mb, which contains a set of NURBS spline objects that will serve as the controls (or cons) of this rig. NURBS spline objects work well as cons because they aren't renderable.
A finer but equally important part of setting up controls is the positioning the cons. While we set up the cons for each part of the character, we'll be positioning them accordingly.
Leg Controls
The legs are controlled using the foot cons and the knee cons.
Position both the foot cons at the character's heels. Rotate them out towards the same direction as the character's feet. This makes it easier to animate the heels in a walk cycle.
Apply Parent Constraint to constrain legL_ik and footL_ik to footL_con. This acheives the same affect as parenting the IK handles under the con, but it doesn't actually change the heirarchy.
Tip:
To apply Parent Constraint, select the target object (footL_con) followed by an object to constrain (legL_ik or footL_ik) then apply Constrain > Parent.
Tip:
When applying any type of constraint, make sure that the target object (usually a con) is selected first, followed by the object to constrain (usually a joint or an IK handle). In addition, only one object can be constrained each time a constraint is applied. Note how applying constraints differs from applying Modify > Parent. For constraints,
second follows first, while for applying Modify > Parent,
everything follows last.
Tip:
After applying a constraint, check whether a constraint node was created as the child of the object you wanted to constrain. It should be named something like objectToConstrain_constraintType. In addition, the translate and/or rotate channels of the object to constrain should be highlighted in the Channel Box. The target object, however, should remain unchanged.
Try moving footL_con to see how it affects the leg (remember to undo). Notice how the left foot moves and rotates with the control, stretching/compressing the leg.
Apply Parent Constraint again to constrain legR_ik and footR_ik to footR_con.
Place both the knee cons in front of the knee joints. One way to do this is to first move each knee con onto the pivot point of the corresponding knee joint then move the knee cons forward.
Tip:
To move an object onto the pivot point of another object, turn on "Snap to points" before using the Move Tool (either by toggling or by holding down the v key).
Apply Pole Vector Constraint to constrain legL_ik to kneeL_con.
Tip:
To apply Pole Vector Constraint, select the target object (kneeL_con) followed by a rotation plane IK handle to constrain (legL_ik) then apply Constrain > Pole Vector.
Try moving kneeL_con to see how it affects the leg (remember to undo). Notice how the left knee points towards the control. Technically, the control determines the pole vector of the rotation plane IK handle, which in turn determines the orientation of the rotation plane—an imaginary plane that goes through hipL, kneeL, and ankleL.
Apply Pole Vector Constraint again to constrain legR_ik to kneeR_con.
Try rotating the foot cons again (remember to undo). Notice how the knees stay stationary. For some animation, it may be easier for the knees to follow the feet. This is the case for the sample rig.
Assuming that's what the animation needs, parent the knee cons under their corresponding foot cons.
More Rigging:
The leg controls in this rig make it easy to roll the foot about the heel, but what about rolling them about the ball of the foot? See the reverse foot tutorial.
Arm Controls
In this rig, the arms controls work in the same way as the leg controls. The arms are controlled using the hand cons and the elbow cons.Align both the hand cons with character's wrist joints.
As we did for the legs, apply Parent Constraint to constrain each arm and hand IK handle to the corresponding hand con.
Position both the elbow cons behind the elbow joints.
As we did for the legs, apply Pole Vector Constraint to constrain each arm IK handle to the corresponding elbow con.
Try rotating the hand cons (remember to undo). Notice how the elbows stay stationary. As it is with the knees and feet, for some animation, it may be easier for the elbows to follow the hands. For others, it may be easier for hands and elbows to be animated independently, freeing animators from having to counter-animate the elbows. This is the case in the sample rig.
Besides the elbow/knee difference, the arm controls in this rig are virtually identical to the leg controls. In other rigs, this may not be the case. A single character may require a different controls depending on the shot and the actions/acts that the character has to perform. Let's use the arm controls as an example. Animation with hand interaction may require IK-controlled hands. For animation without hand interaction, the hands (or even entire arms) may be animated via set-driven-keys (see the sections on Torso Control and Neck Control).
More Rigging:
Some models may require rigs that are more anatomically correct than this one. For a more realistic setup of the arm, see the advanced forearm tutorial.
More Rigging:
In a rig with IK-controlled hands, the hand cons require a wide range of rotation in all directions. Because of how rotation works in math, there are limitations on how far objects can rotate in certain directions. Although these limitations affect the hand cons the most, they also apply to all the other controls. To reduce these limitations, see the gimble lock tutorial.
Root and Hip Controls
The character's body position and orientation are controlled using root_con, while the hips are controlled using hip_con.Position root_con at the character's center of gravity (this may or may not be at the root joint).
Apply Parent Constraint to constrain the root joint to root_con.
Position hip_con somewhere behind the pelvis joint. Since hip_con is purely a rotate control, its position is less a matter of function and more a matter of being easy to select.
Apply Orient Constraint to constrain the pelvis joint to hip_con.
Tip:
To apply Orient Constraint, select the target object (hip_con) followed by an object to constrain (the pelvis joint) then apply Constrain > Orient.
Try rotating root_con (remember to undo). Notice how the pelvis stay stationary. Since the pelvis does generally move with the body, it may make animation easier if root_con did affect the pelvis.
Parent hip_con under root_con.
Torso Control
In this rig, the torso is controlled via FK, similar to the pelvis. As the pelvis is controlled using hip_con, the torso is controlled using torso_con.Position torso_con somewhere behind the spine1 joint. Like hip_con, torso_con is also a rotate control whose position doesn't affect the character.
With Maintain Offset checked, apply Orient Constraint, to constrain the spine1 joint to torso_con. We keep Maintain Offset checked because, while the pelvis joint and hip_con are oriented the same, the spine1 joint and torso_con are oriented differently.
As we did for hip_con, parent torso_con under root_con.
The torso has many more joints than the pelvis, requiring additional controls. While adding more cons would solve this, having one con for each joint defeats the purpose of setting up controls. One alternative is to let a con's attributes drive the rotation of multiple joints.
To set up torso_con to drive the spine joints, do the following:
- Add a new attribute to the con.
Use Modify > Add Attribute to add an attribute named bendForwardAndBack to torso_con. Leave Data Type set to Float, and set Minimum to -10, Maximum to 10, and Default to 0. Click Add to add the attribute.
- Load the spine joints as the driven and the con as the driver.
- With spine2 and spine3 selected, open up Animate > Set Driven Key > Set .... Notice how the selected joints are automatically loaded as driven. To choose torso_con as the driver, select torso_con in the Driver panel then click Load Driver. Notice how torso_con appears and becomes selected in the Driver panel. In the Driven panel, make sure that spine2 and spine3 are also selected. Keep the Set Driven Key options window opened for the the remaining steps.
- Determine which spine joint attribute is driven by the con attribute.
Which rotate attribute on the spine joints should be driven by bendForwardAndBack? The way to tell is to find the local rotation axis that you would use to bend the joints foward and back. Given the way we have set up the joints, it is probably the Z rotation axis.
With bendForwardAndBack selected in the Driver panel and rotateZ in the Driven panel, click Key. This specifies that, when bendForwardAndBack is 0, the spine joints' rotateZ should be the way they currently are—neutral.
- Specify how the con attribute drive the spine joints' rotate attribute.
-
In the side view, rotate spine2 and spine3 forward to a reasonable extreme, set bendForwardAndBack to one of its extremes—say, its maximum value. Set a driven-key with the same driver and driven attributes as before. Repeat this for the other extremes by rotating the spine joints back, setting bendForwardAndBack to its minimum value, and setting another driven-key.
Tip:
To see the driven-keys that affect spine2 and spine3, open up the Graph Edtior with the spine joints selected.
Tip:
To freely adjust an attribute on an object, select that object, select the name of that attribute in the Channel Box, hold down the middle mouse button in one of the views, then drag left or right.
Follow the same steps above to add attributes named bendSideToSide (which should drive the joints' rotateY) and twist (which should drive the joints' rotateX).
More Rigging:
The FK controlled torso works for most animation. For an alternate way to control the torso, see the advanced back tutorial.
Shoulder Controls
The shoulders can be controlled using the shoulder cons.Position shoulderL_con and shoulderR_con at the shoulder joints.
One way to set up shoulder controls is to create single chain IK handles from each clavicle joint to its shoulder joint, then apply Parent Constraint to constrain each IK handle to the corresponding shoulder con. This allows the shoulder cons' placement to determine the rotation of the clavicle joints, which in turn determines the position of the shoulder joints.
Yet another way to set up shoulder controls is to apply Aim Constraint to keep the clavicle joints aimed at the cons. To do this, we only need to constrain two of their axes. With Aim Vector set to point down the clavicle joints, World Up Type set to None, and two of the axes checked as the Constraint Axes, apply Aim Constraint to constrain each clavicle joint to a shoulder con. Given the way we have set up the joints, Aim Vector would be (1, 0, 0) for clavicleL and (-1, 0, 0) for clavicleR, and the Constraint Axes would be the Y and Z axes.
Tip:
To apply Aim Constraint, open up Constrain > Aim ... and set Aim Vector, World Up Type, and Constraint Axes appropriately. Select the target object (shoulderL_con) followed by an object to constrain (clavicleL) then click Apply.
Try rotating or bending the torso again (remember to undo). Whichever way you set up the shoulder controls, notice how the shoulder cons don't follow the torso.
One way to fix this would be to parent the shoulder cons under the last spine joint. However, the shoulder cons would be difficult to find in the heirarchy if they are hidden under several levels of joints.
Another way to fix this would be to group the shoulder cons together, then apply Parent Constraint to constrain that group to the last spine joint. The constraint allows the torso to affect the shoulder cons, while the group allows the shoulder cons to be animated separately.
More Rigging:
We've set up the shoulders so that each is controlled by one con. For shoulders that can also be controlled from the arm controls, see the advanced shoulder tutorial.
Neck Control
Like the bending of the torso, the neck in this rig is controlled via set-driven-keys.Position neck_con somewhere behind the neck. Like hip_con and torso_con, neck_con is also a rotate control whose position doesn't affect the character.
Compared to the torso, the neck has a smaller range of motion. While the torso has both an overall rotation and bend/twist attributes, it's probably enough that the neck has only the bend/twist attributes. We can use the rotate attributes on neck_con to drive the rotation of the neck and head joints.
With the neck joints selected, open up the Set Driven Key options window. Make sure that neck_con as the driver and neck1, neck2, and neck3 are loaded the driven.
With neck_con's rotateX attribute selected in the Driver panel and the neck joints' rotateZ attribute in the Driven panel, set a driven-key. Do the same with neck_con's rotateZ driving the neck joints' rotateY, and neck_con's rotateY driving the neck joints' rotateX. This sets driven-keys for the neutral rotation of the neck joints.
Beside for rotating the driver/driven objects and using the Set Driven Key options window, you can also set driven-keys in the Graph Editor (provide that some driven-keys have been set for the driven attributes).
Open the Graph Editor with the neck joints selected. In the Graph Editor's outline area, select the RotateZ curves. Notice that in the graph area, all three driven-keys are on the vertical axis. This means that they were set when the driver attribute (neck_con.rotateX) had a value of 0.
For all of the neck joints' RotateZ curves, use the Add Keys Tool to add driven-keys at around (-360, -120) and (360, 120). This sets driven-keys at the extreme rotations of the neck joints. These keys form approximately linear curves describing neck joints' rotation in terms of neck_con's rotation. Specifically, for every degree that neck_con rotates in rotateX, each of the three neck joints should rotate about a third of a degree in their rotateZ.
Try rotating neck_con around its X axis. Notice how head_end rotates as if it follows the rotation of neck_con.
Tip:
To add driven-keys (or any type of keys) to curve(s) in the graph editor, select the corresponding attribute(s) in the outline area, select the curve(s) in the graph area by clicking/dragging with the left mouse button, turn on the Add Keys Tool by clicking , then middle mouse click in the graph area where you want the keys to be added.
Use the Add Keys Tool again to add driven-keys for the neck joints' RotateX and RotateY curves.
Technically, any set of evenly sloped curves would enable the neck_con to drive the neck joints. In general, however, the curves should cover a wide enough range of values (in the vertical dimension) so that the character can have a flexible range of motion. According to this range of values, the curves should cover an appropriate domain of values (in the horizontal dimension) so that the controls do something intuitive when used.
Tip:
If you need the driven-keys for the neutral rotation to all share the same value (to line up vertically in the Graph Editor), freeze the rotation of the joints before setting the driven-keys.
Try rotating or bending the torso again (remember to undo). Like how the shoulder cons were initially, neck_con doesn't follow the torso. However, unlike the shoulder cons, neck_con is not a translate control but a rotate control whose position doesn't affect the character. Moreover, the neck joints remain neutral even though neck_con doesn't follow the torso.
Nevertheless, you may find neck_con easier to select and more intuitive to use if it did follow the torso. If this is the case, parent neck_con under the group of shoulder controls.
Finishing up the Controls
With all these controls, what would be an easy way for an animator to move or rotate the character into place? All the controls of the character can be translated and rotated using top_con.Position top_con somewhere over the character.
Parent all the parent-less cons under top_con.
You've finished setting up the controls of this rig. Besides for providing animators with a way to animate the character after rigging, having working controls during rigging can help rigging artists check the deformation of their model during the skin-binding step. However, since the model in this rig is composed of nondeformable parts, it will not require skin-binding.
More Rigging:
For a character model with deformable parts, see the skin-binding tutorial.
Reminder:
If you haven't saved your work already, now is a good time to do so (and backup a copy while you're at it).
Finishing up the rig
When trying out the controls during rigging, undo was always an option. What would be an easy way for an animator (or a rigging artist) to bring a character back to its original pose? To enable this, we need a way to distingish the current placement of the cons. An easy way to do this is to freeze the translation of all the cons.Do this by selecting top_con and freezing only its translation. The first response you'll get from Maya is that you can't freeze the translation of the shoulder cons group.
Delete the parent constraint that constrains the shoulder cons group to the last spine joint. Freeze top_con's translation, then reapply Parent Constraint to constrain the shoulder cons group to the last spine joint.
Caution:
Don't undo the deletion of a constraint. If you're curious about what would happen, save your work before you try it.
Try selecting some of the cons. Notice how their translate attributes are all set to 0. To bring a character back to its original pose, simply set the cons' translate attributes to 0.
Tip:
To set multiple attributes of several objects at the same time, select those objects, click and drag over the attribute names in the Channel Box, then type in a value for those attributes.
Notice how the rotate attributes of the hand and foot cons are not 0. You may try freezing their rotation, but you'll find that it causes the hand and foot IK handles to pop out of place. If you absolutely must freeze the rotation of the hand and foot cons, delete those parent constraints then reapply them after freezing.
Controls like root_con are difficult to select. How can they be placed further away from the model while having their pivots remain where they are? One way to do this is to move the NURBS splines that form the shape of the cons.
Go to Control Vertex Mode either by using the right click/drag menu on root_con or by clicking the Select by component type: Points buttons ( : ). In one of the views, select all the control vertices of root_con then move them towards the front of the character.
You've finished rigging a character. Congratulations! You should be proud of yourself!
No comments:
Post a Comment