A03   BOUNCE THROUGH TO THE NEXT STAGE

Bouncing Ball A This exercise will make sure you make good use of the Graph Editor.

Bouncing Ball A Find a Ball:
Getting motion reference for a bouncing ball must be reasonably easy as most small boys have a foot ball you could borrow.   You could treat yourself and buy a cheap plastic one.   Bounce it on a reasonably hard surface and take a note of the height and frequency of each bounce.   See what happens when it bounces of a wall.   When you are confident with your observations, make a start on this exercise.

THE BRIEF
Bouncing Ball A:

Artistic Elements Covered: Timing & Gravity
Technical Elements Covered: Hierarchies, Key framing and Using the Graph Editor)


Scene file NOT provided.   Sequence Duration 4 to 8 seconds.

Create a sphere one unit radius and a wall out of a cube scaled at X=16 Y=8 Z=1 and translated to X=0 Y=4 Z=-8.
You can let the grid represent the floor.
Animate the ball falling into frame, rolling and bouncing along the floor and off the wall.
Squash and stretch the ball to emphasise the motion.   Portray only the natural forces and natural movement of the ball.

You are required to rotate the ball and squash and stretch it.   You would find this difficult if you left the sphere as it is.   This combination of motion can only be achieved if you put your sphere into a proper structure (a simple rig).   See Rigging School / Pivot Points.

ball A outliner

Use a simple Hierarchy:
Select your sphere and rename it "ball_roll".
Select your sphere and group it into a new transform node Main Menu Bar Edit / Group
Select this new group and rename it "ball_squash_stretch"
Select the new group and group into a new transform node;
Select this new top group and rename it "ball_move_rotate"

Your "ball_roll" should have a parent called "ball_squash_stretch", which in turn should have a parent called it "ball_move_rotate".   The pivot points for these new groups should be left at the origin. When you come to execute your animation you can use "ball_roll" for the rolling rotations, the "ball_squash_stretch" for squash and stretch using the XYZ scale channels and the top parent "ball_move_rotate" can be used to move the ball around.   By adjusting the rotation of this top node you can easily set the direction of the squash and stretch below. (Vectorise the scalings below).
Your Outliner should look something like the above.


Squash and Stretch.
Characters or entities that react only to natural forces like the simple bouncing ball can be animated automatically using dynamics.   In Maya the Rigid Bodies system is very effective at simulating this type of motion.   Squash and stretch can also be simulated, but with a little more difficulty.   When you use squash and stretch on the ball you are actually enhancing what happens to a real one.   Most real balls distort so little that you would find it difficult to detect.   Also, and more importantly, you are using squash and stretch as part of the motion grammar of animation which enhances the movement of this otherwise simple sequence.   The squash, in this case, amplifies the collision with another object or surface and serves to anticipate the oncoming change in direction.   The stretch along the line of motion depicts speed and amplifies the direction of motion.   It is an intimation of motion blur.
Squash and stretch are used also for two other grammatical entities which are those of compression and expansion under load. We will look at these later on.


This is what John Lassetter says about squash and stretch:
"When real objects move only totally rigid ones, e.g., a chair, remain rigid in motion.   Living creatures always deform in shape in some manner.   For example, if you bend your arm, your bicep muscles contract and bulge out.   They then lengthen and disappear when your arm straightens out.   The squashed position shows the form flattened out and the stretched position shows the form extended.   An important rule is that the volume of the object should remain constant at rest, squashed, or stretched.   If this rule is not obeyed, then the object appears to shrink when squashed and to grow when stretched.   A classic example is a bouncing ball, that squashes when it hits the ground and stretches just before and after.   The stretching, while not realistic, makes the ball appear to be moving faster right before and after it hits the ground.   When an object squashes or stretches, it appears to be made of a pliable material, if it doesn't then it appears rigid.   Objects that are partially pliable and partially rigid should have only the pliable parts deform.   This can also be used in the rapid motion of objects.   If motion is slow, then the objects overlap between frames and the eye smoothes out the motion.   But if the motion is too fast, such that there is no object overlap, then the eye sees separate images and the object appears to strobe.   A solution is to stretch the object to retain the overlap and smooth motion."


Use your creative eye to set the camera to a well balanced medium view of the action.
Here is a dose of that visual psychology for you.
Do not start the action straight away.  Let the audience look at the environment first for at least one second before you introduce your first and only character (the Ball).   The audience need to familiarise themselves with the environment before you bombard them with action.
When the ball comes to a standstill at the end, hold on this scenario for at least two seconds before ending the sequence.   The audience will not mentally retain the last part of the animation if you cut right on the end of the action. Their brains are still catching up with what has just happened.   Do not take the static ball away too soon as you might be removing the memory of the last second of your beautiful animation.

One Possible Version.

Unfortunately these Gifs tend to run rather slowly.

One Possible Version
Suggested Animation Curves for Ball.

The animation curves for this sequence are as follows.   The initial timing comes from the translate Y channel of the top group, "ball_move_rotate" which was keyed first.   The top arch of each bounce has a flat tangent and each arch diminishes in value roughly by half as the bounce sequence progresses.   The frequency of the bounce also gets shorter through the progression.   The bottom tangents of this channel have been broken and the impact with the ground made greater by increasing the tangent angles to as near vertical as the curve will stand without distorting the top arches.   The translate X and Z channels all have linear keys until the end of the sequence when flats are used on the last three keys to "slow out" and "slow in" the ball.

Translate X Y and Z


The group below, "ball_squash_stretch", uses the scale Y channel, which was keyed first, to implement the squash and stretch.   The scale X and Z are keyed in such a way as to try and keep the total volume of the ball looking constant and are identical.   You can see that these three scale channels are quite busy.
Scales X Y and


The other channel keyed on this group is the rotate X channel which looks after the squash/stretch direction of the group, (the squash/stretch vector).   The keys all use spline tangents apart from the last one.
Rotate X to vector the squash/stretch


The last to animate is the rotate X channel of "Ball_roll" which is copied from the translate Z channel of the top group and pasted in to this channel and the values adjusted to match the rotation to the floor.   I have put a stripe on the ball so that you can see this rotation.
Rotate X to roll the ball


Ghosting the Sequence.

The following pictures show the ball replaced with a disc and ghosted at 20 frames so that the spacing between frames can be checked.   This can be helpful when trying to detect glitches or other errors.
Sequence Ghosted for 20 frames Sequence Ghosted for 20 frames


This site and all the learning materials are the copyright of Henry Lutman.   The sole purpose of the site and downloads are to aid the teaching of 3D Computer Animation and related topics.   Please do not reproduce any of the content of this site, or any of the downloads for purposes other than to use as a guide to learning, without the written permission of Henry Lutman.
Web Site Author: Henry Lutman.     Web Site Editor: Martin Capey
Lutman Animation Copyright Henry Lutman