Added import option to reverse winding order

This commit is contained in:
Gary M
2024-12-12 22:19:55 -08:00
parent 0cf31395b5
commit 21d1419e74
5 changed files with 40 additions and 0 deletions

View File

@@ -775,6 +775,24 @@ bool ProcessMesh(ModelData& result, OpenFbxImporterData& data, const ofbx::Mesh*
}
}
// Reverse winding order
if (data.Options.ReverseWindingOrder)
{
uint32* meshIndices = mesh.Indices.Get();
Float3* meshPositions = mesh.Positions.Get();
Float3* meshNormals = mesh.Normals.HasItems() ? mesh.Normals.Get() : nullptr;
Float3* meshTangents = mesh.Tangents.HasItems() ? mesh.Tangents.Get() : nullptr;
for (int i = 0; i < vertexCount; i += 3) {
Swap(meshIndices[i + 1], meshIndices[i + 2]);
Swap(meshPositions[i + 1], meshPositions[i + 2]);
if (meshNormals)
Swap(meshNormals[i + 1], meshNormals[i + 2]);
if (meshTangents)
Swap(meshTangents[i + 1], meshTangents[i + 2]);
}
}
// Lightmap UVs
if (data.Options.LightmapUVsSource == ModelLightmapUVsSource::Disable)
{