[Maya]Rigging 14 - Space Swapping
Keywords: Animation, Maya Rigging, Controller, Pole Vector, Space Swapping, IK Controller
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 - Ankles & Heels
- [Maya]Rigging 17 - Clavicles & Fingers
- [Maya]Rigging 18 - Common Tricks
Asset mentioned in articles: UE5 Rig
Space Swapping - Pole Vector Controller
1, Create a locator named swappos_arm_ik_l.
2, Match Transformations from swappos_arm_ik_l to the Pole Vector controller (ctrl_arm_pv_l).
3, Parent locator swappos_arm_ik_l to the arm IK controller (ctrl_arm_ik_l).
4, Don’t forget optimize the Offset Parent Matrix of swappos_arm_ik_l.
5, Build the driven process for ctrl_arm_pv_l.
the blendMatrix isn’t the required node in current step, we will use this node later.
6, When rotate the root controller, the ctrl_arm_pv_l moved to the wrong position.
Blend the root controller transformation using multMatrix node.
7, Create attribute named Follow in ctrl_arm_pv_l.
8, Build the driven process for the switch Follow.
9, When switch to the World Space, the ctrl_arm_pv_l moved to the wrong position.
Solution:
Connect swappos_arm_ik_l to the blendMatrix node, then disconnect it, then the transfromation of swappos_arm_ik_l was remained in.
Space Swapping - Hand IK Controller
1, Create a switch named Follow in hand IK controller ctrl_arm_ik_l.
2, Create 3 locators: swappos_torso_l, swappos_hip_l and swappos_clavicle_l.
3, Match Transformations from these 3 locators to the ctrl_arm_ik_l.
4, Parent these 3 locators to ctrl_torso, ctrl_hip_ik and ctrl_arm_root_l. (hotkey: P).
5, Build the driven process.
Connect ctrl_arm_ik_l to the blendMatrix node, then disconnect it to remain transformation value into the blendMatrix node.
Build the drive process for legs likes above.
Issue: IK Controller Rotation with Pole Vector
After the Pole Vector has been built, there’s a deformation issue while rotate foot IK handle:
Solution:
1, Disconnect connnection for swappos_foot_ik_l and ctrl_leg_pv_l.
2, Then move down the ctrl_leg_pv_l to the forward of foot.
Because we just the move up and down, forward and back, not left and right, so we don’t need to delete Pole Vector constraint. If want to move right and left, the Pole Vector constraint need to be removed and re-created after changing position.

3, Optimize the Offset Parent Matrix of ctrl_leg_pv_l.
4, Unparent the swappos_foot_ik_l.
Match Transformations from swappos_foot_ik_l to ctrl_leg_pv_l.
Then place the swappos_foot_ik_l into ctrl_foot_ik_l.
5, Optimize the Offset Parent Matrix of swappos_foot_ik_l.
6, Re-connect the node for swappos_foot_ik_l and ctrl_leg_pv_l.
7, Now we can swith Follow type for ctrl_leg_pv_l.
Now we can rotate ctrl_foot_ik_l a lot without deformation issues.
References
Realtime Creature Rigging Workshop (14 / 19) : Space swapping
https://www.youtube.com/watch?v=CTvZntXh7Bs
战国战争史:韩灭郑之战
韩灭郑之战,是公元前423年至前375年间韩国为了灭亡郑国而进行的多场战役的总称。
韩灭郑之战是战国时期一次重大的兼并战争,韩国通过多次进攻消灭了具有悠久历史的郑国,国力迅速上升,成为战国七雄之一。但当时韩国地处黄河中游地区,东部、北部被魏国包围、西有秦国、南有楚国,国土面积十分狭小,因而发展空间极其有限。