In this tutorial, we continue to create the rig for our mesh by adding the joints and the controls for the hands. The hands are known to be the second most expressive part of the body (after the face), so we will want to make sure the rig is flexible enough for the animator to create a wide range of poses. One of the troubles we will need to overcome is to have the hand follow the FK and the IK arm chain as well as the transition between the two modes cleanly. We will also want the hand control to drive the forearm twist, so a bit of tinkering to our current rig will be in order. For the fingers, we will make sure to add the metacarpal bones as this allows for the hand to create a more believable fist. The fifth metacarpal (pinky) is particularly important because it is so flexible and works in conjunction with the thumb to allow for a great deal of dexterity.

Before we begin the hand itself, the first part of step 1 will recreate the shape of a couple of controls that have been annoying me visually. The controls I am going to re-work are the IK arm controls. There is nothing wrong with them on a rigging level; they do exactly what they should. I would just prefer that they looked less like the FK controls. If you are happy with the current shape of the controls for your rig, feel free to skip to step 2.

So, with fingers at the ready, let's rig?

Maya rigging - the hands

Annoying controls

To re-work the IK arm controls, first go Create > Polygon > Cube. Activate Snap to Points and then go Create > CV Curve Tool (Options). Set the Curve degree to 1 Linear and then click on the corners of the cube to create an outline of a box. Hit Enter when complete to create the cube-like curve and then delete the original polygon cube. Scale up the curve slightly so it is of a good size to fit around the hand, and then go Modify > Freeze Transforms to clean up the transformation channels.

Using the CV Curve Tool and point snapping to create a custom cube curve

To position the control, parent the new curve under l_arm_IK_ctrl and then zero out the translate values in the Channel Box. Once the control snaps into place, select it and hit Shift+P to un-parent it from the IK control. To create the control for the right arm, duplicate the curve, parent it under r_arm_IK_ctrl, zero out the translate values and then un-parent the curve. Select the original l_arm_IK_ctrl and add a few random letters on the end of its name. This is to stop the names clashing with our new control. Now select the first of our two new controls (left arm side) and rename that control l_arm_IK_ctrl. Do the same for the right arm.

Now parent l_arm_IK_ctrl under l_arm_IK_ctrl_auto and parent r_arm_IK_ctrl under r_arm_IK_auto. Now select the two previous IK controls and delete them. We now want to control the IK handles with the controls. In this order, select l_arm_IK_ctrl, Shift-select l_arm_IK and then go Constrain > Point. Do the same for the right-hand side. With l_arm_IK_ctrl and r_arm_IK_ctrl selected, go Modify > Add Attribute. Set the Data Type to Float and leave the Minimum, Maximum and Default boxes empty. With those settings, create the following two attributes: elbowTwist and armTwist. With the 2 controls still selected, highlight the rotate and scale attributes in the Channel Box, hold down the RMB and go Lock and Hide Selected.

The newly created IK arm control in place

To get the elbowTwist working, select l_arm_IK_ctrl and go Window > General Editors > Connection Editor. This should load the control into the left-hand side. Now select l_lowerArm_IK_jnt and hit Reload Right in the Connection Editor window. Now highlight elbowTwist on the left-hand side (should be down the bottom) and highlight rotate (open up rotate) on the right-hand side. Now for the armTwist. Select the l_arm_IK and hit Reload Right in the Connection Editor. Highlight armTwist on the left-hand side and select twist on the right-hand side. Once the left arm is done, repeat the step for the right arm.

A couple of things I want to quickly do before cracking on with the hands, is to first color the controls and, secondly to re-jig the hierarchy for the shoulder controls (this is covered in step 2). To do this, select the control you wish to color and Open up the Attribute Editor (Ctrl+A). Scroll down to Display and open up the Drawing Overrides tab. Turn on Enable Overrides and select an appropriate color from the Color slider.