Keywords: Animation, Maya Rigging, Limbs IK system, Limbs FK system

Maya Rigging series of articles:

Limbs IK system

1, Create IK controller for arms.

2, Set up the switch process for arm IK and FK controller.

3, Set Preferred Angle for all arm IK joints.

4, Create IK handle using default arguments.

Select start joint first, then select end joint.
Result:

5, Parent the IK handle into ctrl_arm_ik_l.

Then we can drive the arm IK using ctrl_arm_ik_l.

If rorate hand joint using ctrl_arm_ik_l, it doesn’t work as expected.

No worries, we will address this issue later.

7, Move the arm IK controller into group.

8, As shown above, the elbow move alone fixed direction when moving IK controller, is there any way to change the elbow moving direction?
Solution: Pove Vector.
Create a controller for Pove Vector: ctrl_arm_pv_l.

9, Match Transformations from ctrl_arm_pv_l to elbow joint (lowerarm_ik_l).

10, Move ctrl_arm_pv_l behind lowerarm_ik_l.

11, Create constraint for Pole Vector controller: select ctrl_arm_pv_l first, then select ikHandle_arm_l, Constrant -> Pole Vector.

Now you will see the Pole Vector X Y Z has been flagged with blue brick.

If forget to Match Transformations for ctrl_arm_pv_l before, it will cause the arm joints to twist slightly.

12, Don’t forget to optimize the Offset Parent Matrix for ctrl_arm_pv_l.

13, Now we can tweak the direction for elbow joint moving using ctrl_arm_pv_l.

14, Now will solve the issue that mentioned before: ctrl_arm_ik_l can’t rotate hand joint properly.
You see the pivot orientation of ctrl_arm_ik_l and hand joint isn’t matched.

So we need to Match Pivots of ctrl_arm_ik_l to hand joint.
Then optimize the Offset Parent Matrix of ctrl_arm_ik_l.

15, Constrain Orient from ctrl_arm_ik_l to hand joint.

Now the Rotate attributes have been flagged with blue brick.
And we can drive the hand joint properly using ctrl_arm_ik_l.

16, A new issue: When moving spine joints, the left arm IK joints don’t move follow with shoulder.

This is because we haven’t connected the arm IK joint to the ctrl_arm_root_l.
After the Offset Parent Matrix of arm IK joint has been driven by ctrl_arm_root_l, arm IK joints works now.

17, At last, move the Pole Vector controller into group.

18, From this step, we will set up the IK system for left leg.
Create two IK controllers for left leg first: ctrl_foot_ik_l, ctrl_ball_ik_l.

19, Match Pivots for the leg IK controllers.

20, Don’t forget to Set Preferred Angle for all leg IK joints.

21, Create IK handle for left leg joint:

  1. Select thigh_ik_l first as start joint, then click foot_ik_l as end joint.
  2. Select foot_ik_l as start joint, thenc click ball_ik_l as end joint.
    Result: ikHandle_foot_l, ikHandle_ball_l.

22, Create 3 Parent Constraints from the leg IK controller to the IK handle:

  • ctrl_foot_ik_l -> ikHandle_foot_l.
  • ctrl_ball_ik_l -> ikHandle_ball_l.
  • ctrl_ball_ik_l -> ikHandle_foot_l.

23, Set up the hirearchy: move the ctrl_ball_ik_l under the ctrl_foot_ik_l.

Don’t forget tht optimize the Offset Parent Matrix of controllers.
Now we can drive the left leg IK system using the leg IK controllers, it’s working like a charm!

24, Set up the hirearchy for IK handle and IK controller. (hotkey: P)

25, You see the Pitch and Yaw of rotation on ctrl_ball_ik_l works right,

but the Roll doesn’t work as expected.
Solution: Constrain Orient from ctrl_ball_ik_l to ball_ik_l.
Result:

26, Create Pole Vector controller for left leg joint: ctrl_leg_pv_l.

27, Match Transformations from ctrl_leg_pv_l to calf IK joint.

28, Tweak the location of ctrl_leg_pv_l.

29, Create constraint for ctrl_leg_pv_l: select ctrl_leg_pv_l first, then select ikHandle_foot_l, Constrain -> Pole Vector.

30, Set up the hirearchy for ctrl_leg_pv_l.

Don’t forget to optimize the Offset Parent Matrix of ctrl_leg_pv_l.

31, Build the drive process for thigh_ik_l.

Result:

32, Build the IK system for the remaining limbs as above.

References

Realtime Creature Rigging Workshop (13 / 19) : IK limbs
https://www.youtube.com/watch?v=DzmSufSxjqA
Realtime Creature Rigging Workshop (14 / 19) : Space swapping
https://www.youtube.com/watch?v=CTvZntXh7Bs

#CGTip | How Do I Build a Quadruped Rig?
https://www.youtube.com/watch?v=g-uXLNz7-70

3 ways of rigging a reverse leg (dog leg) in Maya
https://www.youtube.com/watch?v=BPgIOgqS0Hg


战国战争史:魏灭中山之战
魏灭中山之战发生于战国时代初期(前408年至前406年)期间,魏国攻灭中山国的一场战争。周威烈王十八年至二十年(公元前408—前406年),魏军在顾(今河北定州)攻灭中山国的作战。经过三年作战,中山军力量消耗已尽。魏军终于占领中山国全境。