Squashy Stretchy Bouncy Ball Rig

I've tried out a few tutorials and played around with a few ideas to create a squashy stretchy bouncy ball rig, but so far this has been my favourite. The is taken from Jason Schleifer's Animator Friendly Rigging who uses a non-linear squash deformer to create the squash and stretch.

1. Import your ball model and create two controls, one to control the movement of the ball and another to control the squash.
2. Freeze your transforms on the controls so that everything is set to 0 and ensure that they have been named appropriately.
3. Select the move control and then the ball mesh and create a Parent Constraint.
4. Hide and lock the scale and visibility attributes in the Channel Box for the move control.
5. Change the rotation order of the move control to zxy.
6. To create the squash, select the ball mesh and create a non-linear squash deformer.
7. Parent the squash deformer under the squash control.
8. Add an attribute to the squash control called Squash Stretch.
9. Connect the squash control's Squash Stretch attribute to the squash deformer's factor attribute.
10. Hide the squash node and hide and lock the scale and visibility attributes in the channel box for the squash control.
11. Change the rotation order on the squash control to zxy.
12. Group the squash stretch node to itself, and point constrain that to the move control.

makeRoll Command (Maya)

I love this, and it will come in very handy with the bouncy ball rig that will follow this post. One day I will work out how it works, but for now its just awesome.

makeRoll *object* *radius* *is it a cube?* *translation in y value*

eg

makeRoll ball_mesh 0.5 false 1

Rotation Orders Explained

The first thing I want to mention is how to set the correct rotation order. Unfortunately this was something that I didn't understand until fairly recently, but now I know I wish to document it for future reference. So here we go...

Rotation order - The order in which the rotation axis will be documented.
The last axis in the rotation order will carry all the others with it.

For example - XYZ
The rotation of the Z axis will carry the X and Y axis with it.
The rotation of the Y axis will carry the X axis with it, but will have no effect on the Z axis.
The X axis will have no effect on anything but itself.

The important axis - the one that affects everything else - goes at the end.
The least important - the one that affects only itself - goes at the beginning.

The best way to work out which rotation order to use is to experiment. Try it out to discover which one will work best.

Introduction

An animation rigger is responsible for:
1. Animation requirements of the character/prop
2. Interaction and manipulation of the controls
3. Technical requirements of the character/prop

Controls - things to consider:
1. Simple and easy to use
2. Obvious to see what they can do
3. Have the correct rotation orders
4. Named correctly
5. Easily transferable - in case the model is updated
6. Only keyable for those you want the animator to use
7. Should be the only things the animators can select and key
8. You should be able to move the rig away from its origin and have it still work

Finally, it's important to consider exactly what you want the rig to do before you start rigging it. It's also extremely helpful to try out 'experimental' rigging to work out the pros and cons of a particular rigging method before you build the final rig.

So onwards to my rigging discoveries...