Skeletons

"Skeletons" within the context of 3D models describe a system of animation that is exactly what it sounds like. It involves using a series of "bones" linked in the previously discussed hierarchical fashion as deformers to make a mesh or group of meshes appear as if they are moving.

When we say "deformers" we do mean deformers just like the previously mentioned "bend" or "twist" deformers. The effect is the same and the principles (such as ensuring a poly count that can sustain the deformation) will still apply.

Each program will be different but the basic idea will always be to create a skeleton within a mesh and use a bind command to attach that skeleton to the mesh.

The first thing to understand about skeletons is that what we often refer to as "bones" should actually be thought of as "joints" more than anything. Some programs have gone so far as to replace the actualy terminology involved. The reason for this is that, unlike your own body, the "bone" does not exert force against the area of the mesh around it. The "bone" is actually just an axis point for a set of vertices you define to rotate around. And which vertices of a mesh are assigned to which bone is COMPLETELY up to you.

Essentially, the coordinate system of idividual bones are to vertices as entire objects are to their parent object's coordinate system.

There are two factors to creating a good skeleton.

  • The number of joints in the skeleton.
  • How those joints are positioned within the skeleton.

Under construction

Under construction.

Skeletal weighting

Truth be told making and positioning the skeleton is probably the easier (and more fun) aspect of creating a skeleton for a mesh. The second part involves attaching and binding the skeleton to particular parts of the mesh and this is, unfortunately, a much more tedious process.

Bone positioning

One of the problems you'll see in any skeleton based animation system is the unexpected way that a mesh might deform where two joints meet. This problem is especially visible in joints that turn 90 degrees or more. The elbow joints of anthropomorphi models are pobably still the best example of this effect. Let's look at a simplified version of an arm shape to start with.

So why does this happen? Remember that a basic animtion system only inolves rotating points around a joint. That means that joints do not take into account the position of other joints when exerting influence over their assigned vertices. An elbow joint doesn't know to push the vertices it shares with a shoulder joint up towards that shoulder. It will simply try to rotate them around it's own axis as much as it is allowed to.

A common technique that will help across all 3d software is to place a joint in the same position as a real-life counterpart. For instance your elbow joint doesn't exist in the middle of your arm. It exists near the outer surface (making the actual elbow). Placing a joint towards the side of a cylinder will lessen the thinning effect of the joint rotating.

Let's examine a few possible positions for a bone joint within a basic cylinder shape.

In this first image we see undeformed simple cylinders that are similar to a human arm. Note that the only difference between the 3 is the position of the "elbow" joint.
With the joint flexed at a 90 degree angle we can see the results of the differnt joint positions. The left joint shows no creasing as if this is the original shape of the object.
The middle joint shows creasing and may be suitable for rubber tubes, but does not resemble the bend of a human arm, and is the cause of the classic "noodle arm" look in many video games.
The right most joint, which has the elbow joints placed in a similar position to a real elbow joint, allows the "skin" to appear to fold against itself more realistically. Mmmmmm, realistic skin....

There are also a few program specific tweaks you can make to alleviate this problem.

Cinema 4d

  • In the Skin object, under the type dropdown, switch "linear" to "Spherical".

Autodesk 3D Studio Max

  • With the Skin Morph modifier, you can tie deformation to the movement of an object. In other words tie a bulge in the collapsing area to the joint rotation.