Increased .obj file loading flexibility

LoadOBJ now supports loading objects with having normals and lacking UV
coordinates.
LoadOBJ now supports loading UV tuples (the way blender exports OBJ
files)
This commit is contained in:
Teodor Stoenescu 2016-08-30 21:06:06 +03:00
parent c36fd2800f
commit 9e5aa18b10

View File

@ -1898,9 +1898,7 @@ static Mesh LoadOBJ(const char *fileName)
if (dataType == 't') // Read texCoord
{
float useless = 0;
fscanf(objFile, "%f %f %f", &midTexCoords[countTexCoords].x, &midTexCoords[countTexCoords].y, &useless);
fscanf(objFile, "%f %f %*[^\n]", &midTexCoords[countTexCoords].x, &midTexCoords[countTexCoords].y, &useless);
countTexCoords++;
fscanf(objFile, "%c", &dataType);
@ -1959,6 +1957,7 @@ static Mesh LoadOBJ(const char *fileName)
if ((numNormals == 0) && (numTexCoords == 0)) fscanf(objFile, "%i %i %i", &vNum[0], &vNum[1], &vNum[2]);
else if (numNormals == 0) fscanf(objFile, "%i/%i %i/%i %i/%i", &vNum[0], &vtNum[0], &vNum[1], &vtNum[1], &vNum[2], &vtNum[2]);
else if (numTexCoords == 0) fscanf(objFile, "%i//%i %i//%i %i//%i", &vNum[0], &vnNum[0], &vNum[1], &vnNum[1], &vNum[2], &vnNum[2]);
else fscanf(objFile, "%i/%i/%i %i/%i/%i %i/%i/%i", &vNum[0], &vtNum[0], &vnNum[0], &vNum[1], &vtNum[1], &vnNum[1], &vNum[2], &vtNum[2], &vnNum[2]);
mesh.vertices[vCounter] = midVertices[vNum[0]-1].x;