|
@@ -1943,13 +1943,14 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
|
if (IsFileExtension(fileName, ".obj"))
|
|
if (IsFileExtension(fileName, ".obj"))
|
|
{
|
|
{
|
|
// Estimated data size, it should be enough...
|
|
// Estimated data size, it should be enough...
|
|
- int dataSize = mesh.vertexCount*(int)strlen("v 0000.00f 0000.00f 0000.00f") +
|
|
|
|
- mesh.vertexCount*(int)strlen("vt 0.000f 0.00f") +
|
|
|
|
- mesh.vertexCount*(int)strlen("vn 0.000f 0.00f 0.00f") +
|
|
|
|
- mesh.triangleCount*(int)strlen("f 00000/00000/00000 00000/00000/00000 00000/00000/00000");
|
|
|
|
|
|
+ int vc = mesh.vertexCount;
|
|
|
|
+ int dataSize = vc*(int)strlen("v -0000.000000f -0000.000000f -0000.000000f\n") +
|
|
|
|
+ vc*(int)strlen("vt -0.000000f -0.000000f\n") +
|
|
|
|
+ vc*(int)strlen("vn -0.0000f -0.0000f -0.0000f\n") +
|
|
|
|
+ mesh.triangleCount*snprintf(NULL, 0, "f %i/%i/%i %i/%i/%i %i/%i/%i\n", vc, vc, vc, vc, vc, vc, vc, vc, vc);
|
|
|
|
|
|
// NOTE: Text data buffer size is estimated considering mesh data size
|
|
// NOTE: Text data buffer size is estimated considering mesh data size
|
|
- char *txtData = (char *)RL_CALLOC(dataSize*2 + 2000, sizeof(char));
|
|
|
|
|
|
+ char *txtData = (char *)RL_CALLOC(dataSize + 1000, sizeof(char));
|
|
|
|
|
|
int byteCount = 0;
|
|
int byteCount = 0;
|
|
byteCount += sprintf(txtData + byteCount, "# //////////////////////////////////////////////////////////////////////////////////\n");
|
|
byteCount += sprintf(txtData + byteCount, "# //////////////////////////////////////////////////////////////////////////////////\n");
|
|
@@ -1969,17 +1970,17 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
|
|
|
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
|
{
|
|
{
|
|
- byteCount += sprintf(txtData + byteCount, "v %.2f %.2f %.2f\n", mesh.vertices[v], mesh.vertices[v + 1], mesh.vertices[v + 2]);
|
|
|
|
|
|
+ byteCount += sprintf(txtData + byteCount, "v %.6f %.6f %.6f\n", mesh.vertices[v], mesh.vertices[v + 1], mesh.vertices[v + 2]);
|
|
}
|
|
}
|
|
|
|
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 2)
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 2)
|
|
{
|
|
{
|
|
- byteCount += sprintf(txtData + byteCount, "vt %.3f %.3f\n", mesh.texcoords[v], mesh.texcoords[v + 1]);
|
|
|
|
|
|
+ byteCount += sprintf(txtData + byteCount, "vt %.6f %.6f\n", mesh.texcoords[v], mesh.texcoords[v + 1]);
|
|
}
|
|
}
|
|
|
|
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
|
{
|
|
{
|
|
- byteCount += sprintf(txtData + byteCount, "vn %.3f %.3f %.3f\n", mesh.normals[v], mesh.normals[v + 1], mesh.normals[v + 2]);
|
|
|
|
|
|
+ byteCount += sprintf(txtData + byteCount, "vn %.4f %.4f %.4f\n", mesh.normals[v], mesh.normals[v + 1], mesh.normals[v + 2]);
|
|
}
|
|
}
|
|
|
|
|
|
if (mesh.indices != NULL)
|
|
if (mesh.indices != NULL)
|
|
@@ -2000,8 +2001,6 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- byteCount += sprintf(txtData + byteCount, "\n");
|
|
|
|
-
|
|
|
|
// NOTE: Text data length exported is determined by '\0' (NULL) character
|
|
// NOTE: Text data length exported is determined by '\0' (NULL) character
|
|
success = SaveFileText(fileName, txtData);
|
|
success = SaveFileText(fileName, txtData);
|
|
|
|
|