|
|
@ -3491,6 +3491,11 @@ RayCollision GetRayCollisionQuad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Ve |
|
|
|
//---------------------------------------------------------------------------------- |
|
|
|
#if defined(SUPPORT_FILEFORMAT_OBJ) |
|
|
|
// Load OBJ mesh data |
|
|
|
// |
|
|
|
// Keep the following information in mind when reading this |
|
|
|
// - A mesh is created for every material present in the obj file |
|
|
|
// - the model.meshCount is therefore the materialCount returned from tinyobj |
|
|
|
// - the mesh is automatically triangulated by tinyobj |
|
|
|
static Model LoadOBJ(const char *fileName) |
|
|
|
{ |
|
|
|
Model model = { 0 }; |
|
|
@ -3542,15 +3547,12 @@ static Model LoadOBJ(const char *fileName) |
|
|
|
// Count the faces for each material |
|
|
|
int *matFaces = RL_CALLOC(materialCount, sizeof(int)); |
|
|
|
|
|
|
|
for (unsigned int mi = 0; mi < meshCount; mi++) |
|
|
|
{ |
|
|
|
for (unsigned int fi = 0; fi < meshes[mi].length; fi++) |
|
|
|
{ |
|
|
|
int idx = attrib.material_ids[meshes[mi].face_offset + fi]; |
|
|
|
if (idx == -1) idx = 0; // for no material face (which could be the whole model) |
|
|
|
matFaces[idx]++; |
|
|
|
} |
|
|
|
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]++; |
|
|
|
} |
|
|
|
|
|
|
|
//-------------------------------------- |
|
|
|
// Create the material meshes |
|
|
|
|
|
|
|