We have already covered creating controls for the legs of our character. We now want to tackle the spine area of the character. This is a source of many headaches for setup artists. The reasoning is that the spine is not an independent joint chain like the legs are. Instead, the spine reacts to the hip movement as well as the chest/arm movement often in an opposite manner.
Maya�s spline IK handle solution to the spine is one solution to work with. However, I have found it better served when working with an independent joint chain such as a tail or long neck. It�s functionality becomes a little stifled when working with opposing forces such as the hips and chest areas. Plus, the fluid motion of the spine is not restricted to one axis but incorporates all three. This can be difficult to achieve sometimes with the spline handle. Therefore, the approach we will take is one of a combination of constraints along with set driven keys. This reduces controller clutter since we can place many of the driver attributes on one controller.
Create some control objects:
First, create a series of controllers starting with a hip controller. Use any object/locator you feel is intuitive (you can duplicate the existing CntrlBody locator). Name the controller CntrlHip and place it behind the root joint. Change its pivot point to the root joint. Group it to itself calling the new group CntrlHipG. This is known as a "freedom node" which we can access later to apply driven keys or expressions to. Take the CntrlHip and duplicate it moving the new controller towards the chest area. Name it CntrlChest. Once again, group the CntrlChest to itself. Have both the pivot points at the center of the object. Make sure the CntrlChestG is a child of the CntrlHip (not the CntrlHipG). Create another controller for the head naming it CntrlHead. Finally, we already have the CntrlBody from the last lesson when linking the ankle controls to the ground plane using a geometry constraint.
These controllers along with the freedom nodes provide a simple construct from which we will add functionality to the spine.
Begin with Orient Constraints:
We will now begin to connect the spine controllers with the spine joints using some constraints. We are going to first focus on the orientation changes of the spine joints then deal with the translation later. Select the CntrlHip then the root joint. Go to Constrain > Orient. This allows the root be easily manipulated in its rotation by the CntrlHip controller.
Select the CntrlChest then the cervical joint and go Constrain > Orient. Do the same for the CntrlHead and head joint.
Now rotate the CntrlHip and notice the skeleton respond. Do the same with the CntrlChest. This is the initial layer of control.
Using Set Driven Key:
Having the CntrlHip selected create three new attributes (each as float with a min of �10 and a max of 10 with 0 as the default):
1. SpineRollX
2. SpineRollY
3. SpineRollZ
We will now use the Set Driven Key to connect the spine joint rotations with the corresponding attribute. Go to Animate > Set Driven Key > Set > Options. Have the SpineRollX as the Driver and the lumbar joint�s rotation X as the Driven.
Keyframe the rotation in X for the lumbar and thoracic joints with the SpineRollX at 0. With the SpineRollX at 10 have the lumbar joint rotate to �80 and the thoracic at 50. Set keyframes for both joints. With the SpineRollX at -10 have the lumbar joint�s rotation in X at 45 and the thoracic�s at -50.
The positions of the spine seem extreme in the pictures above but you should always set your driven keys a little extended from what you think the character can actually attain as a pose. This way the animator will have the ability to hit any pose required in the storyboards or by the simulation.
Repeat this same process for the SpineRollZ and SpineRollY attributes setting keys for both the lumbar and thoracic joints as the Driven joints.
Working on the upper spine:
We will now do the same process as above with CntrlChest controller. Once again, create three custom attributes (float with min at �10, max at 10 and default at 0). Name them ChestRollX, ChestRollY and ChestRollZ.
As before, go to Animate > Set Driven Key > Set > Options and have the CntrlChest as the Driver. The joints will we be driving are the thoracic and cervical joints. With the ChestRollX at 10 have the thoracic joint�s rotation in X keyframed at 40 and when the ChestRollX is at �10 have the joint�s rotation keyframed at �40. Continue with the ChestRollY and Z attributes driving the corresponding rotation of the thoracic joint. Remember when posing the thoracic joint in the Y and Z have the rotation a little beyond what you feel the character can actually accomplish.
Add some rotation on the cervical:
To add some additional rotation (to be used primarily later in balancing the skeleton out when the hips translate) we will use a set driven key on the cervical joint by accessing the CntrlChest. Have the CntrlChest as the Driver and Driven of the set driven key. For the Driver select the ChestRollZ and the driver as the rotation in Z. When the ChestRollZ is at 10 have the rotation in Z of the ChestCntrl at 30. Set a keyframe. When the ChestRollZ is �10 set the rotation in Z of the ChestCntrl to �30. Notice that even after adding the set driven key to the ChestCntrl you can still rotate it in the Z and have the affect transferred to the clavicle joint via the orient constraint.
By having the rotation of the actual cervical joint restricted to the CntrlChest by the orient constraint we can manipulate the shoulders independently of the spine. But by adding the additional control on the thoracic joint we have increase the functionality of the skeleton.
Maya�s spline IK handle solution to the spine is one solution to work with. However, I have found it better served when working with an independent joint chain such as a tail or long neck. It�s functionality becomes a little stifled when working with opposing forces such as the hips and chest areas. Plus, the fluid motion of the spine is not restricted to one axis but incorporates all three. This can be difficult to achieve sometimes with the spline handle. Therefore, the approach we will take is one of a combination of constraints along with set driven keys. This reduces controller clutter since we can place many of the driver attributes on one controller.
Create some control objects:
First, create a series of controllers starting with a hip controller. Use any object/locator you feel is intuitive (you can duplicate the existing CntrlBody locator). Name the controller CntrlHip and place it behind the root joint. Change its pivot point to the root joint. Group it to itself calling the new group CntrlHipG. This is known as a "freedom node" which we can access later to apply driven keys or expressions to. Take the CntrlHip and duplicate it moving the new controller towards the chest area. Name it CntrlChest. Once again, group the CntrlChest to itself. Have both the pivot points at the center of the object. Make sure the CntrlChestG is a child of the CntrlHip (not the CntrlHipG). Create another controller for the head naming it CntrlHead. Finally, we already have the CntrlBody from the last lesson when linking the ankle controls to the ground plane using a geometry constraint.
These controllers along with the freedom nodes provide a simple construct from which we will add functionality to the spine.
Begin with Orient Constraints:
We will now begin to connect the spine controllers with the spine joints using some constraints. We are going to first focus on the orientation changes of the spine joints then deal with the translation later. Select the CntrlHip then the root joint. Go to Constrain > Orient. This allows the root be easily manipulated in its rotation by the CntrlHip controller.
Select the CntrlChest then the cervical joint and go Constrain > Orient. Do the same for the CntrlHead and head joint.
Now rotate the CntrlHip and notice the skeleton respond. Do the same with the CntrlChest. This is the initial layer of control.
Using Set Driven Key:
Having the CntrlHip selected create three new attributes (each as float with a min of �10 and a max of 10 with 0 as the default):
1. SpineRollX
2. SpineRollY
3. SpineRollZ
We will now use the Set Driven Key to connect the spine joint rotations with the corresponding attribute. Go to Animate > Set Driven Key > Set > Options. Have the SpineRollX as the Driver and the lumbar joint�s rotation X as the Driven.
Keyframe the rotation in X for the lumbar and thoracic joints with the SpineRollX at 0. With the SpineRollX at 10 have the lumbar joint rotate to �80 and the thoracic at 50. Set keyframes for both joints. With the SpineRollX at -10 have the lumbar joint�s rotation in X at 45 and the thoracic�s at -50.
The positions of the spine seem extreme in the pictures above but you should always set your driven keys a little extended from what you think the character can actually attain as a pose. This way the animator will have the ability to hit any pose required in the storyboards or by the simulation.
Repeat this same process for the SpineRollZ and SpineRollY attributes setting keys for both the lumbar and thoracic joints as the Driven joints.
Working on the upper spine:
We will now do the same process as above with CntrlChest controller. Once again, create three custom attributes (float with min at �10, max at 10 and default at 0). Name them ChestRollX, ChestRollY and ChestRollZ.
As before, go to Animate > Set Driven Key > Set > Options and have the CntrlChest as the Driver. The joints will we be driving are the thoracic and cervical joints. With the ChestRollX at 10 have the thoracic joint�s rotation in X keyframed at 40 and when the ChestRollX is at �10 have the joint�s rotation keyframed at �40. Continue with the ChestRollY and Z attributes driving the corresponding rotation of the thoracic joint. Remember when posing the thoracic joint in the Y and Z have the rotation a little beyond what you feel the character can actually accomplish.
Add some rotation on the cervical:
To add some additional rotation (to be used primarily later in balancing the skeleton out when the hips translate) we will use a set driven key on the cervical joint by accessing the CntrlChest. Have the CntrlChest as the Driver and Driven of the set driven key. For the Driver select the ChestRollZ and the driver as the rotation in Z. When the ChestRollZ is at 10 have the rotation in Z of the ChestCntrl at 30. Set a keyframe. When the ChestRollZ is �10 set the rotation in Z of the ChestCntrl to �30. Notice that even after adding the set driven key to the ChestCntrl you can still rotate it in the Z and have the affect transferred to the clavicle joint via the orient constraint.
By having the rotation of the actual cervical joint restricted to the CntrlChest by the orient constraint we can manipulate the shoulders independently of the spine. But by adding the additional control on the thoracic joint we have increase the functionality of the skeleton.
Author: sdb1987
Submitted: 2005-09-25 00:51:59 UTC
Tags:
Software: Maya
Views: 39,455
Related Items
-
FBX Pistol Starter: 3D Character Animations for Autodesk, MotionBuilder, Maya
$4.99 (USD) -
Professional Studio Scene Setup for 3ds Max & V-Ray 3D Model
$20.00 (USD) -
Casual Female 02 Character Rigged for Maya 3D Model
$39.00 (USD) -
Professional Studio Light & Scene setup for V-Ray 3D Model
$20.00 (USD) -
Casual Female 03 Character Rigged for Maya 3D Model
$39.00 (USD) -
Casual Female 04 Character Rigged for Maya 3D Model
$39.00 (USD) -
fantasy character mamiya 3D Model
$80.00 (USD) -
Arab Rig for Maya with Ncloth simulation for Maya 0.0.1
$99.00 (USD) -
Human Character Rig in 1 minute (skeleton, rig & bind skin in 1 minute) 3.1.0 for Maya (maya script)
$25.00 (USD)