The FBX SDK and Maya use the same formula to compute a transformation matrix. However, 3ds Max uses a different formula.
The FBX importers and exporters for 3ds Max automatically convert transformation matrices to and from 3ds Max.
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<span class="charspan-emphasis"> <sup>-1</sup>
* Rp -1 * Soff * Sp * S * Sp -1
Any given vector is transformed so that V<sup>'</sup> = WorldTransform * V
.
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<span class="charspan-emphasis"> <sup>-1</sup> |
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 |
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 = Rz * Ry * Rx
.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 |
ParentWorldTransform
does not contain the OT, OR, and OS of WorldTransform
’s parent node.FbxNode
object: FbxNode::GeometricTranslation
, FbxNode::GeometricRotation
, and FbxNode::GeometricScaling
.