Advanced FK Spine Control Tutorial.

This tutorial shows you how to set up two handles to locally control the spine avoiding the use of spline IK. It's a relatively simple method that just uses a series of Set Driven Keys.

Prerequisites:

  • Intermediate knowledge of Maya.
  • Knowledge of creating skeletons.
  • Knowledge of Set Driven Key.

Skeleton Setup:

1) Create a skeleton with multiple spine segments. Add a simple rib cage, this aids skinning and helps visualize the chest better.

 

2) For the hips create a hip joint just below the root joint and connect your thigh (or leg) joints to this rather than directly to the root. Also create the first spine joint just above the root joint.

 

3) Create a Group called Transform. Either snap it to the root joint or position it between the feet.
4) Freeze Transformations
5) Parent your skeleton under it.

   

 

   

Spine Control Setup:

We need to create some control handles to control the position of the hips and shoulders.
1) Create an empty group and name it Hips_Master.
2) Point Snap it to your hips joint.
3) Freeze Transformations.
4) Under Attributes set the local Pivot co-ords to somewhere in front of the hips (out side the character mesh). Also set the Display Handle and Enable Overrides attributes. Set the display colour to yellow.
5) Parent under Transformation Group

 

6) Create another empty group and name it Hips_Local. Point snap it to the Hips joint and Freeze Transformations.
7) Move the local pivot behind the skeleton this time. Parent under Hips_Master.

   

8) Create another empty group and name it Shoulders_local. Point Snap it to the spine joint that your clavicle (or shoulder) joints are parented to.
9) Move the local pivot behind the skeleton. Parent under Hips_Master.

   

Now to set up the Set Driven Key attributes:

For Hips_Master:
1) Select the Root joint and bring up the Set Driven Key dialog. 
2) With the Root joint as the driven select the Hips_Master selection handle and set this to Driver.
3) Select the translate X attribute for both Driver and Driven.

4) Translate Hips_Master in Z by 1 unit and then translate the Root by 1 unit in Z (if the Root joints local Z points in a different direction use the corresponding axis).
5) Key Set Driven key for translate X.
6) Set Hips_Master and Root back to 0.
7) Key Set Driven Key again.
8) Repeat for Y and Z.

9) Now go to the Hypergraph.
10) Select the Hip_Master and click on the Up and Down Stream Connections.

   

11) For each of the Animcurve nodes you will need to set Pre and Post Infinity to "Cycle with Offset".

 

 

   


For Hip_Local:
1) For local hip movement one wants to flex the lower spine and hips only, leaving the upper spine straight and the shoulders roughly in their original position.
2) Select the Hips_local control as the Driver and select all your spine joints, neck joints and Root as Driven.
3) Translate the Hips_local 1 unit in Z.
4) Translate the Root 1 unit in Z and Set Driven Key for Root - TranslateZ.
5) Now rotate the joints in the lower lumber region of the back (the joints that would be below the rib cage) so that the top of the spine points roughly where it's original position was.
6) Set Driven Key (for the respective axis).
7) You may also want to rotate the neck joints so the head continues to look straight on.
8) Set Driven Key for these also.

9) Set the Z Translation of the Hips_local back to 0 and set the rotations of the spine, neck and Hip joints back to 0
10) Set Driven Key for the Root Translation and for the spine, neck and Hip rotations.
11) In Hypergraph set the Pre and Post Infinities to Cycle with Offset.
12) Repeat for X.
13) For Y you just need to translate the root.

Now if you select the Hips_local control handle and move it around the hips will follow the movement while the top of the spine attempts to point to it's original position.

For Shoulders_local:
1) Select the spine and neck joints and set them as Driven in the Set Driven Key Dialog. Select the Shoulders_local control as the driver.
2) As with Hips_local translate the Shoulders_local 1 unit in Z and X and rotate the spine and neck joints accordingly. Keep the base of the spine straight and also try and keep the spine segments where the rib cage would be relatively straight although some rotation should occur. Rotate the spine segment which the shoulders are parented to and adjust the neck joints accordingly.
3) Set Driven Keys.
4) Reset joint rotations and Shoulder_local control position and Set Driven Key.
5) Set the Pre and Post Infinities to Cycle with Offset.

You should now have three control handles that if you grab will move the hips and shoulders and also allow you to key the spine and neck joints individually as well!