- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I am using the FbxCluster::TransformLinkMatrix to get the global transform of joints in the scene.
I have Imported the FBX file into maya, and put the mesh/bones into bind pose -- and it looks like below:
Which is correct.
I then do the following snippet of code on all joints in the hierarchy to get their global binding transform matrixs, and print out the transform respectively
FbxAMatrix boneBindingTransform;
cluster->GetTransformLinkMatrix(boneBindingTransform);
auto name = StringUtil::ToStdString(linkName);
StringUtil::AppendLine(*logger, indent, "Global Joint Bind Transform for %s", name.c_str());
StringUtil::AppendTRS(*logger, indent, boneBindingTransform);
The joint in question, (which is highlighted int he picture above produces the following global transform:
Global Joint Bind Transform for M_Lip_TopJ
Translate x: 0.00000 y: 152.45087 z: 13.54772 w: 0.00000
Rotate x: -5.02226 y: 0.00000 z: 0.00000 w: 0.00000
Scale x: 1.00000 y: 1.00000 z: 1.00000 w: 0.00000
(Translate = matrix.GetT(). Rotate = matrix.GetR(); Scale = matrix.GetS();)
I've now created a new node, not part of the hierarchy, and using the global transform information to position it in maya, and here is where the node appears, -- which is incorrect. A picture below is the resulting node:
both it's rotation, and translation are off, as can see above.
What's going on? I'm confused how Maya can correctly put the Model into bind pose, but yet the data that I'm getting from FBX appears to be broken. Is there anything else that could be required to multiply to the global transform to put it into the correct place?
-----------------------
Note
-----------------------
I've done the exact same thing, on multiple other FBX files, with animations but only singular meshes + and everything then produces correct Bind Global Transform.
Solved! Go to Solution.