[Maya]Rigging 12 - Limbs FK
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 (WIP)
- [Maya]Rigging 14 - Common Tricks (WIP)
Prerequisites
We had created FK controllers for limbs in previous article: [Maya]Rigging 08 - IK FK Switch.
But there are a few key points to note, check if they have been addressed:
- Match Pivots for FK controller. (Match Pivots must be done before Optimizing the Offset Parent Matrix, because Match Pivots causes transformation modification.)
- Optimize the Offset Parent Matrix for controllers.
- Optimize the Offset Parent Matrix for IK joints and FK joints.
- Optimize the Offset Parent Matrix for groups of joints (IK and FK).
- Pivot orientation between limb controller and group of IK joints and FK joints should be matched.
- The rotation axis order of joint and concontroller should be matched.
Limbs FK system
1, Create root controller for limbs.
2, Match Pivots of limbs root controller to FK controller.
3, Setup the hirearchy for limb root controllers.
4, Optimize the Offset Parent Matrix of ctrl_arm_root_l.
5, Disconnect the relationship between FK controller and IK FK joint group (grp_arm_l), because we will drive the FK joints directly from FK controller afterward.
6, Optimize the Offset Parent Matrix of IK FK joints.
7, Delete the Scaling connection between FK joints, because we will modify the scale of joint in another way in subsequent flow.
8, Build the driven relationship between FK controllers and FK joints for arms.
9, Now we want to drive arm FK controller using ctrl_arm_root_l, but there is an deformation issue while building the driven relationship.
Now we need to address this issue.
First move ctrl_arm_root_l to the axis origin. (to be safe unparent the *ctrl_arm_root_l* from parent node before moving.)
10, But when rotate the root controller, the left arm doesn’t move as expected.
Add an new MultMatrix node, and connect the ctrl_arm_root_l.WorldMatrix into it.
11, Switch for Rotation Orientation.
From this step, we will add a new feature for left arm: add a switch for rotation orientation between world space and local space.





12, Add a new attribute named World Orient in ctrl_arm_l.
13, Move arm_root_l_wspace into the group of IK FK joints.
14, Continue discussing the switch for rotation orientation: when move the spine FK controller, the arm doesn’t move correctly following spine controller.
First, add two empty groups as anchors for shoulders.
15, Match Transformations from shoulder world space anchor to ctrl_arm_root_l.
16, Parent (hotkey: P) anchors to the shoulder IK controller and shoulder FK controller.
17, Build the driven process for shoulder_l_ik_wspace and shoulder_l_fk_wspace.
Don’t forget the turn off the Translate Weight of BlendMatrix node.


18, But when spine switch to IK system, the World Orient of left arm doesn’t work.
19, The last problem: when rotating root controller, the translation of left arm is messed.
20, Create world space anchors for legs.
21, Set up hierarchy for leg root world space.
22, Set up hierarchy for IK world space.
23, Then build the drive process for right arm and legs follow the steps that left arm shown above.
Effect after all limbs FK system setup finished:
References
Realtime Creature Rigging Workshop (12 / 19) : FK limbs
https://www.youtube.com/watch?v=tlgjDv2oj-Y
战国战争史:晋阳之战
晋阳之战,又称三家灭知、三家灭智,是发生于周贞定王十四年(晋出公二十年)(前455年)到十六年(晋出公二十二年)(前453年),晋国四大世族大夫,智伯瑶(知伯瑶)、赵襄子、韩康子、魏桓子之间在围绕晋阳城(今山西省太原市)爆发的一场战争。最后智伯瑶被后三者围剿而死。