Rigging a Hand and a Foot
Prev | Chapter 16. Character Animation | Next

## Rigging a Hand and a Foot

by Lyubomir Kovachev

Relevant to Blender v2.31

### The Hand

Setting up a hand for animation is a tricky thing. The gestures, the movements of wrists and fingers are very important, they express emotional states of the character and interact with other characters and objects. That's why it's very important to have an efficient hand set-up, capable of doing all the wrist and fingers motions easily. Here is how to do it:

Figure 16.26. The Arm model

We'll use a simple cartoony arm mesh in this tutorial (Figure 16.26, “The Arm model”).

The following set-up uses one IK solver for the movement of the whole arm and four other IK solvers, one for each finger. The rotation of the wrist is achieved by a simple FK bone.

OK. Take a look at the arm mesh and let's start making the armature.

Figure 16.27. Drawing the armature

Position the 3D cursor in the shoulder, go to front view and add an armature. Make a chain of three bones - one in the upper arm, the second one in the lower arm and the third one should fit the palm, ending at the beginning of the middle finger. This is called a chain of bones. (Figure 16.27, “Drawing the armature”).

Figure 16.28. The armature in side view.

Figure 16.29. Placing the armature in side view.

Now change the view to side view and displace the bones so that they fit in the arm and palm properly (Figure 16.28, “The armature in side view.” and Figure 16.29, “Placing the armature in side view.”).

Figure 16.30. Wrist IK solver.

Zoom in the hand and position the cursor at the root of the bone, positioned in the palm. Add a new bone, pointing right, with the same length as the palm bone. This will be the IK solver for the arm. (Figure 16.30, “Wrist IK solver.”).

Figure 16.31. Rigging the finger.

Position the 3D cursor at the beginning of the middle finger and in front view start building a new chain, consisting of four bones (Figure 16.31, “Rigging the finger.”). Three of them will be the actual bones in the finger, and the fourth bone will be a null bone - this is a small bone, pointing to the palm, that will help turning the whole chain to an IK chain later.

Again, change to side view and reshape the bones so that they fit the finger well. It could be a tricky part and you may also view the scene using the trackball while reshaping the bones (Figure 16.32, “Rigging the finger.”).

Figure 16.32. Rigging the finger.

Figure 16.33. Adding the finger IK solver.

Now add the IK solver for this finger chain. Position the 3D cursor at the root of the null bone and add bone with the length of the other three bones in the finger (Figure 16.33, “Adding the finger IK solver.”).

Figure 16.34. Rigging the other fingers.

Repeat the same for the creation of the IK chains for the other three fingers. The only difference with the thumb is that it has two actual bones, instead of three. You can just copy and paste the chain and just reshape, reshape, reshape... (Figure 16.34, “Rigging the other fingers.”).

Figure 16.35. Naming overview.

The time has come for the boring part - naming of the bones. You cannot skip this, because you'll need the bone names in the skinning part later. Bones are named as in Figure 16.35, “Naming overview.”.

### Note

The names of the bones of finger 1 and finger 2 are not shown here. They are identical to the names of the bones of finger 3, only the number changes.

Figure 16.36. Parenting the Thumb.

Now let's do some parenting.

Select the root thumb bone "ThumbA.R" (Figure 16.36, “Parenting the Thumb.”) and in the edit menu click in the "child of" field and choose "Hand.R". You've just parented the thumb bone chain to the hand bone.

Figure 16.37. Parenting the other fingers.

By repeating the same process parent the following bones (Figure 16.37, “Parenting the other fingers.”):

- "Fing1A.R" to "Hand.R"

- "Fing2A.R" to "Hand.R"

- "Fing3A.R" to "Hand.R"

- "IK_thumb.R" to "Hand.R"

- "IK_fing1.R" to "Hand.R"

- "IK_fing2.R" to "Hand.R"

- "IK_fing3.R" to "Hand.R"

Why did we do all this? Why did we parent so much bones to "Hand.R"? Because when you rotate the hand (i.e. "Hand.R") all the fingers will follow the hand. Otherwise the fingers will stay still and only the palm will move and you'll get very weird results.

### Note

No IK tool bone is child of any bone of the chain it controls. All of them are children of "Hand.R".

Figure 16.38. Setting the IK solver for the wrist. Selecting the bone.

Time to add constraints. Enter pose mode (Figure 16.38, “Setting the IK solver for the wrist. Selecting the bone.”) and go in Object Context (F7). Choose "Hand.R" and add an IK solver constraint to it in the `Constraints` Panel. In the `OB` field type the object name: "Armature". The bone went to the centre of the armature, but we'll fix this now. In the new `BO` field, that appeared in the constraint window, type the bone name "IK_arm.R". This will be the IK solver bone controlling the arm motion (Figure 16.39, “Setting the IK solver for the wrist. Setting the Constraint.”).

Figure 16.39. Setting the IK solver for the wrist. Setting the Constraint.

Now by repeating the same procedure:

- select "ThumbNull.R" and add IK solver "IK_thumb.R",

- select "Fing1null.R" and add IK solver "IK_fing1.R",

- select "Fing2null.R" and add IK solver "IK_fing2.R",

- select "Fing3null.R" and add IK solver "IK_fing3.R".

You're finished with the bone part. In pose mode select different IK solvers and move them to test the IK chains. Now you can move the fingers, the thumb, the whole arm and by rotating the "Hand.R" bone you can rotate the whole hand.

So let's do the skinning now. It's the part when you tell the mesh how to deform. You'll add vertex groups to the mesh. Each vertex group should be named after the bone that will deform it. If you don't assign vertex groups, the deformation process will need much more CPU power, the animation process will be dramatically slowed down and you'll get weird results. It's highly recommended (almost mandatory) that you use subdivision surfaces meshes for your characters with low vertex count. Otherwise if you use meshes with lots of vertices, the skinning will be much more difficult. Don't sacrifice detail, but model economically, use as few vertices as possible and always use SubSurf.

Parent the Mesh to the Armature, in the Pop-Up select `Armature` and in the following select `Name Groups`. Your Mesh will be enriched by empty Vertex Groups.

Select the arm mesh, enter Edit Mode and switch to Editing (F9) Context. In the `Mesh Tools 1` of the Edit Buttons Window notice the small group of buttons with the word `Group` on top. Thanks to the automatic naming feature, you have already created all the groups you needed. (Figure 16.40, “Vertex group names.”).

Figure 16.40. Vertex group names.

Actually the automatic Grouping scheme has created vertex groups also for the "IK" and "null" bones unless you have set them `Unskinnable` before. These are useless and you can safely delete them.

Now let's do the tricky part: Select the vertex group "ArmHi.R" from the edit buttons by clicking on the small button with the white minus sign. Now look at the 3D window. Select all the vertices that you want to be deformed by the "ArmHi.R" bone. (Figure 16.41, “ArmHi.R vertex group.”).

Figure 16.41. ArmHi.R vertex group.

Now press the `Assign` button in the edit buttons window (Figure 16.42, “Assigning vertices to a group.”). You've just added the selected vertices to the "ArmHi.R" vertex group. These vertices will be deformed by the "ArmHi.R" bone.

Figure 16.42. Assigning vertices to a group.

Repeat the same steps for the other vertex groups: select vertices and assign them to the corresponding group. This is a tricky process. Do it carefully. If you've assigned some vertices to a certain group by mistake, don't worry. Just select the unneeded vertices and press the `Remove` button. You can add a vertex to more than one vertex group. For example the vertices that build joints (of fingers, wrist, elbow, etc.) could be assigned to the two vertex groups that are situated close to it. You can also assign vertices to deform with different strength. The default strength is 1.000, but you can add vertices with strength 0.500 or less. The lower the strength value, the less deformation for that vertex. You can make a vertex deform 75% by one bone and 25% by another, or 50% by one and 50% by another. It's all a matter of testing the deformation until you achieve the result you want. In general if your arm model has half-flexed joints (as the model in this tutorial you will get good results without using strength values different than 1.000. My own rule of thumb when modelling a character is: always model the arms fingers and legs half-flexed, not straight. This is a guarantee for good deformation.

When you're finished adding vertices to vertex groups, if you haven't made any mistakes, you'll have a well set up arm with a hand. Select the armature, enter pose mode, select the different IK solvers and test the arm and fingers (Figure 16.43, “Different Poses.”).

Figure 16.43. Different Poses.

### The Foot

The set-up of legs and feet is maybe the most important thing in the whole rigging process. Bad foot set-up may lead to the well known "sliding-feet" effect, which is very annoying and usually ruins the whole animation. A well made complex foot set-up must be capable of standing still on the ground while moving the body, and doing other tricky stuff like standing on tiptoe, moving the toes, etc. Now we're going to discuss several different foot set-ups that can be used for different purposes.

Figure 16.44. A (wrong) leg rig.

First let's see how a bad foot set-up looks like (Figure 16.44, “A (wrong) leg rig.”).

Start building a bone chain of three bones - one for the upper leg, the second one for the lower leg and the third one for foot. Now move the 3D cursor at the heel joint and add another bone - this will be the IK solver. Now add that bone as an IK solver constraint to the foot bone. (Figure 16.45, “Assigning the IK constraint.”).

Figure 16.45. Assigning the IK constraint.

Figure 16.46. The rig in pose mode.

Test the armature: in pose mode grab the IK solver and move it - it's moving OK. Now grab the first bone in the chain (the upper leg) and move it. The foot is moving too and we don't want this to happen! (Figure 16.46, “The rig in pose mode.”).

Usually in an animation you'll move the body a lot. The upper leg bone is parented to the body and it will be affected by it. So every time you make your character move or rotate his body, the feet will slide over the ground and go under it and over it. Especially in a walkcycle, this would lead to an awful result.

Figure 16.47. Adding a toe and some more IK Animation.

Now maybe you think this could be avoided by adding a second IK solver at the toes (Figure 16.47, “Adding a toe and some more IK Animation.”). Let's do it. Start a new armature. Add a chain of four bones: upper leg, lower leg, foot and toes. Add two IK solvers - one for the foot and one for the toes. Parent the toe IK solver bone to the foot IK solver bone.

### Note

The toe IK solver is parented to the Foot IK solver. This latter must not be children of any other bone in the armature. Be sure of this and, to delete a parent relationship, remember that you can do so by selecting the empty entry in the `Child of:` menu. Remember to check this for all subsequent examples.

Figure 16.48. Moving the leg.

Test this setup - grab the upper leg bone and move it (Figure 16.48, “Moving the leg.”). Well, now the sliding isn't so much as in the previous setup, but it's enough to ruin the animation.

Figure 16.49. Rigging with a null bone.

Start a new armature. Make a chain of three bones - upper leg, lower leg and a null bone. The null bone is a small bone, that we'll add the IK solver to. Now position the 3D cursor at the heel and add the foot bone. Now add the foot bone as an IK solver constraint to the null bone (Figure 16.49, “Rigging with a null bone.”). (You can also add another bone as an IK solver and add a "copy location" constraint to the foot bone, with the IK solver as target bone.)

Figure 16.50. Rigging with a null bone.

Test this - now it works. When you move the upper leg the foot stands still (Figure 16.50, “Rigging with a null bone.”). That's good. But still not enough. Move the upper leg up a bit more. The leg chain goes up, but the foot stays on the ground. Well, that's a shortcoming of this set-up, but you're not supposed the raise the body so much and not move the IK solver up too during animation...

Figure 16.51. Adding the toe.

Again, build a chain of three bones - upper leg, lower leg and null bone. Position the 3D cursor at the heel and add a chain of two bones - the foot bone and a bone for the toes. Now add an IK solver to the foot bone (Figure 16.51, “Adding the toe.”).

Test it. This is a good set-up with a stable, isolated foot and moving toes. But you still cannot stand on tiptoe with this set-up.

Figure 16.52. Full complete leg rig.

Figure 16.53. Zoom on the foot rig.

Build a chain of three bones - upper leg, lower leg and null bone (name it LegNull) (Figure 16.52, “Full complete leg rig.”). Starting at the heel point, make a second chain of two bones only - foot bone (Foot) and a small null bone (FootNull). Position the 3D cursor at the end of the foot bone and add the toe bone (Toes). From the same point create an IK solver bone (IK_toes). Now position the 3D cursor at the heel and add another IK solver there (IK_heel). Finally, starting somewhere near the heel, add a bigger IK solver (IK_foot) (Figure 16.53, “Zoom on the foot rig.”).

Now let's add the constraints. Do the following:

- To the bone "Toes" add a copy location constraint with target bone "IK_toes".

- To "FootNull" - an IK solver constraint (target - "IK_toes").

- To "Foot" - copy location (target - "LegNull").

- To "LegNull" - IK solver (target - "IK_heel").

Well, that's it. Now test the armature. Grab "IK_foot" and move it up. Now grab "IK_toes" and move it down. The foot changes its rotation, but it looks like the toes are disconnected from it. But if you animate carefully you'll always manage to keep the toes from going away from the foot. Now return the armature to its initial pose. Grab "IK_heel" and "LegHi" and move them up. Now the character is standing on his tiptoes. The foot may appear disconnected from the toes again, but you can fix the pose by selecting "IK_heel" only and moving it a bit forward or backwards. This setup may not be the easiest one for animation, but it gives you more possibilities than the previous set-ups. Usually when you don't need to make your character stand on tiptoe, you're better to stick to some of the easier set-ups. You'll never make a perfect set-up. You can just improve, but there will always be shortcomings.

Figure 16.54. Testing the setup.

Prev | Up | Next
Constraints | Home | Rigging Mechanics