Preface to Squash and Stretch Part 1

Squash plus Stretch is one of the majority important classical principles of animation. (Maybe after persistence of vision).

It is second-hand to help sell the illusion of movement. In traditional, hand-drawn animation, squash and stretch is crucial for conveying action. In CG, it can be used more subtly to bolster character animation, or in an exaggerated fashion for a more stylized look, (see DreamWorks Madagascar).
Incorporating squash and stretch controls is not always simple, especially for very extreme deformations. Other than we can build a simple limb-stretching control that fits over a standard IK setup.

This lesson assumes so as to you know the basics of creating expressions and tradition attributes. If those are fresh to you, check out my Lean Control lesson first. You determination also need to either know the basics of creating a simple skeleton rig, or have one that you can modify. You can find a variety of free rigs to download on top of the web.

Introduction to Squash and Stretch

You be able to use whatever rig you desire to start out, as we’ll now be modifying it. There are three main things we’re concerned with:
1. The shoulder joint, which I’ve named “LtShoulder” in my view.
2. The elbow joint, “LtElbow”
3. A NURBS circle, or a few other control object, so as to the IK handle is parented to. I’ve named it “LtArm.”

Introduction to Squash and Stretch 1

Translate LtArm back and forth have the expected result on the IK arm. When LtArm is closer to the shoulder than the length of the arm, the arm bends at the elbow.

Introduction to Squash and Stretch 3

If LtArm is hyperextended, or additional from the shoulder than the distance end to end of the arm, then the arm gets left behind as the control object moves out of reach.

Introduction to Squash and Stretch 4

Ok, let’s put up the control. We need to start off by creating a distance node. Go to make > Measure Tools > Distance Tool.

 Introduction to Squash and Stretch 5

Switch to a front view. Click once on the shoulder plus a second time on the wrist to create the distance node.
You’ll see two fresh locators in the scene. These are connected to the two input of the distance node. Point constrains one of them to LtShoulder, and the other to LtArm. Make sure so as to “maintain offset” is off. You want the locators to snap into place.
Ok, now we need to write an expression. Open up the expression editor (Window > Animation Editors > Expression Editor) and create a new expression.
We’ll start by declaring some variables.
$distance = distanceDimensionShape1.distance ;
$initialDis = 5.72655 ;
$factor = $distance/$initialDis ;