Wednesday, May 21, 2014

Rigging tutorial 3

This is the english translation of the second part of a rigging tutorial I wrote.


Hand and palm rig

Hands have much more freedom in movement than legs but fortunately they do not need an animation system for "sticking" to ground and rolling over heel like legs do. Thus we can use simpler rig here.

First we create handles that determine the location and direction of palms.
In Edit Mode select the palm bone of left hand and make a copy of it (Shift-D). Because the original is mirrored the copy will be mirrored too. Rename the new bones to IK_Hand_L ja IK_Hand_R.
NB! The new bones are coincident with the original ones thus to select them it may be necessary to right-click two times.

Palm handle in Edit Mode

The new bones are connected to forearm as are hands. We want to make them children of chest and not connected to parent's endpoint so that they move together with upper body but allow us to move them individually as well.
Select IK_Hand_L, confirm that the Connected checkbox is disabled and chose chest bone on the Parent field. Repeat the same procedure with the handle of right hand.

Bone properties panel for IK_Hand_L

Now change the shape of handles to something more intuitive, for example flat box roughly the same shape as hand.

The shape of palm handle

Like the one of leg the IK chain of hand needs an additional handle that determines the direction of elbow. We create it as a child of hand IK handle IK_Hand_L/R.
In Edit Mode select the endpoint of IK_Hand_L and create mirrored bones (Shift-E) extending backwards. Rename these new bones to IK_Elbow_L ja IK_Elbow_R.

Creating IK_Elbow_L

Give them some intuitive shape (for example the same as knee targets), switch off Connected checkbox on Bone Properties panel and them move these to about 1m behind elbows.

IK_Elbow_L location

Now select the left forearm in Pose Mode and add Inverse Kinematic constraint to it.

Chose IK_Hand_L as target and IK_Elbow_L as Pole Target. The length of the cain is two bones. Although shoulder has to move together with the arm, it does not animate well if attached to the IK chain. Thus we will animate it manually.
If the elbow will twist to unnatural direction change the Pole Angle value (-90, 90 or 180 degrees) so that elbow would point to IK_Elbow_L.

Arm IK chain properties

Select the palm handle and drag it around. Hand should move along with it trying to keep the wrist at the starting point of palm.
Create similar same IK constraint for the right arm.
Next we have to make a hand to follow not only the location but also the rotation of IK_Hand_L/R so it can be turned easily by turning the handle.
Select the bone of the left palm, add Copy Rotation constraint to it and select IK_Hand_L as target bone.

Copy Rotation constraint of the left hand

Confirm that if the handle is rotated the palm rotates along.

Positioning arm and hand by IK handle

Add a similar constraint to the right palm.
The rig of arms is now complete.
Notice that the elbow targets IK_Elbow_L/R move together with palms. In most "normal" arm positions it places elbows quite naturally but time to time we have to adjust it by hand to position elbows the correct way.

Finger rig

Animating all finger bones individually is hard and time-consuming. In most situations fingers do not move separately but bend together into fist of if grabbing objects. To make creating such animations easier we add Copy Rotation constraint to all finger bones.

Select the second bone of left index finger and add Copy Rotation constraint to it. Select the first finger bone as target. Enable the Offset checkbox so it can rotated individually if needed. At last select Local Space from both coordinate system field (Space).

Finger constraint panel

Add similar constraint to the third bone choosing the second as target.
Confirm that if the first bone of the index finger is turned the whole finger curls.
 
Bending of rigged finger
NB! For the finger bones to turn naturally the same local coordinate system axes (either X or Z) have to be aligned with the anatomical rotation axis for all finger bones.

Repeat the same procedure for other fingers and thumbs.

Now there is an easy method to curl fingers individually. In real animations all fingers of the same hand usually move together. To simplify such movement we create helper bone that bends all fingers together.

In Edit Mode select the end of the left hand bone and create mirrored bones (Shift-E) extending upwards from the hand at right angle. Rename these to IK_Fingers_L and IK_Fingers_R. Adjust the Roll field at Bone Properties panel so that the local X axis of it is aligned with the X axes of the finger bones.

Finger handle

Give a more intuitive shape to the new bone, for example a flattened box.

Finger handle shape

Now add Copy Rotation constraint to the first bones of all fingers using the new bone (IK_Fingers_L/R) as the target. Like for finger bones enable Offset checkbox and chose Local Space for both coordinate systems.

Finger handle constraint panel

Confirm now that by rotating IK_Fingers_L/R the hand bends into fist.

The action of finger handle

The hand rig is now complete.

Upper body rig

Normally the bones of upper body (backbone and chest) do not bend individually. Also neck and head tend to bend together with upper body. For animation rig we make chest and neck to copy the rotation of backbone but keep head separate.
Select chest and add Copy Rotation constraint to it. Select backbone as target, enable Offset and chose Local Space on both coordinate system fields.

Chest constraint panel

Add similar Copy Rotation constraint to neck selecting chest as target.
Confirm that by bending or turning backbone the whole upper body bends. Because Offset is enabled we are able to move chest and neck individually as well.
The upper body rig is now complete.

Eyes

Animating eyes by hand is hard because even slightest difference between the movement of left and right eye makes character squint. To make it easier we add additional bone and make it to be the target that the character looks at. We create it as a child of Base so that even if we change the body position (either by COG, backbone or head) eyes will always look at the same point.
In Edit Mode select the end of Base and create a new bone. Disable Connected checkbox and rename it to IK_Eyes.
Move it to about 1,5m in front of and 20 cm below eyes. Give it a more intuitive shape (for example the same as knee handles).

The placement of IK_Eyes

Now select the bone of left eye and add Track To constraint to it. Chose the new bone(IK_Eyes) as the target. Because eyes are normally symmetrical we do not need to set up direction (default global Z will work).

Eye constraint panel

Add similar constraint to the right eye.
Confirm that by moving IK_Eyes the character looks at it (it should work also if we bring the target closer to face).
The eye rig is now complete.

Finalizing

Move all rig handles to separate skeleton layer.

  • Movement
  • Base
  • IK_Foot_L/R
  • IK_Toe_L/R
  • IK_Knee_L/R
  • IK_Hand_L/R
  • IK_Elbow_L/R
  • IK_Fingers_L/R
  • IK_Eyes_L/R

All skeletal bones (the ones associated wit the mesh by weights) should go to another layer. Helper bones that are never animated directly go also to separate layer.
In addition to IK handles we will animate the following skeletal bones:

  1. Pelvis
  2. Backbone
  3. Chest and Neck (if needed)
  4. Shoulders
  5. Individual finger bones (if needed)
  6. Head
  7. Jaw

Try to move all abovementioned bones and confirm that the character moves as expected.

The simple animation rig is now complete.

2 comments:

  1. Thanks.
    You should had spent a lot of time for these articles.

    Any progress about Shinya?

    markantony

    ReplyDelete
  2. Hey, Lauris, can we talk?
    markantonydev@gmail.com

    ReplyDelete