Scene Showing Interrelationships among Data Structures

This example helps in understanding how the data structures are interrelated in a typical scene.

The example scene in the figure has three FBX objects (FBXObject0, FBXObject1, and FBXObject2), each of which have one FBX property (Obj0Property, Obj1Property, and Obj2Property) that can be animated. These three FBX properties have default values of a, b, and c respectively. The data structures are connected to each other through object-to-object (OO) connections and object-to-property (OP) connections as indicated in the figure.

The example scene has one animation stack that contains three animation layers. The following table explains how the animation layers and other data structures affect the value of the FBX property.

Animation Layer Description Value of FBX Property
AnimationLayer0

AnimationLayer0 is the base layer, which is connected to one animation curve node (CurveNode0). This animation curve node is not connected to any animation curves, so it is not used to apply animation to a FBX object. However, this animation curve node is connected to one FBX property (Obj0Property).

In AnimationLayer0, the Obj0Property’s value of a is overridden by the animation curve node’s value of aa0.

Generally, in the absence of an animation curve or when ignoring the animation curve, the value in the animation curve node overrides the value of the FBX property.

AnimationLayer1

AnimationLayer1 is connected to two animation curve nodes: CurveNode1 and CurveNode2.

  • CurveNode1 is connected to one FBX property (Obj0Property) and to one animation curve (AnimationCurve0).
  • CurveNode2 is connected to one FBX property (Obj1Property) and one animation curve (AnimationCurve1).

In AnimationLayer1, the value of Obj0Property is neither a nor aa1, but determined by the values over time in AnimationCurve0.

In AnimationLayer1, the value of Obj1Property is neither b nor bb1, but determined by the values over time in AnimationCurve1.

AnimationLayer2

AnimationLayer2 is connected to one curve node (CurveNode3), which connects one animation curve (AnimationCurve0) and one FBX property (Obj1Property).

In AnimationLayer2, the value of Obj1Property is neither b nor bb2, but determined by the values over time in AnimationCurve0.

NOTE:AnimationCurve0 is connected to CurveNode1 and CurveNode3. Therefore, when the scene is evaluated, AnimationCurve0 affects two different FBX properties (Obj0Property and Obj2Property) of two different FBX objects (FBXObject0 and FBXObject1) in two different animation layers (AnimationLayer1 and AnimationLayer2). Additionally, how the animation data is evaluated depends not only on the animation curves, but also on the blend mode and the blend weight of each animation layer. See Blending Animation for more information on blending.

The FBX SDK animation system provides a lot of flexibility, but it is your responsibility to ensure that the interrelationships among the data structures are valid.