Fixing geometryc for meshes exported without uv coordinates

This commit is contained in:
Nodrev 2015-06-02 22:37:22 +02:00
parent 51d41041b7
commit 4df0cca212

View file

@ -510,8 +510,8 @@ int main(int _argc, const char* _argv[])
for (uint32_t edge = 0, numEdges = argc-1; edge < numEdges; ++edge) for (uint32_t edge = 0, numEdges = argc-1; edge < numEdges; ++edge)
{ {
Index3 index; Index3 index;
index.m_texcoord = 0; index.m_texcoord = -1;
index.m_normal = 0; index.m_normal = -1;
index.m_vertexIndex = -1; index.m_vertexIndex = -1;
char* vertex = argv[edge+1]; char* vertex = argv[edge+1];
@ -528,8 +528,12 @@ int main(int _argc, const char* _argv[])
index.m_normal = (nn < 0) ? nn+numNormals : nn-1; index.m_normal = (nn < 0) ? nn+numNormals : nn-1;
} }
const int tex = atoi(texcoord); // https://en.wikipedia.org/wiki/Wavefront_.obj_file#Vertex_Normal_Indices_Without_Texture_Coordinate_Indices
index.m_texcoord = (tex < 0) ? tex+numTexcoords : tex-1; if(*texcoord != '\0')
{
const int tex = atoi(texcoord);
index.m_texcoord = (tex < 0) ? tex+numTexcoords : tex-1;
}
} }
const int pos = atoi(vertex); const int pos = atoi(vertex);
@ -716,8 +720,8 @@ int main(int _argc, const char* _argv[])
bool hasTexcoord; bool hasTexcoord;
{ {
Index3Map::const_iterator it = indexMap.begin(); Index3Map::const_iterator it = indexMap.begin();
hasNormal = 0 != it->second.m_normal; hasNormal = -1 != it->second.m_normal;
hasTexcoord = 0 != it->second.m_texcoord; hasTexcoord = -1 != it->second.m_texcoord;
if (!hasTexcoord if (!hasTexcoord
&& texcoords.size() == positions.size() ) && texcoords.size() == positions.size() )