[models] Review TRACELOG() messages, categorized
This commit is contained in:
parent
7e2b1b4ff0
commit
70ed975b99
1 changed files with 34 additions and 42 deletions
76
src/models.c
76
src/models.c
|
@ -688,10 +688,10 @@ Model LoadModel(const char *fileName)
|
||||||
model.meshCount = 1;
|
model.meshCount = 1;
|
||||||
model.meshes = (Mesh *)RL_CALLOC(model.meshCount, sizeof(Mesh));
|
model.meshes = (Mesh *)RL_CALLOC(model.meshCount, sizeof(Mesh));
|
||||||
#if defined(SUPPORT_MESH_GENERATION)
|
#if defined(SUPPORT_MESH_GENERATION)
|
||||||
TRACELOG(LOG_WARNING, "[%s] No meshes can be loaded, default to cube mesh", fileName);
|
TRACELOG(LOG_WARNING, "MESH: [%s] Failed to load mesh data, default to cube mesh", fileName);
|
||||||
model.meshes[0] = GenMeshCube(1.0f, 1.0f, 1.0f);
|
model.meshes[0] = GenMeshCube(1.0f, 1.0f, 1.0f);
|
||||||
#else
|
#else
|
||||||
TRACELOG(LOG_WARNING, "[%s] No meshes can be loaded, and can't create a default mesh. The raylib mesh generation is not supported (SUPPORT_MESH_GENERATION).", fileName);
|
TRACELOG(LOG_WARNING, "MESH: [%s] Failed to load mesh data", fileName);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -702,7 +702,7 @@ Model LoadModel(const char *fileName)
|
||||||
|
|
||||||
if (model.materialCount == 0)
|
if (model.materialCount == 0)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] No materials can be loaded, default to white material", fileName);
|
TRACELOG(LOG_WARNING, "MATERIAL: [%s] Failed to load material data, default to white material", fileName);
|
||||||
|
|
||||||
model.materialCount = 1;
|
model.materialCount = 1;
|
||||||
model.materials = (Material *)RL_CALLOC(model.materialCount, sizeof(Material));
|
model.materials = (Material *)RL_CALLOC(model.materialCount, sizeof(Material));
|
||||||
|
@ -756,7 +756,7 @@ void UnloadModel(Model model)
|
||||||
RL_FREE(model.bones);
|
RL_FREE(model.bones);
|
||||||
RL_FREE(model.bindPose);
|
RL_FREE(model.bindPose);
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Unloaded model data from RAM and VRAM");
|
TRACELOG(LOG_INFO, "MODEL: Unloaded model from RAM and VRAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load meshes from model file
|
// Load meshes from model file
|
||||||
|
@ -830,8 +830,8 @@ void ExportMesh(Mesh mesh, const char *fileName)
|
||||||
}
|
}
|
||||||
else if (IsFileExtension(fileName, ".raw")) { } // TODO: Support additional file formats to export mesh vertex data
|
else if (IsFileExtension(fileName, ".raw")) { } // TODO: Support additional file formats to export mesh vertex data
|
||||||
|
|
||||||
if (success) TRACELOG(LOG_INFO, "Mesh exported successfully: %s", fileName);
|
if (success) TRACELOG(LOG_INFO, "FILEIO: [%s] Mesh exported successfully", fileName);
|
||||||
else TRACELOG(LOG_WARNING, "Mesh could not be exported.");
|
else TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to export mesh data", fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load materials from model file
|
// Load materials from model file
|
||||||
|
@ -849,7 +849,7 @@ Material *LoadMaterials(const char *fileName, int *materialCount)
|
||||||
|
|
||||||
int result = tinyobj_parse_mtl_file(&mats, &count, fileName);
|
int result = tinyobj_parse_mtl_file(&mats, &count, fileName);
|
||||||
if (result != TINYOBJ_SUCCESS) {
|
if (result != TINYOBJ_SUCCESS) {
|
||||||
TRACELOG(LOG_WARNING, "[%s] Could not parse Materials file", fileName);
|
TRACELOG(LOG_WARNING, "MATERIAL: [%s] Failed to parse materials file", fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Process materials to return
|
// TODO: Process materials to return
|
||||||
|
@ -857,7 +857,7 @@ Material *LoadMaterials(const char *fileName, int *materialCount)
|
||||||
tinyobj_materials_free(mats, count);
|
tinyobj_materials_free(mats, count);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
TRACELOG(LOG_WARNING, "[%s] Materials file not supported", fileName);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to load material file", fileName);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set materials shader to default (DIFFUSE, SPECULAR, NORMAL)
|
// Set materials shader to default (DIFFUSE, SPECULAR, NORMAL)
|
||||||
|
@ -909,8 +909,8 @@ void SetMaterialTexture(Material *material, int mapType, Texture2D texture)
|
||||||
// Set the material for a mesh
|
// Set the material for a mesh
|
||||||
void SetModelMeshMaterial(Model *model, int meshId, int materialId)
|
void SetModelMeshMaterial(Model *model, int meshId, int materialId)
|
||||||
{
|
{
|
||||||
if (meshId >= model->meshCount) TRACELOG(LOG_WARNING, "Mesh id greater than mesh count");
|
if (meshId >= model->meshCount) TRACELOG(LOG_WARNING, "MESH: Id greater than mesh count");
|
||||||
else if (materialId >= model->materialCount) TRACELOG(LOG_WARNING,"Material id greater than material count");
|
else if (materialId >= model->materialCount) TRACELOG(LOG_WARNING, "MATERIAL: Id greater than material count");
|
||||||
else model->meshMaterial[meshId] = materialId;
|
else model->meshMaterial[meshId] = materialId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,7 +958,8 @@ ModelAnimation *LoadModelAnimations(const char *filename, int *animCount)
|
||||||
|
|
||||||
if (!iqmFile)
|
if (!iqmFile)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "[%s] Unable to open file", filename);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open file", filename);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read IQM header
|
// Read IQM header
|
||||||
|
@ -966,17 +967,15 @@ ModelAnimation *LoadModelAnimations(const char *filename, int *animCount)
|
||||||
|
|
||||||
if (strncmp(iqm.magic, IQM_MAGIC, sizeof(IQM_MAGIC)))
|
if (strncmp(iqm.magic, IQM_MAGIC, sizeof(IQM_MAGIC)))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "Magic Number \"%s\"does not match.", iqm.magic);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", filename);
|
||||||
fclose(iqmFile);
|
fclose(iqmFile);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iqm.version != IQM_VERSION)
|
if (iqm.version != IQM_VERSION)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_ERROR, "IQM version %i is incorrect.", iqm.version);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version incorrect", filename);
|
||||||
fclose(iqmFile);
|
fclose(iqmFile);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2339,7 +2338,7 @@ BoundingBox MeshBoundingBox(Mesh mesh)
|
||||||
void MeshTangents(Mesh *mesh)
|
void MeshTangents(Mesh *mesh)
|
||||||
{
|
{
|
||||||
if (mesh->tangents == NULL) mesh->tangents = (float *)RL_MALLOC(mesh->vertexCount*4*sizeof(float));
|
if (mesh->tangents == NULL) mesh->tangents = (float *)RL_MALLOC(mesh->vertexCount*4*sizeof(float));
|
||||||
else TRACELOG(LOG_WARNING, "Mesh tangents already exist");
|
else TRACELOG(LOG_WARNING, "MESH: Tangents data already available, re-writting");
|
||||||
|
|
||||||
Vector3 *tan1 = (Vector3 *)RL_MALLOC(mesh->vertexCount*sizeof(Vector3));
|
Vector3 *tan1 = (Vector3 *)RL_MALLOC(mesh->vertexCount*sizeof(Vector3));
|
||||||
Vector3 *tan2 = (Vector3 *)RL_MALLOC(mesh->vertexCount*sizeof(Vector3));
|
Vector3 *tan2 = (Vector3 *)RL_MALLOC(mesh->vertexCount*sizeof(Vector3));
|
||||||
|
@ -2412,7 +2411,7 @@ void MeshTangents(Mesh *mesh)
|
||||||
// Load a new tangent attributes buffer
|
// Load a new tangent attributes buffer
|
||||||
mesh->vboId[LOC_VERTEX_TANGENT] = rlLoadAttribBuffer(mesh->vaoId, LOC_VERTEX_TANGENT, mesh->tangents, mesh->vertexCount*4*sizeof(float), false);
|
mesh->vboId[LOC_VERTEX_TANGENT] = rlLoadAttribBuffer(mesh->vaoId, LOC_VERTEX_TANGENT, mesh->tangents, mesh->vertexCount*4*sizeof(float), false);
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "Tangents computed for mesh");
|
TRACELOG(LOG_INFO, "MESH: Tangents data computed for provided mesh");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute mesh binormals (aka bitangent)
|
// Compute mesh binormals (aka bitangent)
|
||||||
|
@ -2852,8 +2851,8 @@ static Model LoadOBJ(const char *fileName)
|
||||||
unsigned int flags = TINYOBJ_FLAG_TRIANGULATE;
|
unsigned int flags = TINYOBJ_FLAG_TRIANGULATE;
|
||||||
int ret = tinyobj_parse_obj(&attrib, &meshes, &meshCount, &materials, &materialCount, fileData, dataSize, flags);
|
int ret = tinyobj_parse_obj(&attrib, &meshes, &meshCount, &materials, &materialCount, fileData, dataSize, flags);
|
||||||
|
|
||||||
if (ret != TINYOBJ_SUCCESS) TRACELOG(LOG_WARNING, "[%s] Model data could not be loaded", fileName);
|
if (ret != TINYOBJ_SUCCESS) TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load OBJ data", fileName);
|
||||||
else TRACELOG(LOG_INFO, "[%s] Model data loaded successfully: %i meshes / %i materials", fileName, meshCount, materialCount);
|
else TRACELOG(LOG_INFO, "MODEL: [%s] OBJ data loaded successfully: %i meshes / %i materials", fileName, meshCount, materialCount);
|
||||||
|
|
||||||
// Init model meshes array
|
// Init model meshes array
|
||||||
// TODO: Support multiple meshes... in the meantime, only one mesh is returned
|
// TODO: Support multiple meshes... in the meantime, only one mesh is returned
|
||||||
|
@ -2903,8 +2902,6 @@ static Model LoadOBJ(const char *fileName)
|
||||||
tinyobj_vertex_index_t idx1 = attrib.faces[3*f + 1];
|
tinyobj_vertex_index_t idx1 = attrib.faces[3*f + 1];
|
||||||
tinyobj_vertex_index_t idx2 = attrib.faces[3*f + 2];
|
tinyobj_vertex_index_t idx2 = attrib.faces[3*f + 2];
|
||||||
|
|
||||||
// TRACELOGD("Face %i index: v %i/%i/%i . vt %i/%i/%i . vn %i/%i/%i\n", f, idx0.v_idx, idx1.v_idx, idx2.v_idx, idx0.vt_idx, idx1.vt_idx, idx2.vt_idx, idx0.vn_idx, idx1.vn_idx, idx2.vn_idx);
|
|
||||||
|
|
||||||
// Fill vertices buffer (float) using vertex index of the face
|
// Fill vertices buffer (float) using vertex index of the face
|
||||||
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx0.v_idx*3 + v]; } vCount +=3;
|
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx0.v_idx*3 + v]; } vCount +=3;
|
||||||
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx1.v_idx*3 + v]; } vCount +=3;
|
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx1.v_idx*3 + v]; } vCount +=3;
|
||||||
|
@ -2990,15 +2987,12 @@ static Model LoadOBJ(const char *fileName)
|
||||||
tinyobj_attrib_free(&attrib);
|
tinyobj_attrib_free(&attrib);
|
||||||
tinyobj_shapes_free(meshes, meshCount);
|
tinyobj_shapes_free(meshes, meshCount);
|
||||||
tinyobj_materials_free(materials, materialCount);
|
tinyobj_materials_free(materials, materialCount);
|
||||||
|
|
||||||
RL_FREE(fileData);
|
RL_FREE(fileData);
|
||||||
|
|
||||||
chdir(currentDir);
|
chdir(currentDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: At this point we have all model data loaded
|
|
||||||
TRACELOG(LOG_INFO, "[%s] Model loaded successfully in RAM (CPU)", fileName);
|
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -3116,7 +3110,7 @@ static Model LoadIQM(const char *fileName)
|
||||||
|
|
||||||
if (iqmFile == NULL)
|
if (iqmFile == NULL)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] IQM file could not be opened", fileName);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open IQM file", fileName);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3124,14 +3118,14 @@ static Model LoadIQM(const char *fileName)
|
||||||
|
|
||||||
if (strncmp(iqm.magic, IQM_MAGIC, sizeof(IQM_MAGIC)))
|
if (strncmp(iqm.magic, IQM_MAGIC, sizeof(IQM_MAGIC)))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] IQM file does not seem to be valid", fileName);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", fileName);
|
||||||
fclose(iqmFile);
|
fclose(iqmFile);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iqm.version != IQM_VERSION)
|
if (iqm.version != IQM_VERSION)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] IQM file version is not supported (%i).", fileName, iqm.version);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version not supported (%i)", fileName, iqm.version);
|
||||||
fclose(iqmFile);
|
fclose(iqmFile);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -3433,7 +3427,7 @@ static Image LoadImageFromCgltfImage(cgltf_image *image, const char *texPath, Co
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while ((image->uri[i] != ',') && (image->uri[i] != 0)) i++;
|
while ((image->uri[i] != ',') && (image->uri[i] != 0)) i++;
|
||||||
|
|
||||||
if (image->uri[i] == 0) TRACELOG(LOG_WARNING, "CGLTF Image: Invalid data URI");
|
if (image->uri[i] == 0) TRACELOG(LOG_WARNING, "IMAGE: glTF data URI is not a valid image");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
|
@ -3526,7 +3520,7 @@ static Model LoadGLTF(const char *fileName)
|
||||||
|
|
||||||
if (gltfFile == NULL)
|
if (gltfFile == NULL)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "[%s] glTF file could not be opened", fileName);
|
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open glTF file", fileName);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3546,11 +3540,12 @@ static Model LoadGLTF(const char *fileName)
|
||||||
|
|
||||||
if (result == cgltf_result_success)
|
if (result == cgltf_result_success)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "[%s][%s] Model meshes/materials: %i/%i", fileName, (data->file_type == 2)? "glb" : "gltf", data->meshes_count, data->materials_count);
|
TRACELOG(LOG_INFO, "MODEL: [%s] glTF meshes (%s) count: %i", fileName, (data->file_type == 2)? "glb" : "gltf", data->meshes_count, data->materials_count);
|
||||||
|
TRACELOG(LOG_INFO, "MODEL: [%s] glTF materials (%s) count: %i", fileName, (data->file_type == 2)? "glb" : "gltf", data->meshes_count, data->materials_count);
|
||||||
|
|
||||||
// Read data buffers
|
// Read data buffers
|
||||||
result = cgltf_load_buffers(&options, data, fileName);
|
result = cgltf_load_buffers(&options, data, fileName);
|
||||||
if (result != cgltf_result_success) TRACELOG(LOG_INFO, "[%s][%s] Error loading mesh/material buffers", fileName, (data->file_type == 2)? "glb" : "gltf");
|
if (result != cgltf_result_success) TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load mesh/material buffers", fileName);
|
||||||
|
|
||||||
int primitivesCount = 0;
|
int primitivesCount = 0;
|
||||||
|
|
||||||
|
@ -3588,8 +3583,7 @@ static Model LoadGLTF(const char *fileName)
|
||||||
UnloadImage(albedo);
|
UnloadImage(albedo);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Set tint to white after it's been used by Albedo
|
tint = WHITE; // Set tint to white after it's been used by Albedo
|
||||||
tint = WHITE;
|
|
||||||
|
|
||||||
if (data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture)
|
if (data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture)
|
||||||
{
|
{
|
||||||
|
@ -3605,8 +3599,6 @@ static Model LoadGLTF(const char *fileName)
|
||||||
UnloadImage(metallicRoughness);
|
UnloadImage(metallicRoughness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (data->materials[i].normal_texture.texture)
|
if (data->materials[i].normal_texture.texture)
|
||||||
{
|
{
|
||||||
Image normalImage = LoadImageFromCgltfImage(data->materials[i].normal_texture.texture->image, texPath, tint);
|
Image normalImage = LoadImageFromCgltfImage(data->materials[i].normal_texture.texture->image, texPath, tint);
|
||||||
|
@ -3625,9 +3617,9 @@ static Model LoadGLTF(const char *fileName)
|
||||||
{
|
{
|
||||||
Image emissiveImage = LoadImageFromCgltfImage(data->materials[i].emissive_texture.texture->image, texPath, tint);
|
Image emissiveImage = LoadImageFromCgltfImage(data->materials[i].emissive_texture.texture->image, texPath, tint);
|
||||||
model.materials[i].maps[MAP_EMISSION].texture = LoadTextureFromImage(emissiveImage);
|
model.materials[i].maps[MAP_EMISSION].texture = LoadTextureFromImage(emissiveImage);
|
||||||
tint.r = (unsigned char)(data->materials[i].emissive_factor[0] * 255);
|
tint.r = (unsigned char)(data->materials[i].emissive_factor[0]*255);
|
||||||
tint.g = (unsigned char)(data->materials[i].emissive_factor[1] * 255);
|
tint.g = (unsigned char)(data->materials[i].emissive_factor[1]*255);
|
||||||
tint.b = (unsigned char)(data->materials[i].emissive_factor[2] * 255);
|
tint.b = (unsigned char)(data->materials[i].emissive_factor[2]*255);
|
||||||
model.materials[i].maps[MAP_EMISSION].color = tint;
|
model.materials[i].maps[MAP_EMISSION].color = tint;
|
||||||
UnloadImage(emissiveImage);
|
UnloadImage(emissiveImage);
|
||||||
}
|
}
|
||||||
|
@ -3671,7 +3663,7 @@ static Model LoadGLTF(const char *fileName)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: Support normalized unsigned byte/unsigned short texture coordinates
|
// TODO: Support normalized unsigned byte/unsigned short texture coordinates
|
||||||
TRACELOG(LOG_WARNING, "[%s] Texture coordinates must be float", fileName);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] glTF texture coordinates must be float", fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3689,7 +3681,7 @@ static Model LoadGLTF(const char *fileName)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: Support unsigned byte/unsigned int
|
// TODO: Support unsigned byte/unsigned int
|
||||||
TRACELOG(LOG_WARNING, "[%s] Indices must be unsigned short", fileName);
|
TRACELOG(LOG_WARNING, "MODEL: [%s] glTF index data must be unsigned short", fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3714,7 +3706,7 @@ static Model LoadGLTF(const char *fileName)
|
||||||
|
|
||||||
cgltf_free(data);
|
cgltf_free(data);
|
||||||
}
|
}
|
||||||
else TRACELOG(LOG_WARNING, "[%s] glTF data could not be loaded", fileName);
|
else TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load glTF data", fileName);
|
||||||
|
|
||||||
RL_FREE(buffer);
|
RL_FREE(buffer);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue