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

Chapter 17. Rigging Characters for Anima... > Advanced IK Arms and Clavicular Tria...

Advanced IK Arms and Clavicular Triangle

In the next exercise, you will see how I chose to rig The Jerk's shoulders and arms. The technique used enables the arms to stretch and the shoulder to rotate as if it were an FK arm. Separate controls exist for posing the arm using IK from the scapula, the clavicle, and the shoulder, as well as the traditional IK handle at the wrist. Two locators both have the wrist's IK handle constrained to them, adding the capability to plant the character's hand any place we choose. Two extra joints were inserted as children of the shoulder and elbow but were not connected (not made parents) with the rest of the hierarchy of the arm. These unparented children joints were used for better deformations on the twisting of the shoulder and the wrist, to avoid the painful washboard effect.

Exercise 17.6 Advanced Stretchy IK Arms and the Clavicular Triangle

Begin by opening the file Jerk_ArmSetup_Begin.mb, which you'll find on the accompanying CD. Take a look at how the arm joints are laid out to create the hierarchy.

Examine this file closely: It contains the joint placement for the entire skeletal hierarchy that will create the final arm for The Jerk. The only thing missing is the controls, which you will add to the rig now. You begin with the shoulder area of the character, which I refer to as “the clavicular triangle.” Then you tackle the advanced stretchy IK arm controls that will allow the character's arms to stretch to any length. You'll also transition the hand to be stuck on any object and stay there while the rest of the body is animated. So, let's get started with the clavicular triangle.

Beginning with the file Jerk_ArmSetup_Begin.mb from the CD, create an IK handle from the clavicularTriangle joint node to the scapulaJoint node. Do this by clicking Skeleton, IK Handle Tool Options; first hit the Reset Tool button and then select the nodes in order from the 3D view port window. Rename the newly created IK handle scapulaClavicle_IkControl.

Next, select the scapulaJoint and use the Ctrl+h key combination to temporarily hide it so that you can select the correct node in the view port window. Now, using the same settings in the IK Handle tool from above, create another IK handle from the clavicleJoint node to the clavToShoulder joint node. Rename the newly created IK handle clavicleStretch_IkHandle.

Next, use the Ctrl+Shift+h keyboard combination to unhide the last hidden node (the scapulaJoint node). Then select the clavicleJoint node and use Ctrl+h to temporarily hide it.

Using the same settings, create an IK handle from the scapulaJoint node to the shoulderJoint node. Rename this newly created IK handle clavicleShoulder_IkControl.

Create one last IK handle from the shoulderJoint node all the way down to the bottom of the arm to the wristJoint node. Rename the newly created IK handle armWrist_IkControl. Now Ctrl+Shift+h to unhide the previously hidden clavicleJoint.

Next, parent the clavicleShoulder_IkControl under the scapulaClavicle_IkControl node. Then parent the clavicleStretch_IkHandle and the armWrist_IkControl nodes to the clavicleShoulder_IkControl. Finally, parent the entire group of the scapulaClavicle_IkControl node to the connectToSpine joint node. Your hierarchy so far should look like Figure 17.45.

Figure 17.45. Hierarchy for the clavicle shoulder setup.

Now that you've parented all your IK appropriately, select all four IK handles and perform the Modify, Freeze Transformations menu command. Next, with all the IK still selected, highlight the poleVectorX, poleVectorY, and poleVectorZ attributes in the Channel box and set them all to 0 (zero).

Next, click Create, Measure Tools, Distance Tool. While holding down the v key on your keyboard (Snap mode), snap a distance locator from the clavicleJoint to the clavToShoulder joint. Rename each locator appropriately: clavicleJointPoint and clavToShoulderPoint. Also rename the distanceDimension node that was created to clavToShoulder_distanceDimension.

Select the shoulderJoint and the clavToShoulderPoint and perform the Constrain, Point menu command. Next, select clavicleJoint and then clavicleJointPoint, and again perform the Constrain, Point menu command. Now select the two locators and the distance dimension, and hit the Ctrl+g keyboard combination to group them. Rename the group clavicleDistanceGroup and make it a child of the connectToSpine joint node. Your hierarchy so far should look like Figure 17.46.

Figure 17.46. IK handles for the clavicle shoulder setup.

Next, execute this command:

createNode multiplyDivide;

Be sure to hold down the Shift key, and Shift+click, selecting the clavToShoulder_distanceDimension node. Open the Hypergraph window and click Graph, Input and Output Connections.

Your screen should look like Figure 17.47.

Figure 17.47. Connecting the distanceDimension node.

Next, using Shift plus the middle mouse button, drag and drop the clavToShoulder_distanceDimensionShape onto the multiplyDivide1 node. This should bring up the Connection Editor window. Inside the Connection Editor, connect the distance attribute from the clavToShoulder_distanceDimensionShape into the Input1X attribute of the multiplyDivide node.

Next, select the multiplyDivide node and open the Attribute Editor. Change Operation to Divide, and copy the yellow input1X attribute (using the Ctrl+c keyboard combination) and paste it into the input2X field so that you are dividing the current distance by the initial distance. This creates a ratio that you can use to scale the clavicle joint down its axis. Your hierarchy so far should look like Figure 17.48.

Figure 17.48. Connecting the multiplyDivide node.

Select the multiplyDivide node and Shift+select the clavicleJoint. Open the Hypergraph window and click Graph, Input and Output Connections. Using Shift and the middle mouse button, drag and drop the multiplyDivide node onto the clavicleJoint node. Again, this opens the Connection Editor for you to connect the appropriate attributes.

In the Connection Editor, highlight the OutputX attribute from the multiplyDivide node, and connect it with the scaleX attribute of the clavicleJoint node. This should appear to do nothing because the outputX attribute should be currently equal to 1.

Finally, select the shoulderJoint, Shift+select the clavicleStretch_IkHandle, and perform Constrain, Point.

That is about it for the clavicle setup. If you move or rotate the clavicleShoulder_IkControl IK handle, you will see that the clavicleJoint actually scales to keep its length between the shoulder and its point of origin at the clavicle. Although this is not anatomically correct, it can prove very helpful for achieving appealing deformations in this area when the character points his arm forward in front of his body, reaches his hand across his chest, or lifts his arm above his head. The key is to spread the weighting of this joint smoothly and sparingly across certain portions of the frontal geometry.



Not a subscriber?

Start A Free Trial

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