Monday, 7 November 2011

Constraints, Pole Vectors and Drivers

In this post, I shall document how I constrained all the controllers to the rig, as well as creating the pole vectors.  I shall also talk about creating drivers for the hands to make them clench and do other things as well.  The first thing I did was to parent the "S" Clavicle controls to the IK handle, using a Point constraint.  A point constraint was correct to use in this case, as I had moved the pivot of the controller so that it snapped to the IK handle.
Once I had constrained both controllers, I grouped them in a group called 'ClavicleGroup', which would make it easier to manage these controllers in the outliner, and also if I wanted to keyframe both controllers simultaneously. 
 Next I parented both the ClavicleGroup and the neck to the back control, as the neck and shoulders would need to move along with the back.
 It would be too fiddly for the animator to move the IK handles to control the wrist, so to make the job easier, I parented the IK handles of each wrist to their respective arm controller.
 As I had with the knees, it is important that the elbow had the ability to move and change angle, independently of the wrist and shoulder, so to do this, I created pole vectors.
 I created these simply by duplicating the pole vector controls in the knees, snapping the to the elbows and then moving them back out.  I constrained these controls to their respective wrist IK handles using a Pole Vector constraint.
 The wrist would need to be able to rotate independently as well, so in order to do this, I selected this wrist control, which is the Circle curve, just inside the cube shaped arm control.
 I constrained this wrist control to the wrist with an Orient constraint, meaning that it now influenced the rotation of the wrist.
 Another thing which I tried but that I am not fully confident with was writing code to add an expression.  The purpose of doing so here would be to give the rotation of the wrist control a limited amount of influence of the forearm as well.  This is because the forearm also rotates, whenever the wrist rotates.  In nature, the rotation of the forearm is influences the rotation of the wrist, but as this is IK that we are dealing with, the reverse of these principles applies.
 Now when I rotate the wrist, the hand and forearm will both rotate.
The last thing that I shall describe in this post is the creation of the finger movement, with the finger joints being the driven and the wrist control being the driver.  I did not really follow the tutorial for this part, as I feel confident with setting driven keys, and furthermore, I wanted to exercise some creativity in this part.  As this is an alien, I felt I was free to play with the physicality of this character.

I set a maximum value of 10, a minimum value of -10 (unlike the tutorial which states to set it at 0) and a default value of 0.  When the fist is set to 10, it would severely clench, whereas when the driver is set to -10, the fingers would curl back, towards the knuckles.

As well as a fist attribute, I created a new attribute called Spread, which ranges from -5 to 5.  When set in the positive direction, the fingers spread out wide, whereas if they are set in the negative, they narrow.  Here is a video of my finger drivers in action.
Once I have finished the rig, I may set individual drivers for each of the fingers and do the same for each of the toes.  I may have mentioned my desire to set this up a few posts back, but I'm not sure.

No comments:

Post a Comment