From 7f783bb7dae1e6f1be7c014cad0486c9e11a3114 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 2 Jul 2025 17:23:04 +0200 Subject: [PATCH] Fix crash when importing mesh with incorrect triangulation --- Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp index 2cc2823af..81ce46d6c 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp @@ -692,8 +692,12 @@ int Triangulate(OpenFbxImporterData& data, const ofbx::GeometryData& geom, const triangulatedIndices[i] = polygon.from_vertex + (earIndices[i] % polygon.vertex_count); // Ensure that we've written enough ears - ASSERT(earIndices.Count() == 3 * (polygon.vertex_count - 2)); - return earIndices.Count(); + const int32 indexCount = 3 * (polygon.vertex_count - 2); + if (indexCount != earIndices.Count()) + { + LOG(Error, "Invalid amount of vertices after triangulation. Expected {} but got {}. Use proper mesh triangulation when exporting source asset to the engine.", earIndices.Count(), indexCount); + } + return indexCount; } bool ProcessMesh(ModelData& result, OpenFbxImporterData& data, const ofbx::Mesh* aMesh, MeshData& mesh, String& errorMsg, int partitionIndex) @@ -729,7 +733,7 @@ bool ProcessMesh(ModelData& result, OpenFbxImporterData& data, const ofbx::Mesh* mesh.Positions.Get()[j] = ToFloat3(positions.get(triangulatedIndices[j])); numIndicesTotal += numIndices; } - ASSERT(numIndicesTotal == vertexCount); + ASSERT_LOW_LAYER(numIndicesTotal == vertexCount); } // Indices (dummy index buffer)