Finger tips tutorial

How to prevent your character's finger tips from sliding when walking.
Author : David, created : 31 May 2002. Modified in December 2002.


Here are the results of my tests after the help I got from the forum at Cg-char.com.


Problem

I'm animating a character who has 4 hands walking on a large branch, kind of like a lemur. I built my rig so that all 4 hands are moving independently from the body, in order to have the hands stick on the branch.




One note about the above picture: those 5 control objects are not really parented under the scene's root. They are parented under a null that I usually call "skeleton_parent". This null is a child of the modell-null and the parent of every chains and control object (the rig). This way all the rig objects will have their values in reference with this top null. It will never be keyframed, thus, it acts like a scene root dedicated to the rig.


But the finger tips are still sliding when the character is walking! Check how did I first rig my hand :
The hand control (red circle) moves the hand during the animation, and the finger tip's effectors (blue circles) are parented under the hand control.
Now if you look at this video (maybe frame by frame playback is necessary), you'll see that the finger tips are too much dependant from the hand control.
When the hand is touching down the branch, the fingers do not move as they are parented to the hand's control. But then, when the hand starts to take off, I want to simulate the hand leaning on the fingers in order for it to rise up. At this moment, the fingers must not move. But whatever I will try, they will slide, are they are dependant from the motions of the hand control.
Ross Milne from the Cg-char forum posted a video that shows what would be the right animation for those fingers.




Solution

Should I cut the finger's effectors out of the hierarchy and parent them to the world to prevent them from sliding? That would have been a big mess. Still on Cg-char, Eric Kunzendorf gave me ideas to rig the hand in a different way.
The yellow circle is a new control object. It will hold the motion of the hand from one location of the branch to another, instead of the red control object. It will be the parent of the hand's control object (red circle) and of the finger tip's effectors (blue circles).




Now when the hand is pushing on the fingers in order to take off, the fingers do not slide anymore. How is this animation managed? When the hand is ready to take off, the main control object (yellow circle) won't move yet. It's the wrist that takes off first, following the red arrow's trajectory. During this motion, as the finger tips are parented to the yellow control object, they won't move.
When the wrist is above the fingers (giving the feeling that it has leant on the fingers), the yellow control object starts its motion to reach another location on the branch.



In Xsi 2, you must do some handlings in order to prevent the finger tip's effector from following the red control object :
First, make each finger's effectors son of the main yellow control object. This stage is not enough, because those effectors are still liable for the rest of the finger chains.
To cut them from the rest of the chain, you must select the first bone from the chain then press enter. In the dialog box that appear, select the "kinematic chain" tab, check "force IK" then uncheck "inherits rotation".
This is the same as constraining the effectors to a control object. Another alternative would be to select all your effectors and save a translation key for them. This activates the ik.


Thanks to Ross, Eric and Geoath for the ideas.