Setting Up a Snake
As you can see, snakes can perform some pretty amazing things with their bodies. To animate a snake properly, you'll need to create a skeleton or other setup that provides maximum flexibility for the animator.
Your first instinct might be to create a simple chain of bones and link them together to form an IK or FK chain. This might work for a simple motion, but it has a number of drawbacks.
IK chains tend to favor a particular direction (see Figure 8). If you build a chain that arcs to the left, getting it to bend to the right will usually be very difficult or impossible.
Figure 8 IK chains tend to favor a particular direction.
FK chains can also be problematic. With the bones linked in a simple hierarchy, moving one joint will also move all the children (see Figure 9). This can be a real hassle when animating smooth undulating motions.
Figure 9 With forward kinematics, moving one joint moves all the children.
With standard IK and FK solutions seriously deficient for snake animation, you will probably need to turn to other methods. One method could be simply a collection of skeletal bones that are not linked in a hierarchy. You would simply animate the snake by moving each bone individually. However, this can be a hard to manage.
Splines are a great method for animating snakes. A simple spline looks like a snake and can be used for animation as well. Most packages support spline deformation in one form or another. Many package allow you to animate the control points of the spline directly. If this isn't the case, you can make these points into one-point clusters and animate those.
Spline deformation, also known as a wire deformer, is probably the easiest way to create such a setup. In this method, an object's deformation is controlled by a separate spline. A similar method involves building the snake using a tool such as a loft, using a series of circular outlines to define the snake's diameter and using a spline path to define the length. Most packages allow you to use this path as a control object as well; again, animating this spline deforms the body.
Both of these methods have one problem: They don't preserve the volume of the snake's body. If you accidentally move two control points too far apart, the snake will appear to stretch unnaturally.
Figure 10 A spline manipulates a snake very efficiently, but it is very easy to stretch the snake unnaturally.
Many software packages now support a tool that is generically dubbed spline IK, which uses a spline to control a chain of bones. The spline manipulates a chain of bones, which, in turn, deforms the model. This is by far the best solution for animating an animal such as a snake. The spline allows for easy manipulation, and the bones keep the creature's body from gaining or losing volume.
Figure 11 Spline IK is perfect for snakes. The spline controls the shape of the IK chain, and the bones deform the snake while keeping its volume constant.
The head of the snake definitely moves differently from the rest of the body. You'll need to set up the snake with a short "neck" area to allow the head to move independently. This will allow the snake to lift its head and look around, for example. This can be a separate chain of bones, or you can simply manipulate the controlling spline as well.