• Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL
Help

Chapter 4. Rigging the Bones > Matching Rotations

Matching Rotations

Why isn't the spine wiring working? One of the problems is that the control object, and perhaps the spine, have been rotated at one time or another to put them in their current places. The wiring is adding up all the control shape's rotations on whatever its local axes are, and affecting the bone's local axes with this rotation. The chances of this resulting in the expected rotation are pretty slim.

This problem doesn't occur with linking, which is why the bottom spine bone worked fine when you linked it to the control shape. With linking, the child object always follows the parent object's current orientation. This problem is strictly a wiring phenomenon. However, there's no way to get the double rotation effect with linking alone—you have to use wiring for this effect.

You'll get the same result even if you wire individual rotation parameters to one another. For example, wiring the X Rotation of the control shape to the bone's X Rotation parameter won't give you the expected rotation either. You might be able to get some success by doing some cross-wiring, such as wiring the control shape's Z Rotation to the bone's X Rotation, or some variation of this. But you could drive yourself crazy trying to figure out the correct wiring, which might require putting in negative signs and subtracting from 90 or 180 or whatever. Not a fun way to spend your time, and there's an easier way.

Matching Pivot Points

To solve the problem of the mismatched wiring, you want the control shape's local axes to match the bone's. Then any rotation on the control shape will rotate the bone on the same axis. You can solve this problem by aligning the control shape's pivot point to the bone's pivot point. This is an easy task that you can perform with the Align tool.

Freezing Rotations

Although aligning the pivot points will help, it won't solve the problem completely.

If the spine bone was rotated to pose it in place, it had an original orientation when it was created, and now it has its current orientation. You want the spine bone to be affected in relation to its current orientation, not its original orientation. The same goes for the control shape.

For both the spine control and the second-to-last bone, you'll need to freeze the rotation in its current state and start any animation from there. Fortunately, 3ds max provides a simple way to do this. You can simply select an object, press [Alt] and right-click to display the Animation Quad menu, and choose Freeze Rotation.

This splits the Rotation track into two separate tracks named Initial Pose and Keyframe XYZ. The Initial Pose track holds any rotation you've performed up until now to pose the objects. The Keyframe XYZ track will hold the results of any transforming you do from now on.

If you align the pivot points, freeze the rotations, then wire together the Keyframe XYZ tracks, the double-rotation will then work.

Controllers

When you use Freeze Transform, there are some things going on under 3ds max's hood that you should know about.

When you create any object in 3ds max (including bones), it is assigned a single Rotation track by default. This track is a result of a default controller being assigned to the object.

A controller is a method for specifying an object's transforms (position, rotation, and scale). The default controllers allow you to move, rotate, and scale objects with the transform buttons on the toolbar (Select and Move, Select and Rotate, Select and Scale). Other controllers might control an object's position by putting it on a path, or control its rotation by making it look at another object.

By default, simple controllers are assigned to each of an object's three transforms. If you just went ahead and animated the objects in the scene with the transform buttons and never did any other kind of animation, you might never know the controllers were there. But 3ds max provides additional controllers so you'll have more flexibility when animating.

You can change these controllers in a variety of ways. The most direct method is to select an object, go to the Motion panel, expand the Assign Controller rollout, highlight an existing controller, and click the Assign Controller button to choose another controller.

TIP

In the 3ds max documentation, controllers are also called “animation controllers” or “constraints.”


There are also a number of indirect methods for changing controllers in 3ds max. The Freeze Rotation option is one example—it splits the original rotation controller into two controllers. Options in the Animation > Constraints menu also change controllers. For example, choosing Path Constraint changes the default position controller to a Path controller.

A list controller is a special type of controller that lets you apply two or more controllers to one transform. The first controller holds the current transform information at the time the list controller is assigned, while later controllers can be used to animate the object. The Freeze Rotation tool automatically creates a list controller for an object.

To save time in changing the default rotation controller to a list controller, you'll use the Freeze Rotation option to set up the double rotation through wiring.

TUTORIAL R9: Completing the Spine Rig

Now you can use what you've learned about freezing rotation to finish setting up the spine rig.

Align the Control Shape's Pivot Point

The first order of business is to align the pivot points of the two objects you want to control with the wiring.

1.
Load the file CharRig10.max that you created earlier, or from the Rigs folder on the CD.

2.
Select CtrlSpineBase, the gyrohandle that controls the spine.

3.
On the Hierarchy panel, click Affect Pivot Only.

4.
Click Align, and click BoneSpine02, the second-lowest spine bone.

5.
In the Align dialog, turn off any Align Position options that are turned on. In the Align Orientation group, turn on X,Y, and Z. Make sure Pivot Point is selected for both Current Object and Target Object, and click OK.

6.
Turn off Affect Pivot Only.

Now the orientation of the control object's pivot point matches the pivot point of the bone it's going to control.

Freeze Rotations
1.
Make sure CtrlSpineBase is still selected.

2.
To see what's happening with the Rotation controller, access the Motion panel. In the Assign Controller rollout, expand the Rotation listing.

The listing currently shows one Euler XYZ controller assigned to the Rotation track. This is the default rotation controller.

3.
Press [Alt] and right-click, then choose Freeze Rotation from the Animation Quad menu.

In the Assign Controller rollout, if you expand the Rotation controller again, you can see that the Rotation controller has been split into two controllers: Initial Pose and Keyframe XYZ. These are simply EulerXYZ controllers that have been assigned new names. The Initial Pose controller holds the rotation up until this point, while the Keyframe XYZ controller will hold any you do from now on.

4.
Select BoneSpine02, and apply Freeze Rotation to it.

TIP

Since you won't be doing any wiring with the lowest spine bone, there's no need to freeze its rotation. However, there's also no harm in freezing its rotation.

On the Motion panel, you can see that the bone's Rotation tracks are split in the same way.

Wire the Rotation
1.
Select CtrlSpineBase.

2.
Right-click CtrlSpineBase, and choose Wire Parameters from the Quad menu. Choose Transform > Rotation > Keyframe XYZ > X Rotation from the pop-up menu.

3.
Click BoneSpine02, and choose Transform > Rotation > Keyframe XYZ > X Rotation.

You could wire each of the rotation listings to one another (X Rotation, Y Rotation, Z Rotation), but you can save time by wiring the Keyframe XYZ listings together. This automatically wires each of the X, Y, and Z rotation listings to one another.

4.
In the Parameter Wiring dialog, highlight the Keyframe XYZ:Euler XYZ listing on each side (the one above X Rotation).

5.
Click the right arrow, then click Connect.

6.
Close the Parameter Wiring dialog.

7.
Test the wiring by rotating CtrlSpineBase. The second spine bone from the bottom should rotate twice as much as the bottom spine bone when you rotate the gyrohandle in any direction. Undo any rotation before continuing.

8.
Save the scene as CharRig11.max.

Create the Remaining Spine Controls

The rig for the upper spine and neck works similarly to the rig at the bottom of the spine. Now you know all the tricks, so it's just a matter of setting it up.

1.
Unhide BoneNeck and BoneHead.

2.
Create two copies of CtrlSpineBase, and name them CtrlSpineMid and CtrlSpineNeck.

First, you'll align the positions of these new controls to the bones that will link to them.

3.
Use Align to align the position of CtrlSpineNeck with BoneNeck. Set both Current Object and Target Object to Pivot Point on the Align dialog.

4.
Use Align to align the position of CtrlSpineMid with BoneSpine03 (the second spine bone from the top). Be sure to turn off any orientation settings in the Align dialog before clicking OK.

Next, you'll change the orientation of each control object's pivot point to match the bone it will control with wiring. The pivot point orientations for all the bones are similar, but to be safe, you should align the pivot points for each set of controls and bones.

5.
Select CtrlSpineNeck.

6.
On the Hierarchy panel, turn on Affect Pivot Only.

7.
Align the orientation of CtrlSpineNeck's pivot point to BoneHead's pivot point.

Recall that you aligned the control object pivot point's position with the bone that will be linked to it, but you align the pivot point's orientation to the bone that will receive the double rotation.

8.
Select CtrlSpineMid, and align the orientation of CtrlSpineMid's pivot point to BoneSpine04's pivot point.

9.
Be sure to turn off Affect Pivot Only before continuing.

Link the Controls

Now you can link the bones to the controls. Use the picture as a reference for the link sequence.

1.
Link BoneNeck to CtrlSpineNeck, and link CtrlSpineNeck to BoneSpine04.

2.
Link BoneSpine03 to CtrlSpineMid, and link CtrlSpineMid to BoneSpine02.

You now have a linked chain from the top of the head to the bottom of the spine that includes both bones and control objects.

3.
Test the linkage by rotating each spine control. The bones above each one, and any controls above each one, should rotate with it.

Be sure to undo any rotation before continuing.

Wire the Neck and Upper Spine
1.
Select BoneHead, BoneSpine04, CtrlSpineNeck, and CtrlSpineMid. Press [Alt] and right-click to display the Animation Quad menu, then choose Freeze Rotation.

2.
Wire the Keyframe XYZ controller from CtrlSpineNeck to BoneHead to create double rotation on the head.

3.
Wire the Keyframe XYZ controller from CtrlSpineMid to BoneSpine04 to create double rotation on the upper spine.

TIP

If you link the controls together after you freeze the rotation, you'll have to link the controls together with the Initial Pose controller active in order for the wiring to work properly (rather than linking when the Keyframe XYZ controller is active). To do this, select the control object and, on the Motion panel, double-click the Initial Pose controller in the Rotation List rollout to make it the current controller. Link the bones and control together, then double-click the Keyframe XYZ controller in the Rotation List rollout to make it the current controller again.

4.
Test the rig by rotating the control objects. You can rotate the entire spine by rotating the control object at the base of the spine, and you can increase the rotation for any joint along the way by rotating its control object.

Undo any rotation you have done before continuing.

5.
Save the scene as CharRig12.max.

  • Creative Edge
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint