[Maya]Rigging 10 - Spine IK
Keywords: Animation, Maya Rigging, Spine IK system, Spine FK system
Maya Rigging series of articles:
- [Maya]Rigging Overview
- [Maya]Rigging 01 - Joint
- [Maya]Rigging 02 - Skinning
- [Maya]Rigging 03 - Visualization
- [Maya]Rigging 04 - Controller
- [Maya]Rigging 05 - Attributes
- [Maya]Rigging 06 - Foundations of IK
- [Maya]Rigging 07 - Advanced IK
- [Maya]Rigging 08 - IK FK Switch
- [Maya]Rigging 09 - Spine FK
- [Maya]Rigging 10 - Spine IK
- [Maya]Rigging 11 - Neck and Head
- [Maya]Rigging 12 - Limbs FK
- [Maya]Rigging 13 - Limbs IK
- [Maya]Rigging 14 - Space Swapping
- [Maya]Rigging 15 - Arm Twist
- [Maya]Rigging 16 - Common Tricks
Stage 1: Spine FK system
See: [Maya]Rigging 09 - Spine FK
Stage 2: Spine IK system
1, Create controllers for IK joints: ctrl_hip_ik, ctrl_shoulder_ik, ctrl_chest_ik and ctrl_pelvis_ik.
2, Setup the visibility for IK controllers in Node Editor for IK FK switch.
3, Unparent all IK controllers, because we need to manipulate the transformation of them later.
4, We will Reset Transformations later, but make sure that the Offset Parent Matrix has been reset before do that.
You can tweak the rotation of controller if it’s orientation was wrong after Offset Parent Matrix.
5, Then Reset Transformations all controllers to place them at the origin of coordinate axes in world space.
6, Duplicate the IK joints that we created earlier.
7, Create an empty group at origin of coordinate axis, and we will use it as a reference afterward.
8, Match Pivots of joints to the origin of coordinate axis. (Check Rotate and Orientation)
9, Offset Parent Matrix of all IK joints to clean the transformations. The controller’s Offset Parent Matrix had been cleaned before.
10, Create a curve for spine IK system, we use EP Curve Tool to create it.
11, Hold V, then left click all the joints one by one, hit enter to finish it at end.
12, Create IK Spine Handle.
All the joints of spine must be clicked when creating Spine IK Handle, otherwise the skeleton will deform sightly.


13, Bind Skin for IK joints. Select Selected joints for Bind to.
14, From this step, we will demonstrate how to bind controller which pivot was modified.
Match Translation from shoulder controller to ikjoint_shoulder first.
15, Now we will modify the pivot orientation of ctrl_shoulder_ik, make sure Bake Pivot Orientation was checked before do that.
16, Then move the ctrl_shoulder_ik to the origin of coordinate axis.
17, Freeze Transformations for ctrl_shoulder_ik to zero the translation and rotation, Local Rotate Pivot and Local Scale Pivot also will be zeroed at the same time.
18, Then Match Translation from ctrl_shoulder_ik to ikjoint_shoulder again.
19, Match Pivots of shoulder controller to the IK joint. (Don’t foret to check Orientation)
At this example, pivots between shoulder controller and IK joint was matched before, but to be safe we should do it again.
20, Offset Parent Matrix the ctrl_shoulder_ik to clean transformation, the Offset Parent Matrix of shoulder IK joint had been cleaned before.
21, Connect the offsetParentMatrix from ctrl_shoulder_ik to ikjoint_shoulder in Node Editor.
22, Setup the controller in same way for other joints: chest and pelvis.
23, But when you rotate the IK controllers, ctrl_shoulder_ik works right, but ctrl_chest_ik and ctrl_pelvis_ik can’t drive the the upper body.
24, Don’t forget to optimize the Offset Parent Matrix for IK controllers after hierarchy setup.
25, Sometimes the transformation weight for points of spine IK curve may be low, we can adjust the weight for the target curve points in Component Editor.
26, As shown in the following image, there’re two attributes named Roll and Twist.
We expect to the IK controllers roll and twist the upper body as attributes Roll and Twist do.
But if we rotate axis Y for ctrl_chest_ik, rotation of upper body doesn’t execute as expected.
27, A new problem is that ctrl_hip_ik doesn’t work as expected, because we haven’t setup the driven process for ctrl_hip_ik.
We want to drive the pelvis joint using ctrl_hip_ik in the next step.
28, In next step we move the all controllers into root controller, because we want to blend the rotation of root controllers into spline IK.
29, But there’s a deformation issue when move the IK controllers into ctrl_torso.
30, To address this issue, we need to unparent all the child nodes under the ctrl_torso temporarily, and unparent the ctrl_torso from root controller temporarily.
31, Now we can move the IK controllers into ctrl_torso safely.
32, An new issue: when we rotate the root controller, the upper body doesn’t rotate as expected.
Because we haven’t setup the IK FK control for legs, so there’s an issue that lower body doesn’t rotate following root controller, but no worries, after setting IK FK switch for legs (See: [Maya]Rigging 08 - IK FK Switch), legs can follow with root controller.

33, The final hierarchy at the ending of current stage.
References
Realtime Creature Rigging Workshop (10 / 19) : Spine FK & IK systems
https://www.youtube.com/watch?v=5AHmfuYkcMY
战国战争史:长平之战
长平之战是东周战国时代最大规模的战役。秦军60万军队“伤亡过半”,但成功歼灭了赵军45万士兵。这场战役成为战国局势的转折点。赵国作为当时仅次于秦的国家,在战败后迅速衰落。此后,六国再也无法单独对抗秦国。40年后,秦灭六国。