Skip to content

Commit

Permalink
Fix AssimpLoader collada texture coordinates (#634)
Browse files Browse the repository at this point in the history
Fixes UNIT_AssimpLoader_TEST with assimp 5.4.3. This should fix homebrew CI.

This PR tweaks the way we checks for texture coordinates from assimp. Empty texture coordinate slots are now allowed as of assimp/assimp#5636. The new logic should be compatible with assimp 5.4.3 and prior versions

Signed-off-by: Ian Chen <[email protected]>
  • Loading branch information
iche033 authored Sep 5, 2024
1 parent ff19dee commit 3f129c3
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions graphics/src/AssimpLoader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -650,14 +650,14 @@ SubMesh AssimpLoader::Implementation::CreateSubMesh(
subMesh.AddVertex(vertex);
subMesh.AddNormal(normal);
// Iterate over sets of texture coordinates
int uvIdx = 0;
while(_assimpMesh->HasTextureCoords(uvIdx))
for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i)
{
if (!_assimpMesh->HasTextureCoords(i))
continue;
math::Vector3d texcoords;
texcoords.X(_assimpMesh->mTextureCoords[uvIdx][vertexIdx].x);
texcoords.Y(_assimpMesh->mTextureCoords[uvIdx][vertexIdx].y);
subMesh.AddTexCoordBySet(texcoords.X(), texcoords.Y(), uvIdx);
++uvIdx;
texcoords.X(_assimpMesh->mTextureCoords[i][vertexIdx].x);
texcoords.Y(_assimpMesh->mTextureCoords[i][vertexIdx].y);
subMesh.AddTexCoordBySet(texcoords.X(), texcoords.Y(), i);
}
}
for (unsigned faceIdx = 0; faceIdx < _assimpMesh->mNumFaces; ++faceIdx)
Expand Down

0 comments on commit 3f129c3

Please sign in to comment.