FBX SDK Programmer's Guide > Animation > Animation data structures >

# Migrating to the new data structures for animation

The FBX SDK animation system has been completely redesigned.

Take nodes, take node containers, current takes, and FCurves have all been replaced by animation stacks (FbxAnimStack), animation layers (FbxAnimLayer) animation curve nodes (FbxAnimCurveNode), and animation curves (FbxAnimCurve).

New class | Deprecated classes and concepts | Comments
--- | --- | ---
FbxAnimStack | FbxTakeInfo, take, current take | The animation stack replaces the take as the highest-level container for animation. For animated scenes, you need at least one animation stack. FbxAnimStack manages the same data as KFbxTake. If you needed multiple takes before, now you need multiple animation stacks. An animation stack has a stack of animation layers, e.g., Layer0, Layer1, Layer2, ... etc.
No equivalent | KFbxTakeNode |
FbxAnimLayer | No equivalent | An animation layer is a container for animation curve nodes. Unless you are using blended animation, all you need is one animation layer. This first layer (Layer0 in our example) is often called the base layer)
FbxAnimCurveNode | KFCurveNode | An animation curve node connects one animation curve to one FBX property or channel. The new class is simpler than KFCurveNode because there is no need for hierarchies.
FbxAnimCurve | KFCurve | The new class has essentially the same interface as KFCurve.
FbxAnimEvaluator | FbxNode::GetGlobalFromCurrentTakeNode and similar functions that FbxNode and many other classes inherited from KFbxTakeNodeContainer | The new evaluation system provides the same behaviour as the old one, but is much better encapsulated. You can write your own version by deriving from FbxAnimEvaluator. See Evaluating the animation in a scene.

The old animation classes can still be used but have been deprecated (see Avoid deprecated classes and functions), with the following exceptions:

- FbxTakeInfo has not been deprecated. This means that you can still retrieve take data from an FBX file (into FbxTakeInfo objects) without loading the entire file. See Extracting take data (FbxTakeInfo) from a file).
- You can initialize a FbxAnimStack object with the data stored in a FbxTakeInfo object. See Extracting animation data (FbxTakeInfo) from a file and FbxAnimStack::Reset.