Hello everyone,
I'm trying to implement FBX loader in my project. I already implemented glTF loader and it works just fine, but with FBX I get strange result for some models. Here is an example of one such model:
50005011.zip
What I do:
For each node I use ofbx::Object::getLocalTransform() without any extra processing. As you can see on the image the skeleton is correct.
Each vertex I multiply by ofbx::Mesh::getGeometricMatrix() and that is enough for most models, but not for the attached one.
If I put the mesh to it's bind pose, it looks like this:
To make the model look correct it is enough to cancel the 90deg rotation, but where it comes from...
UPD
If I make changes to make it like in LumixEngine, then I get correct main mesh of the model, but the sword and other models are loaded with deformed meshes:
I set (globalTransform * geometricTransform).inverted() to mesh nodes instead of local transforms;
I multiply vertices by (globalTransform * geometricTransform), which doesn't make sense to me but somehow it fixes the main mesh.
fbxloader.zip
I think I miss something in FBXLoader::loadMesh
I solved the problem. Local transform should be used for mesh nodes. The mesh itself should be multiplied by:
(globalTransform * geometricTransform) if it is skinned.
geometricTransform if it is not skinned.
Hello everyone, I'm trying to implement FBX loader in my project. I already implemented glTF loader and it works just fine, but with FBX I get strange result for some models. Here is an example of one such model: 50005011.zip What I do:
If I put the mesh to it's bind pose, it looks like this: To make the model look correct it is enough to cancel the 90deg rotation, but where it comes from...
UPD If I make changes to make it like in LumixEngine, then I get correct main mesh of the model, but the sword and other models are loaded with deformed meshes:
fbxloader.zip I think I miss something in FBXLoader::loadMesh