Scroll to top
Read Time: 9 min

In this tutorial, new Cgtuts+ author Ranjit Singh Rana will be covering the process of setting up a "Reverse foot lock" rig in Maya. First Ranjit will show us how to create it using a 'chain of joints' and then again using 'groups'. Finally Ranjit will show us how to setup an "IK/FK switch" for an arm. We'll also take a look at adding 'Set Driven Keys' for both the Reverse foot lock and IK/FK switch.

Step 1

To start, first create a joint setup as mentioned in the image below, and rename the joints accordingly. So Hip to 'Hip_jnt', Knee to 'Knee_jnt', Ankle to 'Ankle_jnt', Ball to 'Ball _jnt' and Toe to 'Toe_jnt'.

Step 1 ImageStep 1 ImageStep 1 Image

Step 2

Now go to the Skeleton menu and click on 'IK Handle Tool' options, and then from the 'IK Handle Settings' select IKRPsolver and create a IK handle from the Hip to Ankle joint.

Step 2 ImageStep 2 ImageStep 2 Image

Step 3

Again go to the IK Handle settings and select IKSC solver and create two IK handles, first from the 'Ankle' to 'Ball' joint, and the second from the 'Ball' to 'Toe' joint. So now the 'IKHandle1' is from the 'Hip' to 'Ankle joint', the 'IKHandle2' is from the 'Ankle' to 'Ball' joint and the 'IKHandle3' is from the 'Ball' to 'Toe joint'.

Step 3 ImageStep 3 ImageStep 3 Image

Step 4

Now create a chain of joints as mentioned in the image below for the joint setup, and rename it accordingly.

Step 4 ImageStep 4 ImageStep 4 Image

Step 5

Select the 'Rl_base' joint and Press Ctrl+A, from the Attribute editor go to 'Drawing Overrides' and check 'Enable Overrides', and choose a different color.

Step 5 ImageStep 5 ImageStep 5 Image

Step 6

Also increase the radius size from attribute editor, increase the radius for 'Rl_toe', 'Rl_ball' and 'Rl_ankle' the same way. Now it will be easier to select any joint from this hierarchy independently.

Step 6 ImageStep 6 ImageStep 6 Image

Step 7

Select 'Rl_base' and move the joint up while pressing the X key on the keyboard (snap to grid), now 'Rl_toe' is snapped with 'Toe_jnt', 'Rl_ball' with 'Ball_jnt and 'Rl_ankle' with 'Ankle_jnt'.

Step 7 ImageStep 7 ImageStep 7 Image

Step 8

Now select the 'Rl_ankle' joint first, and then select 'IKHandle1' and go to the Constrain menu and click on 'Point' constrain. Using the same method, apply a point constrain between 'Rl_ball' and 'IKHandle2' and 'Rl_toe' and 'IKHandle3'.

Step 8 ImageStep 8 ImageStep 8 Image

Step 9

Next, create a controller like the one shown in the image below, 'Rl_base', press D first, then V while holding the first key, then snap the pivot of the curve to the 'Rl_base' using the middle mouse button. 'Freeze transform' from 'Modify' and Delete by type History from edit menu.

Step 9 ImageStep 9 ImageStep 9 Image

Step 10

Now select the 'feet_cntrl' curve and the 'Rl_base' and 'Parent' constrain them from the constrain menu.

Step 10 ImageStep 10 ImageStep 10 Image

Step 11

Now select the the 'Feet_cntrl' curve, and from the channel box, click on 'Add attribute' from the edit menu.

Step 11 ImageStep 11 ImageStep 11 Image

Step 12

Add attribute 'Ball_roll', keep the data type on Float, set the Min value to -5, Max to 10 and Default to 0 (as shown.)

Step 12 ImageStep 12 ImageStep 12 Image

Step 13

Add another attribute 'Toe_roll', keep the data type on Float, set the Min value to -5, Max to 10 and Default to 0

Step 13 ImageStep 13 ImageStep 13 Image

Step 14

Now go to Animate>Set Driven Key>Set... from animation module.

Step 14 ImageStep 14 ImageStep 14 Image

Step 15

Select 'feet_cntrl' and click on the 'Load Driver' from the 'Set Driven Key' option box. Select the 'Rl_ball' joint and click on the 'Load Driven'. Now you'll see 'feet_cntrl' in the left pane of Driver section and their attributes in the right pane, including two attributes that we've added 'ball_roll' and 'Toe_roll'. 'Rl_ball' in the left pane of the Driven section and their attributes in the right pane.

Step 15 ImageStep 15 ImageStep 15 Image

Step 16

Now select the 'ball_roll' attribute of 'feet_cntrl' and the 'Rotate Z' attribute of 'Rl_ball', rotation axis can be confirmed by rotating the 'Rl_ball' joint in the viewport. Now click on the key and you'll see the 'Rotate Z' attribute of the 'Rl_ball' turns pink, this means the connection has been created for the default value of the 'ball_roll' attribute.

Step 16 ImageStep 16 ImageStep 16 Image

Step 17

Now select 'feet_cntrl', which can also be selected by clicking it in the 'Set Driven Key' option, and set the value of 'Ball roll' to 10, select 'Rl_ball' and rotate it on the Z axis, or manualy give it some value. In my case it's 40 and than click on key.

Step 17 ImageStep 17 ImageStep 17 Image

Step 18

Again select the feet_cntrl, and set the value of ball roll to -5 and Rotate Z of Rl_ball to -15.

Step 18 ImageStep 18 ImageStep 18 Image

Step 19

Now select 'Rl_toe' from the outliner and Create Set Driven Keys as we've created for 'Rl_ball'. When 'Toe roll' is 0 click key on the default value of 'Rl_toe'.

Step 19 ImageStep 19 ImageStep 19 Image

Step 20

When 'Toe roll' is at 10 Rotate Z of 'Rl_toe' is 70.

Step 20 ImageStep 20 ImageStep 20 Image

Step 21

And when 'Toe roll' is -5 Rotate Z of 'Rl_toe' is -8. And here we are done with the first method of Reverse foot lock.

Step 21 ImageStep 21 ImageStep 21 Image

Step 22

This is the second method of creating 'Reverse foot lock'. Follow Steps 1 to 3 and then rename the 'IKHandle 1' to 'Ankle_ik', 'IKHandle 2' to 'Ball_ik' and 'IKHandle 3' to 'Toe_ik', as shown.

Step 22 ImageStep 22 ImageStep 22 Image

Step 23

Now select the 'Ankle_ik' and group it by pressing Ctrl+g, rename the group 'Ankle_IK_grp', and snap the pivot of this group to the ball position.

Step 23 ImageStep 23 ImageStep 23 Image

Step 24

Select the other two IK handles 'Ball_ik' and 'Toe_ik' and group them. Rename this group 'Ball_toe_ik', and snap the pivot of this group to the same ball joint position.

Step 24 ImageStep 24 ImageStep 24 Image

Step 25

Now select these two groups 'Ankle_ik_grp' and 'Ball_toe_ik' and group them by pressing Ctrl+g, rename this group 'Toe_ik_grp', and snap the pivot of this group to the toe joint.

Step 25 ImageStep 25 ImageStep 25 Image

Step 26

Create one more group of 'Toe_ik_grp', rename it 'Heel_ik_grp', snap the pivot of this group to the ankle joint position.

Step 26 ImageStep 26 ImageStep 26 Image

Step 27

Now create a controller curve 'Foot_cntrl' as we did previously in Step 9, and snap the pivot of this controller curve to the ball joint position. Freeze transform and delete the history of 'foot_cntrl'.

Step 27 ImageStep 27 ImageStep 27 Image

Step 28

Select the 'Heel_ik_grp' from the outliner, and then Shift select the 'foot_cntrl' and press P on the keyboard. You can lock and hide the scale attributes of foot_cntrl.

Step 28 ImageStep 28 ImageStep 28 Image

Step 29

Select the 'foot_cntrl' and five attribute. First, set the 'Ball_roll' to Min 0, Max 10, default 0.

Step 29 ImageStep 29 ImageStep 29 Image

Step 30

Second attribute, 'Toe_roll' Min 0, Max 10, Default 0.

Step 30 ImageStep 30 ImageStep 30 Image

Step 31

Third attribute, 'Toe_tap' Min -10, Max 10, Default 0.

Step 31 ImageStep 31 ImageStep 31 Image

Step 32

Fourth attribute, 'Toe_twist', Min -10, Max 10, Default 0.

Step 32 ImageStep 32 ImageStep 32 Image

Step 33

And the last attribute 'Heel_twist', Min -10, Max 10, Default 0.

Step 33 ImageStep 33 ImageStep 33 Image

Step 34

Now go to Animate>Set Driven Key>Set, and select 'foot_cntrl' and click on 'Load Driver'. Select 'Ankle_ik_grp' and click on 'Load Driven'. Create a set driven key between the 'Ball_Roll' attribute of 'foot_cntrl' and the 'Rotate X' attribute for the 'Ankle_ik_grp'.

Step 34 ImageStep 34 ImageStep 34 Image

Step 35

When the 'Ball Roll' of 'foot_cntrl' is at 10, set the 'Rotate X' of 'Ankle_ik_grp' to 30 and key it.

Step 35 ImageStep 35 ImageStep 35 Image

Step 36

Now select the 'Toe_ik_grp' and click on Load Driven. Create a Set Driven Key between the 'Toe Roll' attribute of 'foot_cntrl' and the 'Rotate X' for the 'Toe_ik_grp' and key it.

Step 36 ImageStep 36 ImageStep 36 Image

Step 37

When the 'Toe Roll' of 'foot_cntrl' is at 10, set the 'Rotate X' of 'Toe_ik_grp' to 60 and key it.

Step 37 ImageStep 37 ImageStep 37 Image

Step 38

Select the 'Ball_toe_ik group' and click on Load Driven. Create a Set Driven Key between the 'Toe_tap' attribute of 'foot_cntrl' and the 'Rotate X' for the 'Ball_toe_ik'.

Step 38 ImageStep 38 ImageStep 38 Image

Step 39

In the same way, create a set driven key between the 'Toe_twist' attribute of 'foot_cntrl' and the 'Rotate Y' attribute of 'Toe_ik_grp.

Step 39 ImageStep 39 ImageStep 39 Image

Step 40

And the 'Heel_twist' attribute of 'foot_cntrl' with 'Rotate Y' of 'Heel_ik_grp'. And with this, you're done with the second method of the 'Reverse foot lock'.

Step 40 ImageStep 40 ImageStep 40 Image

Step 41

Now, from here I’m going to explain the 'IK/FK switch' for the arm. Create a joint setup for the arm and rename it according to the image below..

Step 41 ImageStep 41 ImageStep 41 Image

Step 42

First let's create a controller for forward Kinematics (FK), create three circles and snap them to the shoulder, elbow and wrist joints. Rename them 'Shldr_cntrl', 'Elbow_cntrl' and 'Wrist_cntrl' respectively.

Step 42 ImageStep 42 ImageStep 42 Image

Step 43

'Freeze transformations' and delete the history of all three.

Step 43 Image

Step 44

Select the 'Shldr_cntrl' and group it by pressing Ctrl+g on the keyboard, rename this group 'Shldr_cntrl_grp', follow the same process for the 'Elbow_cntrl' and the 'Wrist_cntrl'.

Step 44 ImageStep 44 ImageStep 44 Image

Step 45

Select these groups individually and 'center pivot' for each one from the Modify menu, (Modify>Center Pivot).

Step 45 Image

Step 46

These groups can be used to adjust the curve controller, by aligning properly to the joint.

Step 46 ImageStep 46 ImageStep 46 Image

Step 47

Now select 'Shldr_cntrl', and Shift select the 'shoulder joint'. Then click on the 'Orient Constrain Options' from the constrain menu (Constrain>Orient).

Step 47 ImageStep 47 ImageStep 47 Image

Step 48

Check 'Maintain offset' and click on the 'Add' button. Following the same process, 'Orient Constrain' the other two joints with the corresponding curves.

Step 48 ImageStep 48 ImageStep 48 Image

Step 49

Select the 'Elbw_cntrl_grp', and middle mouse drag and drop it on the 'Shldr_cntrl'. This way the 'Elbw_cntrl_grp is now a child of the 'Shldr_cntrl'. In the same way make the 'Wrist_cntrl_grp' a child of the 'Elbw_cntrl'.

Step 49 ImageStep 49 ImageStep 49 Image

Step 50

Now add a IKHandle with the IKRP solver selected, from the Shoulder to the Wrist joint.

Step 50 ImageStep 50 ImageStep 50 Image

Step 51

Create a controller as shown below, rename it 'IK_cntrl'. Then select it, and shift select the 'IKHandle' and 'Point Constrain' it from 'Constrain' menu.

Step 51 ImageStep 51 ImageStep 51 Image

Step 52

Create a controller and rename it 'Pole_vectr'. Place it as shown in the image below and Freeze Transformation, delete it's History, then select it and Shift select the IKhandle. Than click on 'polevector' from the Constrain menu.

Step 52 ImageStep 52 ImageStep 52 Image

Step 53

Create one more controller and rename it 'IK_FK'. Add the “IK_FK” attribute in the channel box and keep the data type as Enum. Change the Enum names from Green and Blue, to IK and FK respectively.

Step 53 ImageStep 53 ImageStep 53 Image

Step 54

Now go to Animate>Set Driven Key>Set, select the 'IK_FK' controller and Click on 'Load Driver' from the 'Set Driven Key' option.

Step 54 ImageStep 54 ImageStep 54 Image

Step 55

Select 1. 'Shldr_cntrl', 2. 'Elbw_cntrl', 3. 'Wrist_cntrl', 4. 'IK_cntrl', 5. 'Pole_vectr' and 6. 'IKHandle1' in the outliner and click on Load Driven.

Step 55 ImageStep 55 ImageStep 55 Image

Step 56

Now with IK highlighted for the IK FK attribute of 'IK_FK' controller.

Step 56 ImageStep 56 ImageStep 56 Image

Step 57

Turn visibility OFF for the 'Shldr_cntrl', 'Elbw_cntrl' and 'Wrist_cntrl', and then Key them.

Step 57 ImageStep 57 ImageStep 57 Image

Step 58

Keep the visibility ON for the 'IK_cntrl', 'IKHandle' and 'Pole_vectr', and also keep the 'IK Blend' set to 1 for the IKHandle, and Key them.

Step 58 ImageStep 58 ImageStep 58 Image

Step 59

Now when 'FK' is highlighted for 'IK FK' attribute.

Step 59 ImageStep 59 ImageStep 59 Image

Step 60

Turn visibility ON for the 'Shldr_cntrl', 'Elbw_cntrl' and 'Wrist_cntrl' and Key them.

Step 60 ImageStep 60 ImageStep 60 Image

Step 61

Turn visibility OFF for 'IK_cntrl', 'IKHandle' and 'Pole_vectr', and set the 'IK Blend' to 0 for the 'IKHandle', and key all of them.

Step 61 ImageStep 61 ImageStep 61 Image
And that concludes the tutorial, I hope you enjoyed it!

Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Design & Illustration tutorials. Never miss out on learning about the next big thing.
One subscription. Unlimited Downloads.
Get unlimited downloads