Add being able to set origin of mesh to the local mesh origin. fix centering several meshes.

This commit is contained in:
Chandler Cox
2023-10-25 09:57:51 -05:00
parent 806590d1c3
commit 73694cba6c
5 changed files with 101 additions and 2 deletions

View File

@@ -836,6 +836,21 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb
mesh.TransformBuffer(geometryTransform);
}*/
// Get local transform for origin shifting translation
auto translation = ToMatrix(aMesh->getGlobalTransform()).GetTranslation();
auto scale = data.GlobalSettings.UnitScaleFactor;
if (data.GlobalSettings.CoordAxis == ofbx::CoordSystem_RightHanded)
mesh.OriginTranslation = scale * Vector3(translation.X, translation.Y, -translation.Z);
else
mesh.OriginTranslation = scale * Vector3(translation.X, translation.Y, translation.Z);
auto rot = aMesh->getLocalRotation();
auto quat = Quaternion::Euler(-(float)rot.x, -(float)rot.y, -(float)rot.z);
mesh.OriginOrientation = quat;
auto scaling = aMesh->getLocalScaling();
auto scaleFactor = data.GlobalSettings.UnitScaleFactor;
mesh.Scaling = Vector3(scaleFactor * (float)scaling.x, scaleFactor * (float)scaling.y, scaleFactor * (float)scaling.z);
return false;
}