Today we’re bringing you the fifth part in the Complete Human Character Rig series where you'll learn how to construct a complex, fully realized character rig using Maya’s built in tool set. In today's post we'll tackle one of the most complicated parts, the dreaded hand controls.
In this part of the tutorial, you will learn how to build the character's IK/FK Hand Controls for animation. This is a very essential part in Character Rigging and hence quite long also. So let's start creating Controls for the character's hands.
Also available in this series:
- Building A Complete Human Character Rig In Maya
- Building A Complete Human Character Rig In Maya, IK And Spline IK With Cluster Deformers
- Building A Complete Human Character Rig In Maya, Creating The Leg Controls
- Building A Complete Human Character Rig In Maya, Spinal Controls
- Building A Complete Human Character Rig In Maya, Hand Controls
- Building A Complete Human Character Rig In Maya, Global Control and Skinning
Step 1
First open the last saved file: Complete_Spine_Controls.mb.

Step 2
Click on Create > NURBS Primitives > Circle to create a circle curve.

Create a circle curve on the grid.

Step 3
With the circle curve selected, hold down the V key and drag it (using the Middle Mouse Button) onto the L_Arm_joint to snap the circle curve as shown in the image.

Step 4
Rotate the circle in the Z axis 90 degrees.

Step 5
With the circle curve selected, press the F8 key to convert it into vertex component mode. Select vertices and reshape the circle curve as shown in the image below. Reshaping like this won’t affect the scale value of the circle and hence it can save you from many problems. Now again press the F8 key to bring it back into object mode.

Step 6
Now with the circle curve selected, press Ctrl+D to create a duplicate of it. Hold down the V key and drag it (using the Middle Mouse Button) onto the L_Elbow_joint to snap it to the elbow joint.

Step 7
Selected the duplicated circle curve, press the F8 key to convert it into vertex components mode, select vertices and reshape the circle curve as shown in the image below. Now press the F8 key again to change it into object mode.

Step 8
Now, zoom out and select the wire frame box and duplicate it.

Step 9
With the snapped wire frame box curve selected, press the F8 key to convert it into vertex components mode, then select vertices and reshape the wire frame box curve as shown in the following image. Now again press the F8 key to change it back into object mode.

Step 10
With the snapped wire frame box curve selected, press F8 to convert it into vertex components mode, then select vertices and reshape the wire frame box curve as shown below. Again press the F8 key to change it back to object mode.

Step 11
Now, select all three of the created control curves (2 circles and 1 box.) Click on the Edit menu, click on the Delete by Type command and then click on the History command to delete the history of the selected curves.

Step 12
With the same curves selected, click on the Modify menu and then click on Freeze Transformations to freeze the curves.

Step 13
After that rename all the newly created curves as L_Arm_Control, L_Elbow_Control and L_Hand_Control respectively as shown in the Outliner window below.

Step 14
With the L_Arm_Control selected, press the Ctrl+D key to duplicate it for the right side arm control.

Step 15
With the duplicate L_Arm_Control selected, hold down the V key and drag (using the Middle Mouse button) onto the R_Arm_joint to snap the control curve.

Step 16
Do the same with the L_ Elbow_Control. First duplicate it and then snap it to the the R_Elbow_joint.

Step 17
Also duplicate the L_Hand_Control and snap it to the R_Hand_joint.

Step 18
Now select all new aligned controls for the right side, and rename as R_Arm_Control, R_Elbow_Control and R_Hand_Control respectively.

Step 19
Now, with the R_Arm_Control, R_Elbow_Control and R_Hand_Controls selected, click on the Modify menu and select Freeze Transformations to freeze the transform of the controllers.

Step 20
For making elbow controls, select the wire frame box curve and duplicate it, then snap it to the Elbow_joint.

Step 21
Now, snap this duplicated box curve to the L_Elbow_joint.

Step 22
With the box curve selected, press the F8 key to change it into components mode and resize it as shown in the image below, then press the F8 key again to return to object mode.

Step 23
With the reshaped box curve selected, duplicate it and also snap it to the right side elbow joint.

Step 24
Now, select both curve boxes and press the W key to enter move mode.

Step 25
Drag and move both box curves in the Z axis as shown in the image.

Step 26
Now, rename both box curve as L_IK_Elbow_Control and R_IK_Elbow_Control in the Outliner window according to their selected position.

Step 27
With both IK elbow controls selected, click on the Edit menu then Delete by Type and then click on the History command.

Step 28
Again with both of the elbow controls selected, click the Modify menu and also click on the Freeze Transformations command.

Step 29
Now, link and parent the controllers. For this, first select the L_Hand_Control then while pressing the Shift key, select L_ik_hand.

Step 30
With both the L_Hand_Control and L_ik_hand selected, click on the Constrain menu and then click on the Point command to add a point constrain.

Step 31
After applying the Point constrain command, move the hand control to check if the joint is functioning. Once checked, use the undo command to reset the hand control position.

Step 32
Now select the L_IK_Elbow_Control and then select the L_ik_hand and apply a pole vector constrain this time.

Step 33
With both the elbow control and hand ik selected, click on the Constrain menu and select Pole Vector constrain.

Step 34
Do the same thing for the right side hand also. Select both the R_IK_Elbow_Control and R_ik_hand and use point and pole vector constrains.

Step 35
Now first select the L_Arm_joint and then select the L_Arm_Control, then apply the Point constrain as shown in the figure below.

Step 36
Again first select the L_Elbow_joint and then select the L_Elbow_Control and then apply the Point constrain.

Step 37
Now, we have to create one more control curve for the Wrist control. So duplicate the L_Elbow_Control and snap it to the L_Hand_joint as shown in the figure below.

Step 38
With this duplicated curve control selected, press F8 and reshape it as shown in the image below just to make it look different. And then press F8 to change it into object mode again.

Step 39
Rename this curve as L_Wrist_Control and snap it to the L_Hand_joint and then apply the delete history and freeze transformation commands.

Step 40
With the L_Wrist_Control selected, duplicate it and snap it to the R_Hand_joint as shown in the image. Finally apply a point constraint to the R_Elbow_Control and R_Arm_Control as was done in the previous steps for the left side.

Step 41
And also don't forget to delete history and freeze transformation for both the wrist controls. After that we have to delete the applied constraint, because we don’t need the same properties here too.

Step 42
With both wrist controls selected now, select the applied point constraint for the elbow controls and press Ctrl+C to copy the command.

Step 43
With the copied L_Elbow_Control_pointConstraint1 selected, click on the Menu of the input Line Operations arrow, and click on the Select by name radio button (as shown below.)

Step 44
While in Select by name mode, press Ctrl+V to paste the L_Elbow_Control_pointConstraint1 and then press the Enter key.

Step 45
When you press the Enter key you will notice that the L_Elbow_Control_pointConstraint1 is now selected in the Channel Box. So press the Delete button to delete the applied point constraint.

Step 46
Again with both wrist controls selected, apply delete history and the freeze transform commands.

Step 47
Now, first select the L_Hand_joint and then select the L_Wrist_Control and apply a Point constrain. See the previous steps!

Step 48
Do the same thing for right side also.

Step 49
Now, this is the time to create attributes for the wrist controls. So, with both the left and right wrist controls selected, click on the Modify menu and then click on Add Attribute...

Step 50
In the Add Attribute settings box, write IK or FK Switch in the Log name box and fill the values with Minimum: 0, Maximum: 1 and Default: 0 in the Numeric Attribute fill boxes, and finally click on the Add button.

Step 51
Continue and write Thumb in the Log name box and fill in the values Minimum: -5, Maximum: 10 and Default: 0 in the Numeric Attribute boxes, and then click the Add button.

Step 52
Next, write Index in the Log name box and enter the values of Minimum: -5, Maximum: 10 and Default: 0 in the Numeric Attribute boxes, and then click on the Add button.

Step 53
Again, write Middle in the Log name box and enter the values of Minimum: -5, Maximum: 10 and Default: 0 in the Numeric Attribute fill boxes, and then click on Add.

Step 54
Continue by writing Ring in the Log name box and filling the values with Minimum: -5, Maximum: 10 and Default: 0 in Numeric Attribute boxes, and then click on the Add button.

Step 55
Finally write Pinky in Log name box and enter the values of Minimum: -5, Maximum: 10 and Default: 0 in Numeric Attribute boxes, and then click on Add.

Step 56
Now you will see the new Attributes in the Channel Box.

Step 57
Now, let’s proceed for the wrist control. First select the L_Wrist_Control and then the L_Hand_joint.

Step 58
With both selected, click on the Constrain menu and then click on the Orient options box.

Step 59
In the Orient Constrain Options box, check on Maintain offset and then click on the Add button to apply the Orient Constrain.

Step 60
To test if it's functioning, press the E key and select the L_Wrist_Control then drag and rotate. You will notice that the hand joint rotates just like a real hand. Now undo the last rotated wrist control.

Step 61
Now, let’s work on the wrist twisting. Select the L_Wrist_joint and in channel box select Rotate X, because in this case we have to constrain Rotation X with an expression.

Step 62
Again in Channel Box, click on the Edit menu and then click on Expressions.

Step 63
Now, the Expression Editor window appears. In the Expression text box, write script (L_Wrist_joint.rotateX = L_Wrist_Control.rotateX*0.3;) then press the Create button, and close the Expression Editor window.

Step 64
Do the same thing with the right side wrist control. In this case, write this script (R_Wrist_joint.rotateX = R_Wrist_Control.rotateX*0.3;).

Step 65
To bind up all finger controls and IK or FK Switch attributes, Click on the Animate menu and then click on Set Driven Key and click on Set.

Step 66
Select the L_Wrist_Control and in the Set Driven Key window, click on Load Driver to load in side Driver group.

Step 67
Select all thumb joints like L_Thumb_joint_1, L_Thumb_joint_2, L_Thumb_joint_3 and L_Thumb_joint_4 while pressing the Shift key and click on the Load Driven button. You will notice all thumb joints are selected in Driven group.

Step 68
With the elements selected as shown in the Driver and Driven groups, click on the ‘Key’ button to add an initial key.

Step 69
Now, click on L_wrist_Control in the Driver group and then in the channel Thumb attribute, enter a value of -5.

Step 70
Select all L_Thumb_joints in the Driven group and press the E key to rotate the joints.

Step 71
The selected joints rotate in the opposite direction as shown in the image below. Click on the ‘Key’ button to set the driven key.

Step 72
Now in the Driver group, select L_Wrist_Control and in the Channel Box enter the value of 10 for the Thumb.

Step 73
With all thumb joints selected, rotate in the desired direction and click on the Key button to add a key.

Step 74
Now let’s work on the index finger. So select the L_Index_1, L_Index_2, L_Index_3 and L_Index_4 joints and click on the Load Driven button. Then select Rotate Z and Index in the Driver group and then press the Key button for the initial key.

Step 75
Again in the Driver group, click on L_Wrist_Control and then add a value of -5 in the Channel Box for Index.

Step 76
Select All Index joints in the Driver group and rotate the joints as shown in the image, and then click on the Key button to add a key.

Step 77
Click on L_Wrist_Control in the Driver group and fill in a value of 10 for the Index Attribute in the Channel Box.

Step 78
Again with all index joints selected, rotate down in the Z axis as shown in the image below and click on the Key button to add a key.

Step 79
Now let’s work on the middle figure. Select all middle finger joints L_Middle_1, L_Middle_2, L_Middle_3 and L_Middle_4 and click on the Load Driven button first. Then select Rotate Z in the driven group and finally select the Middle Attribute in Driver group, then click on the Key button for the initial key.

Step 80
Again select the L_Wrist_Control in the Driver group and then add a value of -5 for the Middle Attribute in the Channel Box.

Step 81
Select all middle joints again in the Driven group and rotate upward in the Z axis, then press the Key button to add a key.

Step 82
Again select the L_Wrist_Control in the Driver group and then fill in a value of 10 for the Middle Attribute in the Channel Box.

Step 83
Select all middle joints again in the Driven group and rotate downward in the Z axis, and then press the Key button to add a key.

Step 84
Now you have see how to do the process. So follow the same procedure for the two remaining fingers - the Ring and Pinky and also for the fingers on the right side hand. Finally check the values of the finger's attributes, they must lay between -5 to 10.

Step 85
Now, we will create the IK/FK Switch control attribute. So Select the L_Wrist_Control again and load it in the Driver group, in the Set Driven Key window. Now select L_ik_hand, load it as Driven and then select the IK or FK Switch attribute in the Driver group. Then select IK Blend in the Driven group and finally click on the Key button.

Step 86
Select the L_Wrist_Control again in the Driver group and then fill in a value of 1 for the IK or FK Switch attribute in the Channel Box.

Step 87
Now, select the L_ik_hand ik in the Driven group and set the value for IK Blend to 0 in the Channel Box, and then click on the Key button to add a key.

Step 88
Thus, follow the same procedure for the right side hand wrist control also, and test it's functionality too.

Step 89
Now, first select the L_Arm_Control and then the L_Arm_joint.

Step 90
With the L_Arm_Control and L_Arm_joint selected, click on the Constrain menu and then click on Orient Constrain to apply it.

Step 91
Again Select the L_Elbow_Control and then the L_Elbow_joint and apply the Orient constrain here too as shown in the image.

Step 92
Select the L_Elbow_Control and then the L_Arm_Control, and press the P key for parenting.

Step 93
Do one thing more, select the L_Wrist_Control and then press Ctrl+G to make a group. You can see the transform gizmo of the group appears on the grid.

Step 94
With the L_Wrist_Control selected, hold down the D and V keys and drag using the Middle Mouse Button onto the L_Elbow_joint to snap the pivot to the elbow joint.

Step 95
With the Wrist control group selected, open the Outliner window and then rename the group as L_Wrist_control_grp.

Step 96
First select the L_Elbow_Control, then select the L_Wrist_control_grp and then click on the Constrain menu to apply the Parent constrain. Do the same for the right hand wrist control too.

Step 97
Now, select the L_Wrist_Control and load it as the Driver, and then select the L_Arm_Control and L_Elbow_Control and load them as Driven. Now select IK or FK Switch in the Driver group and then select Visibility in the Driven group.

Step 98
Select L_Wrist_Control in the Driver group and fill in a value 0 for the IK or FK Switch in the Channel Box.

Step 99
With L_Arm_Control, L_Elbow_Control and Visibility selected in the Driven group, set the value for Visibility to Off, and then press the Key button.

Step 100
Again select the L_Wrist_Control in the Driver group and fill in a value of 1 for IK or FK Switch in the Channel Box.

Step 101
With L_Arm_Control, L_Elbow_Control and Visibility selected, type ‘on’ for the Visibility option in the Channel Box and then press the Key button to set the key.

Step 102
Select L_Hand_Control and L_IK_Elbow_Control together, click on Load Driven, select Visibility and set the value to ‘off’ for the Visibility attribute in the Channel Box, and finally click on ‘Key’.

Step 103
Again select the L_Wrist_Control in the Driver group, and fill in a value of 0 for IK or FK Switch in the Channel Box.

Step 104
Select L_Hand_Control and L_IK_Elbow_Control, then load it as Driven with Visibility selected. Set the value of Visibility to ‘on’ and then click on the ‘Key’ button. Also follow the same steps for the right side wrist control.

Step 105
Finally check all controllers which we have created so far and then save the file as Complete Spine Controls.mb.

And that completes Part 5!
Subscribe below and we’ll send you a weekly email summary of all new 3D & Motion Graphics tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post