From 121c996c6e51ab6e03c42543c8704876863a0f69 Mon Sep 17 00:00:00 2001 From: Eike Decker Date: Fri, 1 Aug 2025 08:40:28 +0200 Subject: [PATCH] fixing OBJ loading crash when there are no normals present --- src/rmodels.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index 0dc7572f1..246c2b0a3 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -4473,9 +4473,17 @@ static Model LoadOBJ(const char *fileName) for (int i = 0; i < 3; i++) model.meshes[meshIndex].vertices[localMeshVertexCount*3 + i] = objAttributes.vertices[vertIndex*3 + i]; - for (int i = 0; i < 3; i++) model.meshes[meshIndex].normals[localMeshVertexCount*3 + i] = objAttributes.normals[normalIndex*3 + i]; - for (int i = 0; i < 2; i++) model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + i] = objAttributes.texcoords[texcordIndex*2 + i]; + if (objAttributes.normals != NULL && normalIndex != TINYOBJ_INVALID_INDEX && normalIndex >= 0) + { + for (int i = 0; i < 3; i++) model.meshes[meshIndex].normals[localMeshVertexCount*3 + i] = objAttributes.normals[normalIndex*3 + i]; + } + else + { + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 0] = 0.0f; + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 1] = 1.0f; + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 2] = 0.0f; + } model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + 1] = 1.0f - model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + 1];