Stretchable IK Leg

Hi everyone!

This tutorial will show you how to create stretchable IKsolver that can help you to create unusual character or whatever you want. You can apply this method to some of your works. This tutorial is just a guide to show you how to use constrain point and orient and I hope it will be helpfull for you.

We're going to create joints like in the picture on the right. You can see we got a lot of joints, so I give you my joint's position and joint numbers so you don't get confused, because we're gonna use a lot of constrains.

1. We create joints like in picture above. Make sure you remember your joint's number.

2. Create: ikRPsolver at joint 7 and joint 9 like in the picture.

3. Create: two locators and move to joint 1 and joint 3. Make sure they snap to the joints (ctrl+v).

Select locator1 and joint 7 then constrain point.

Select locator1 and joint 1 then constrain point.

Select locator1 and joint 10 then constrain point.

Select locator2 and joint ikRPsolver then constrain point

Select locator2 and joint 3 then constrain point

Select locator2 and joint 12 then constrain point

Note: you have to select which you want to control first.

1. After we finishing with the constrain points, we have the joints like in the picture below.

2. Select joint 7 and joint 1 then constrain point.

Select joint 10 and joint 1 then constrain point.

Select joint 8 and joint 2 then constrain point.

Select joint 11 and joint 2 then constrain point. (According to the red arrows.)

3. Select loactor 1 and joint 11 then constrain point.

Select loactor 2 and joint 11 then constrain point. (According to the red arrows.)

1. Now we're gonna do some constrain orient. Why we should to do that? Because this tutorial is showing you how to make stretchable leg so we might want to use constrain pole vector to control the knee. That's why we have to do constrain orient too. (I will show you how to use constrain orient for control knee in the next tutorial.)

2. Create: Distance tool (Create-->Measure-->Distance Tool) and put it in front of the leg (it doesn't matter where exactly, put it somewhere). Now we have locator 3 and locator 4.

Select all locators (1,2,3,4) and open hypergraph. Then go to Input and Output Connections menu on Hypergraph icon menu (small hierarchy picture). We're gonna see a hierarchy like in the picture. Then drag locatorShape 1 to distanceDimen like in the picture and choose "other ". Open connection editor then in the Output list select "worldposition" and in the Input list: "start point". Then drag locatorShape 2 to distanceDimen too and choose "other", open connection editor, then in the Output list select "worldposition" and in the Input list:"end point".

Now the distance tool is already put between locator 1 and locator 2. Now you select locator 2 and move it down like in the picture. Make sure iksolver stretches just enough for the three bones to appear as a single straight line. You have to write down the iksolver's distance, for example my distance was 13.539. Now return to the old pose (ctrl-Z or something like that).

Select joint 2 and go to Channel shapes. Select joint_pointconstraint1 (in the left red circle), you can see two weights appear below the channel (joint8W0 and joint11W1), set joint11W1 to 0 (in the right red circle).

Select joint8W0 and open expression editor and type the following:

if(distanceDimensionShape1.distance
<13.54){
joint2_pointConstraint1.joint8W0
= 1;
joint2_pointConstraint1.joint11W1
= 0;
}else{
joint2_pointConstraint1.joint8W0
= 0;
joint2_pointConstraint1.joint11w1
= 1;

Note: You have to use your result distance instead of 13.54. If you change the < with > the joint will go in wrong direction.

And now we hide joints numbered 7,8,9 and 10,11,12 (and the distance tool if you want).

Fig. 011