Importing obj files without usemtl

Summary:
When there is no "usemtl" statement in the .obj file use material from .mtl if there is one.
https://github.com/facebookresearch/pytorch3d/issues/1068

Reviewed By: bottler

Differential Revision: D34141152

fbshipit-source-id: 7a5b5cc3f0bb287dc617f68de2cd085db8f7ad94
This commit is contained in:
Sergei Ovchinnikov
2022-02-10 09:38:17 -08:00
committed by Facebook GitHub Bot
parent 12f20d799e
commit ef21a6f6aa
7 changed files with 12062 additions and 4 deletions

View File

@@ -658,6 +658,18 @@ class TestMeshObjIO(TestCaseMixin, unittest.TestCase):
self.assertTrue(aux.material_colors is None)
self.assertTrue(aux.texture_images is None)
def test_load_no_usemtl(self):
obj_filename = "missing_usemtl/cow.obj"
# obj_filename has no "usemtl material_1" line
filename = os.path.join(DATA_DIR, obj_filename)
# TexturesUV type
mesh = IO().load_mesh(filename)
self.assertIsNotNone(mesh.textures)
verts, faces, aux = load_obj(filename)
self.assertTrue("material_1" in aux.material_colors)
self.assertTrue("material_1" in aux.texture_images)
def test_load_mtl_fail(self):
# Faces have a material
obj_file = "\n".join(