diff --git a/src/Fbx2Raw.cpp b/src/Fbx2Raw.cpp index 08b1440..35242ba 100644 --- a/src/Fbx2Raw.cpp +++ b/src/Fbx2Raw.cpp @@ -739,7 +739,10 @@ static void ReadMesh(RawModel &raw, FbxScene *pScene, FbxNode *pNode, const std: const FbxVector4 meshScaling = pNode->GetGeometricScaling(FbxNode::eSourcePivot); const FbxAMatrix meshTransform(meshTranslation, meshRotation, meshScaling); const FbxMatrix transform = meshTransform; - const FbxMatrix inverseTransposeTransform = transform.Inverse().Transpose(); + + // Remove translation & scaling from transforms that will bi applied to normals, tangents & binormals + const FbxMatrix normalTransform(FbxVector4(), meshRotation, FbxVector4(1.0f, 1.0f, 1.0f, 1.0f)); + const FbxMatrix inverseTransposeTransform = normalTransform.Inverse().Transpose(); raw.AddVertexAttribute(RAW_VERTEX_ATTRIBUTE_POSITION); if (normalLayer.LayerPresent()) { raw.AddVertexAttribute(RAW_VERTEX_ATTRIBUTE_NORMAL); }