Animatables and Sub-Animatables
 
 
 

The Animatable class is the base class for many of the items in 3ds Max. In addition to numerous utility functions, it contains methods related specifically to the Track View (see Track View for more information) and for enumerating the sub-animatables. A sub-animatable is an object managed by an animatable, that is itself also an animatable. For example a parameter a parameter block.

The following functions expose the sub-animatables to 3ds Max: Animatable::NumSubs(), Animatable::SubAnim() and Animatable::SubAnimName(). For more information on implementing these see the topic Enumerating and Identifying Sub-Animatables.

Below is a partial screen capture of Track View that demonstrates some sub-animatables:

A node has six sub-animatables:

If a node does not have some of these assigned (for example the material and visibility controller) these sub-animatables are NULL. Any sub-animatables that are NULL don't appear in Track View.

In the example above, the node Box01 has two sub-animatables that are non-NULL: the transform controller (labeled Transform) and the object reference (labeled Object( Box)). The other node, Box02, has three non-NULL sub-anims. These are the transform controller (Transform), the derived object (ModifiedObject), and the Material (Material01).

Note that sub-animatables may have sub-animatables themselves. This can be seen in the parameters of Box01 sub-animatables Object( Box). Objects derived from SimpleObject (like Object( Box)) have the parameter block as an animatable. The box's parameter block has six sub-animatables (Length, Width, etc.). Note also that the node Box02 sub-animatable Material #1 has sub-animatables of its own. These are its parameters and its texture maps.

Sub-animatables are often the animatable parameters of a plug-in. In 3ds Max any animated parameter has a controller to control the animation. The controller for a parameter appears in the track view. This allows the user to view the animation associated with a parameter in several formats such as in key frames, as a range of time over which the animation takes place, and graphically as a function curve.

Sub-animatable are accessed by a method that returns a pointer to the nth sub-animatables. These methods are Animatable::NumSubs(), Animatable::SubAnim( i) and Animatable::SubAnimName( i).