FBX SDK Programmer's Guide > Nodes and the Scene Graph > FBX Nodes >

# Computing Transformation Matrices

The FBX SDK and Maya use the same formula to compute a transformation matrix. The formula used by 3ds Max is different.

NoteThe FBX importers and exporters for 3ds Max automatically convert transformation matrices to and from 3ds Max.

FBX and Maya

Here is how FBX SDK and Maya compute the transformation matrix for a node:

WorldTransform = ParentWorldTransform * T * Roff * Rp * Rpre * R * Rpost -1 * Rp -1 * Soff * Sp * S * Sp -1

Where this term: | Is a 4 x 4 matrix that contains:
--- | ---
WorldTransform | Transformation matrix of the node
ParentWorldTransform | Transformation matrix of the parent node
T | Translation
Roff | Rotation offset
Rp | Rotation pivot
Rpre | Pre-rotation
R | Rotation
Rpost -1 | Inverse of the post-rotation
Rp -1 | Inverse of the rotation pivot
Soff | Scaling offset
Sp | Scaling pivot
S | Scaling
Sp -1 | Inverse of the scaling pivot

Notes:

- Computations are performed from left to right.
- The effect of the formula is that any given vector is first translated, then rotated, then scaled.
- The R matrix takes into account the rotation order. Because of the mathematical properties of the matrices, R is the result of one of the possible combinations of Ry, Ry and Rz (each being matrices also). For example, for the default rotation order of XYZ, R = Rx * Ry * Rz

3ds Max

Here is how 3ds Max computes the transformation matrix for a node. All the terms in the equation are the same as in FBX and Maya, except for the three terms that represent geometric transformation:

WorldTransform = ParentWorldTransform * T * R * S * OT * OR * OS

Where this term: | Is a 4 x 4 matrix that contains:
--- | ---
WorldTransform | Transformation matrix of the node
ParentWorldTransform | Transformation matrix of the parent node
T | Translation
R | Rotation
S | Scaling
OT | Geometric transform translation
OR | Geometric transform rotation
OS | Geometric transform translation

Notes:

- Computations are performed from left to right.
- Geometric translation, geometric rotation, and geometric scaling relate to the object-offset concept in 3ds Max. These geometric transformations are applied to the node attribute after the node transformations.
- Geometric transformations are not inherited: ParentWorldTransform does not contain the OT, OR, OS of WorldTransform’s parent node.
- Geometric transformations are implemented in FBX SDK as three properties of FbxNode objects: FbxNode::GeometricTranslation, FbxNode::GeometricRotation, and FbxNode::GeometricScaling.