Browse Source

Fixed loading obj models with no materials (#1984)

Tristan Schulz 4 years ago
parent
commit
7bf31dd468
1 changed files with 15 additions and 6 deletions
  1. 15 6
      src/models.c

+ 15 - 6
src/models.c

@@ -3560,13 +3560,22 @@ static Model LoadOBJ(const char *fileName)
         model.meshMaterial = (int *)RL_CALLOC(model.meshCount, sizeof(int));
 
         // Count the faces for each material
-        int *matFaces = RL_CALLOC(materialCount, sizeof(int));
+        int *matFaces = RL_CALLOC(model.meshCount, sizeof(int));
 
-        for (int fi = 0; fi< attrib.num_faces; fi++)
+        // iff no materials are present use all faces on one mesh
+        if (materialCount > 0)
+        {
+            for (int fi = 0; fi< attrib.num_faces; fi++)
+            {
+                //tinyobj_vertex_index_t face = attrib.faces[fi];
+                int idx = attrib.material_ids[fi];
+                matFaces[idx]++;
+            }
+
+        }
+        else
         {
-            //tinyobj_vertex_index_t face = attrib.faces[fi];
-            int idx = attrib.material_ids[fi];
-            matFaces[idx]++;
+            matFaces[0] = attrib.num_faces;
         }
 
         //--------------------------------------
@@ -5606,4 +5615,4 @@ static Model LoadVOX(const char *fileName)
 
     return model;
 }
-#endif
+#endif