The FBX SDK and Maya use the same formula to compute a transformation matrix. However, 3ds Max uses a different formula.
NoteThe FBX importers and exporters for 3ds Max automatically convert transformation matrices to and from 3ds Max.
FBX and Maya
The following formula represents how the 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 the 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, and 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 Rx, Ry, and Rz (each being matrices). For example, for the default rotation order of XYZ, R = Rx * Ry * Rz
3ds Max
The following formula represents how 3ds Max computes the transformation matrix for a node. All the terms in the formula 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 the 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 scaling |
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, and 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.
Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License