Elastic Reality: Squash and Stretch
All objects and characters exhibit an elastic quality as they are animating. This phenomenon is referred to as squash and stretch; the simplest example is a bouncing ball. When the ball hits a surface, it squashes upon impact and then stretches out as it bounces off the surface. Figure 5 illustrates this effect.
Figure 5 The dynamics of the squash and stretch can be applied, in an appropriatemeasure, to every animating object in your shot. Using it creates the appearanceof elasticity, mass, weight action, and reaction, thereby creating a dynamic,lifelike appearance in your animation.
Squash and stretch are considered secondary animation movements. After youcomplete the animation of the primary up/down movement of the ball, you'lladd the squash and stretch animation to give the ball its bounce.
When you first begin animating an object, you are not trying to create allthe little details of secondary or overlapping movement, although you will keepthem in mind. Establishing the basic gross motion of the animation is the firststep.
Click on the Animate button and move the Time Slider to frame30. Using the z-axis of the Ball object, move it up in the Camera viewuntil it reaches the top of the screen as shown in Figure 6. When you make thismove, you'll see keyframe dots appear at frame 0 and at frame 30 in theTrack Bar.
Change to Right view, move the Time slider to frame 45, andmove the ball down so that it passes about 1/3 of the way through the groundplane, as shown in Figure 7. The Absolute: World Z value for this position is15the same as the beginning position. Setting this third keyframecompletes the rough animation and sets the ball up for the squash and stretchadjustments that you'll add in a moment. Exit Animation mode and save yourfile.
Figure 6 Establishing the gross movement is also called rough animation. The grossmovement in this case is the basic up/down motion of the ball.
Figure 7 Having the ball pass below the ground plane now saves a step later when yousquash it to create a more realistic bounce.
Using Track View to Create an Animation Cycle
If you wanted the ball to bounce and slowly dribble to an end, you would haveto animate it using more keyframes, decreasing the time between frames andshortening the distance of the bounce in the z-axis. However, for this exercise,you'll use the Parameter Curve Out of Range Types to tell max to create anongoing repeating cycle.
Click on the Track View icon to open the Track View Editor, shown in Figure 8.
When you are working with the Track View Editor, sometimes it is confusing to see every piece of max information concerning the animated elements of the shot. Using the Filter dialog box, you can tell max to show just the specific pieces that you want to work with in the Scene Hierarchy list. Click on the Filters button to open the Filters dialog box, and click on Animated Tracks in the Show Only section, as shown in Figure 9.
Click OK to close the Filters dialog box and return to the main Track View interface. The Scene Hierarchy list now contains three itemsWorld, Sound, and Objects.
Click on the plus sign next to Objects to open it up, and click on the subsequent plus signs that open next to Ball and Transform to open them up as well. Then click on Position under Transform, as shown in Figure 10. You'll see three dots in the keyframe editor. These are the same three keys that you created in the Track Bar while you were animating the ball.
Click on the Parameter Curve Out-of-Range Types button. When its dialog box opens, choose Cycle from the options, as shown in Figure 11.
Figure 8 The Track View is the main control center of all animation in max. Itcontains all the information regarding the animation of all the max materials,lights, objects, and so on in your shot.
I've been using the Track View Editor for almost four years now and still haven't begun to scratch the surface of its full capability. In many ways, it is like max itself in this respecta full-function, multilayered, deep CGI animation tool. The best way I've found to use Track View is to do as much as I can in the other related tools in the main interface Track bar, Motion Command Panel, and so onand then use Track View and its capabilities for more sophisticated and complex animation control.
Figure 9 Use the other filters in this dialog box to customize what the Track View displays and how it displays its animation information.
The Filters dialog box is similar to the Display command panel in function. Selecting Animated Tracks in the Show Only section of the Filter dialog box tells max to show just the information for the objects that are animated in the shot. In this case, the ball is the only animating object.
Figure 10 When you select Position in the hierarchy, several icons in the main menu bar of the Track View Editor become active, and the animation track for the position animation highlights in white. To change any animation in the Track View Editor, you have to select the specific parts that you want to change in the hierarchy list of animated elements.
Figure 11 Parameter Curve Out-of-Range Types are used to define how an object's animation behaves outside the range of keys you've defined.
You've created the first three keyframes of the ball bounce animation. When you chose Cycle as the option in the Parameter Curve Out-of-Range Types dialog box, you told max to repeat those first three frames throughout the rest of the length of the animation. If you play your animation now, you'll see that the ball bounces in a repeating cycle of those frames. Using Parameter Curve Out-of-Range Types enables you to turn short segments of animation into the following different patterns:
Constant is the default Out-of-Range type that max assigns to your animation. Use this type when you don't want any type of repeating cycle before or after the range of keyframes.
Cycle is the type to choose for simple repeating animation. Make sure that the beginning and end frames are in the same position. If they aren't, you will see a jump or hiccup in your animation flow.
Loop repeats the animation in your keyframe range and smoothes the transition or interpolation between the last keyframe and the first keyframe of the next cycle, creating an ongoing loop. In the case of the ball you are animating, because the first and last keyframes are virtually the same, using Loop will create the same effect as Cycle.
Ping Pong repeats your animation by alternating between a forward and a reverse repeat of the keyframes, just like a ping-pong ball traveling back and forth on a table.
Linear is not a repeating cycle type. Use it when you want an animation to flow through a range of keys at a constant velocity.
Relative Repeat repeats the animation defined by the keys but offsets each repetition by the value of the end key. Animation using relative repeat will build on each cycle, growing more extreme as the cycle repeats over time.
Take a moment now and try out each range type to see the effect they have on your ball bounce. Learning how to use these effectively can save you a lot of time by allowing max to help you create your repeating cycles. You can minimize the Track View as you do this, but don't close it; you'll be coming back to it later on.
Using the Motion Command Panel to Squash the Ball
The next step is to add the effect of squash to your bouncing ball. This will create the kind of elastic reality that a real ball would have as it collides with the ground. You'll add a basic squash here and refine it to include some stretch after anticipation is discussed. Click on the Motion Command Panel, as shown in Figure 12.
Figure 12 The Motion Command Panel provides precision controls to develop your animation. You can use it to create, delete, and modify the keyframe animation values for the position, rotation, and scale of your animated objects.
The Motion Command Panel, coupled with the Track Bar and Time slider, provides a simpler version of the Track View Editor in the main max interface. The important thing to be aware of is what mode you are in when you are creating and deleting the keys for your animation. You have three modes to choose from (refer to Figure 12).
The two boxes marked In and Out are the controls used to tell max how the animation between the keyframes you create are to be interpolated. You'll learn more about this in few moments in the discussion of Ease In and Ease Out. To create the squash needed for the animation, you'll use the Scale controls in the Motion Command Panel.
When you use the Motion Command Panel to create Position, Rotation, and Scale (PRS) keys, you don't have to be in Animation mode.
Move your Time slider to frame 0, and change the PRS mode to Scale, as shown in Figure 13.
Click on Scale in the Create Key section of the PRS Parameters rollout, and change the Z Value to 35, as shown in Figure 14. You'll see the ball squash in the z-axis, creating the proper form that it needs when it is in contact with the ground. Because the ball is a constant animation, you'll create a keyframe with a z-axis value of 35% every time the ball reaches its lowest position at frames 45, 90, 135, 180, 225, 270, and 315. This creates the effect of the ball squashing upon bounce impact.
Move the Time slider to frame 10, and once again click on Scale in the Create Key section of the PRS parameters rollout to create a Scale keyframe at frame 10. Change the Z Value back to 100.
Move the Time slider to frame 45, create another Scale key, and change the value to 35%.
Repeat this process creating z-axis: 100% keyframes at frames 55, 100, 145, 190, 235, and 280. Create z-axis: 35% keyframes at frames 90, 135, 180, 225, 270, and 315.
Figure 13 The Scale section is grayed out because no keyframe has been created at frame 0.
Figure 14 The values in the XYZ boxes are percentages. A value of 100% means that the ball is at its full original shape; 0% reduces it to a pancake, and anything above 100% stretches it out. If you view the ball in the right-side view, you'll see that it is now just touching the ground plane.
Save your file and play your animation. It's animating nicely, but the interpolationhow the frames move between the keyframesneeds to be changed. You will do this after a brief discussion about Slow In and Out and Anticipation.