From 7303c043e20c81353536c1c08716cd0a80a07351 Mon Sep 17 00:00:00 2001 From: Qingyou Zhao Date: Fri, 6 Dec 2024 12:49:32 -0800 Subject: [PATCH] In AssimpLoader::Implementation::CreateSubMesh check normal presence before reading Signed-off-by: Qingyou Zhao --- graphics/src/AssimpLoader.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/graphics/src/AssimpLoader.cc b/graphics/src/AssimpLoader.cc index d144dbab..d2e3b754 100644 --- a/graphics/src/AssimpLoader.cc +++ b/graphics/src/AssimpLoader.cc @@ -667,18 +667,20 @@ SubMesh AssimpLoader::Implementation::CreateSubMesh( { // Add the vertex math::Vector3d vertex; - math::Vector3d normal; vertex.X(_assimpMesh->mVertices[vertexIdx].x); vertex.Y(_assimpMesh->mVertices[vertexIdx].y); vertex.Z(_assimpMesh->mVertices[vertexIdx].z); - normal.X(_assimpMesh->mNormals[vertexIdx].x); - normal.Y(_assimpMesh->mNormals[vertexIdx].y); - normal.Z(_assimpMesh->mNormals[vertexIdx].z); vertex = _transform * vertex; - normal = rot * normal; - normal.Normalize(); subMesh.AddVertex(vertex); - subMesh.AddNormal(normal); + if (_assimpMesh->HasNormals()) { + math::Vector3d normal; + normal.X(_assimpMesh->mNormals[vertexIdx].x); + normal.Y(_assimpMesh->mNormals[vertexIdx].y); + normal.Z(_assimpMesh->mNormals[vertexIdx].z); + normal = rot * normal; + normal.Normalize(); + subMesh.AddNormal(normal); + } // Iterate over sets of texture coordinates for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {