Limb Stretching Tutorial

By Mike Malinowski

 

   

Sample file: limb_stretch.zip

Limb stretching can be an extremely useful option when it comes to creating cartoon like characters, By default xsi gives us the ability to alter the length of any given bones and ultimatly animate it. However, if your tasked with an animation that has a large amount of limb stretching the last thing you want to be doing is worrying about setting your bones to the right legnth and having to continuosly key them.

This tutorial will open up another option which is quite quick and easy to setup, and will certainly make the animators life much more easier, and the animation certainly much more effiecent.

     
    The methodology behind this method is to simply make xsi constantly check to see if the chain effector is being pulled further than the length of both bones put together, if it is, then start increasing the bone legnths, if it is not, then keep the bones at there default length.
    So lets begin by creating a two bone chain, and to keep things simple to start with, i will set the length of each bone to 5, to do this, just select the bone, press enter to bring up the PPG, in there is the length option.
    To check if the bones need to be stretched we can use some simple expressions. So right click on the length key, and choose "set expression"
   

The expression we will need to use is this :

cond( ctr_dist( MAIN_RIG_SRT.Left_Arm_root.kine.global.pos, Left_Arm_Pos_CTRL.kine.global.pos ) > 10, ( ctr_dist( Left_Arm_root.kine.global.pos, .Left_Arm_Pos_CTRL.kine.global.pos ) / 2 ), 5 )

 

    Ok, so lets have a look at whats written there, we start by calling a condition, this is written like this cond( <the condition itself>, <to do if the condition is true>, <to do if the condition is false> )
   

 

Now we have broken it down that far, we can see that the condition itself is basically saying that "is the distance between the left arm root and the left arm pos CTRL (the effector) more than 10?" because if the distance is 10, that would mean that the bones are completely stretched, as they they are only 5 in legnth each.

    so , if they are being stretched to there limit, we need to begin increasing the bone legnth automatically, to do this is quite straight forward, we just take the distance between the root and the effector, then divide it by two, as we have two bones, then set this value as the length of the bone.
    if the distance between the effector and the root is less than 5, then we want the bones legnth to stay at the set value of 5.
   

that is all it involves. now if you move the effector, the bones will never go shorter than 5, but they will stretch as you move the effector.

Have fun creating and animating. If you have any queries regarding this tutorial then either visit my site or email me. You can also view this system working on a fully function rig which is also downloadable from my website.

Regards

Mike Malinowski

www.starlitestudios.net - hejherbert@hotmail.com