If your character does not have all their finger joints start with the left hand.Making the finger joints
1. Copy the wrist joint and position it at the first knuckle of
the pointer finger
2. Name it pntFinger1_L
it to the wrist
3. Duplicate the joint, position it at the second knuckle and name it pntFinger2_L
repeat for the third knuckle.
4. Position the joints so they are in the middle of the finger
geometry, also notice that there are three edge loops for the
3rd knuckle of each finger, make sure each joint is placed at the
5. Modify>Freeze transformations
on the joints
6. Use skeleton>orient joints
to orient the joints so X is pointing
to the next joint and so Y is pointing to the back of the character
(this is so positive y rotations curl the fingers into the hand)
7. Make sure that the Y axis is aligned with the palm of the hand
TIP! To modify the orientation of a joint directly. Select the joint and open the attribute editor (ctrl+a). Under the joint category locate "Joint Orient" The
three values are for X Y Z rotations of the joint. Click in the
number field you want to change and with the mouse cursor over the
field hold down the ctrl key and Middle Mouse Button and drag left and right to change the value.
8. Copy this first finger and use it to make all the remaining fingers. Make sure you orient these and freeze transforms
(On the thumb make sure to line up the y axis with the natural angle of
9. Change the name prefixes on the joints to the following thmb pntr mid rng pnk
10. Before moving on check that all rotations on the joints are zero and all orients are correct.
Creating the Finger Controls
1. Select nothing and press ctrl+g to make an empty group at the origin.
2. Name this group pntrFinger1_pos_L.
3. Select the pntrFinger_L
joint then the pntrFinger1_pos_L
group and run the
following mel command.
delete `parentConstraint` (this will snap the
pivot of the group to the selected joint)
4. Create>nurbs object>circle
and shape it like a lollipop.We will use this as a controller for the fingers
5. Parent this object to pntrFinger1_pos_L
6. Set all
trans and rot values to zero.
7. Rotate it so it sticks out of the
top of the finger and then freeze transformations on it.
8. Name this control pntrFinger1_ctrl_L
9. Select the control and press ctrl+g
and name the group pntrFinger1_sdk_L
Now we have an sdk (set driven key) control group that we can use to drive the fingers but still allows us to use the nurbs controls as well.
10. Now we can duplicate pntrFinger1_pos_L
and use it for
the next joint of the finger by zeroing the trans and rot values then run
Repeat this process for the other two knuckles on the pntrFinger making sure to update all names on these new nodes
11. parent pntrFinger2_pos_L
And parent pntrFinger3_pos_L
12. Lastly parentConstrain
joints to their respective controls.Final hierarchy for midFinger controls
13. Copy the pntrFinger hierarchy and rename to the next finger control you need ie (rngFinger) using Modify>Search and Replace Names
14. To place these copied nodes select all the *pos_L nodes and type 0 into the translate and rotate channels
. Then use the delete `parentConstraint`
command on each *pos_L node to align it with it's corresponding joint (see step 3 for details).
15. Once all the individual finger control hierarchies are made we group them with the hand_ctrl_L and call the group hand_system_L Now we Add Set Driven Keys to control the fingers
1. The drivers for these SDKs are attributes that we add to hand_ctrl_L
The above image shows the hand attributes we need to add. All of these attributes should have the following options Min: -10 Max: 10 Default: 0 The
driven attributes will be the *sdk groups NOT the controllers. The
easiest way to select these is to select all the nurbs controllers for
the fingers then hit the up arrow to select the SDK group. Curl: + curls the fingers toward the palm of the hand - curls fingers upwardSpread: + spreads the fingers apart - pushes the fingers togetherSway: + Curls the fingers forward - Curls the fingers backwardsRoll: + twists the fingers forward (X axis) - twists the fingers backward (X axis)Scrunch: + Pushes the finger tips towards the palm - Extends the finger tips upwards
See the hand attrs in this video
Mirroring the Hand Ctrls
1. All of the finger_pos_L groups should be parented to the hand_ctrl_L.
2. Select hand_ctrl_L and group it and name the group hand_system_L.
3. Duplicate this and rename it hand_system_R
4. set scale x to -1 on hand_system_R
5. Freeze Transformations (scale only) on hand_system_R.
6. Search and replace names so the controls all have _R in the name,Now you have all the controls in place on the right hand
6. Mirror over the left arm from the clavicle using skeleton>mirror joint
Options: Mirror behavior
replace; _L with _R
unparent the wrist on this new right hand and parent it to the original
arm and delete the unused arm joints we just mirrored over.
8. unparent pntrFinger1_ctrl_R from the hand_system_L while we orient it's parent groups.
9. select pntrFinger1_R
then run delete `parentConstraint`;
10. parent pntrFinger1_ctrl_R
back under pntrFinger1_sdk_R
and unparent the child of pntrFinger1_ctrl_R
11. Freeze Transformations (Trans Rot Scale) on pntrFinger1_ctrl_R.
Rinse and repeat for all remaining finger controls on the right hand