FBX SDK Programmer's Guide > Animation > Animation Data Structures >

# Animation Classes and their Interrelationships

Following are the classes that store animation-related data in a scene:

Class | Description
--- | ---
FbxScene | A scene can contain one or more animation stacks. You do not need to use animation stacks or other animation classes if there is no animation in the scene.
FbxAnimStack | The animation stack is the highest-level container for the animation data and contains one or more animation layers.
FbxAnimLayer | An animation layer contains one or more animation curve nodes that are connected to the animation curves. The animation stack must have at least one animation layer known as the base layer. For blended animation, more than one animation layer is required.
FbxAnimCurve | An animation curve, also known as function curve or FCurve defines how a FBX property (FbxProperty) of a FBX object is animated or different from the default value in the animation layer. The animation curves are connected to the animation curve nodes. The same animation curve can be connected to multiple animation curve nodes regardless of the referred FBX property. Accordingly, one animation curve can animate many FBX properties of many FBX objects. The values in the animation curves are dependent on the FBX property type and is validated by the application. Animation curves are not mandatory. To save the memory and processing time, FBX properties that are not animated can be left without using the animation curves.
FbxAnimCurveNode | An animation curve node (FbxAnimCurveNode) is the connection point between the animation curves and the FBX properties. To connect an animation curve to a FBX property, you can connect the animation curve and the FBX property to one animation curve node. An animation curve node can be connected to only one FBX property of one FBX object. FBX properties such as FbxNode::LclTranslation contain more than one value (X, Y, Z). If you create an animation curve node by calling FbxAnimCurveNode::CreateTypedCurveNode, you must specify a FBX property of the data type you need, for example, the function CreateTypedCurveNode() in LclTranslation creates an animation curve node with the necessary animation channels. In this example, channels X, Y, and Z. However, the animation curve node is not actually connected to the specified FBX property. See the animation sample program in <yourFBXSDKpath>\samples\Animation\. To allow the same FBX property to have different values on each animation layer, an animation curve node must be connected to a single animation layer. If the same animation curve node is connected to multiple animation layers, the same value is used for the FBX property in each of these animation layers.
FbxAnimCurveKey | A key or keyframe marks the beginning and the end of an animation curve.
FbxObject | A FBX object can contain zero or more FBX properties. Class FbxNode contains the properties that deal with the location of an object as a point in space.
FbxProperty | A FBX property is strongly typed data that belongs to a FBX object. To animate a scene, you can set the appropriate FBX properties (LclTranslation is the most common) contained in the FBX objects. For more information, see FBX Properties.

The following UML class diagram shows the interrelationships of classes in a FBX scene.

#### Topics in this section

- Scene Showing Interrelationships among Data Structures