Exemplo n.º 1
0
 def test_import_mesh(self, with_normals, with_materials, expected_vertices,
                      expected_faces, expected_uvs, expected_face_uvs_idx,
                      expected_vertex_normals, expected_face_normals,
                      expected_materials):
     outputs = obj.import_mesh(os.path.join(SIMPLE_DIR, 'model.obj'),
                               with_materials=with_materials,
                               with_normals=with_normals,
                               error_handler=obj.skip_error_handler)
     assert torch.equal(outputs.vertices, expected_vertices)
     assert torch.equal(outputs.faces, expected_faces)
     if with_materials:
         assert torch.allclose(outputs.uvs, expected_uvs)
         assert torch.equal(outputs.face_uvs_idx, expected_face_uvs_idx)
         assert len(outputs.materials) == len(expected_materials)
         for outputs_material, expected_material in zip(
                 outputs.materials, expected_materials):
             assert outputs_material.keys() == expected_material.keys()
             for property_name, expected_property_val in expected_material.items(
             ):
                 assert torch.allclose(outputs_material[property_name],
                                       expected_property_val)
         assert torch.equal(outputs.materials_order,
                            torch.LongTensor([[0, 0], [1, 1]]))
     else:
         assert outputs.materials is None
         assert outputs.materials_order is None
     if with_normals:
         assert torch.equal(outputs.vertex_normals, expected_vertex_normals)
         assert torch.equal(outputs.face_normals, expected_face_normals)
     else:
         assert outputs.vertex_normals is None
         assert outputs.face_normals is None
Exemplo n.º 2
0
 def test_large_obj(self, with_materials, with_normals,
                    expected_large_values):
     outputs = obj.import_mesh(os.path.join(ROOT_DIR, "model.obj"),
                               with_materials=with_materials,
                               with_normals=with_normals)
     assert outputs.vertices.shape == (
         expected_large_values['num_vertices'], 3)
     assert outputs.faces.shape == (expected_large_values['num_faces'], 3)
     if with_materials:
         assert outputs.uvs.shape == (expected_large_values['num_uvs'], 2)
         assert outputs.face_uvs_idx.shape == (
             expected_large_values['num_faces'], 3)
         assert len(
             outputs.materials) == expected_large_values['num_materials']
         assert outputs.materials_order.shape == (
             expected_large_values['num_face_groups'], 2)
     else:
         assert outputs.uvs is None
         assert outputs.face_uvs_idx is None
         assert outputs.materials is None
         assert outputs.materials_order is None
     if with_normals:
         assert outputs.vertex_normals.shape == (
             expected_large_values['num_normals'], 3)
         assert outputs.face_normals.shape == (
             expected_large_values['num_faces'], 3)
     else:
         assert outputs.vertex_normals is None
         assert outputs.face_normals is None
Exemplo n.º 3
0
def mesh_alt():
    cur_dir = os.path.dirname(os.path.realpath(__file__))
    obj_mesh = obj.import_mesh(os.path.join(cur_dir, os.pardir, os.pardir,
                                            os.pardir, 'samples/model.obj'),
                               with_normals=True,
                               with_materials=True,
                               error_handler=obj.skip_error_handler)
    return obj_mesh
Exemplo n.º 4
0
 def test_warn_import_mesh(self, with_normals):
     with pytest.warns(
             UserWarning,
             match=
             fr"Failed to load material at path '{os.path.join(SIMPLE_DIR, 'model.mtl')}':\n"
             fr"\[Errno 21\] Is a directory: '{os.path.join(SIMPLE_DIR, '.')}'"
     ):
         outputs = obj.import_mesh(os.path.join(SIMPLE_DIR, "model.obj"),
                                   with_materials=True,
                                   with_normals=with_normals,
                                   error_handler=obj.skip_error_handler)
Exemplo n.º 5
0
 def test_error_import_mesh(self, with_normals):
     with pytest.raises(
             obj.MaterialLoadError,
             match=
             fr"Failed to load material at path '{os.path.join(SIMPLE_DIR, 'model.mtl')}':\n"
             fr"\[Errno 21\] Is a directory: '{os.path.join(SIMPLE_DIR, '.')}'"
     ):
         outputs = obj.import_mesh(os.path.join(SIMPLE_DIR, 'model.obj'),
                                   with_materials=True,
                                   with_normals=with_normals,
                                   error_handler=obj.default_error_handler)
Exemplo n.º 6
0
def test_adjacency_consistent(device, dtype):
    test_mesh = obj.import_mesh(os.path.join(ROOT_DIR, 'model.obj'))
    vertices = test_mesh.vertices
    faces = test_mesh.faces

    num_vertices = vertices.shape[0]

    sparse = mesh.adjacency_matrix(num_vertices, faces)
    sparse_to_dense = sparse.to_dense()
    dense = mesh.adjacency_matrix(num_vertices, faces, sparse=False)

    assert torch.equal(sparse_to_dense, dense)
Exemplo n.º 7
0
 def get_data(self, index):
     obj_location = self.paths[index] / 'models/model_normalized.obj'
     mesh = import_mesh(str(obj_location),
                        with_materials=self.with_materials,
                        error_handler=ignore_error_handler)
     return mesh
Exemplo n.º 8
0
 def test_warn_import_mesh(self, with_normals):
     with pytest.warns(UserWarning):
         outputs = obj.import_mesh(os.path.join(SIMPLE_DIR, "model.obj"),
                                   with_materials=True,
                                   with_normals=with_normals,
                                   error_handler=obj.skip_error_handler)
Exemplo n.º 9
0
 def test_error_import_mesh(self, with_normals):
     with pytest.raises(obj.MaterialLoadError):
         outputs = obj.import_mesh(os.path.join(SIMPLE_DIR, 'model.obj'),
                                   with_materials=True,
                                   with_normals=with_normals,
                                   error_handler=obj.default_error_handler)
Exemplo n.º 10
0
 def get_data(self, index):
     obj_location = self.paths[index]
     mesh = import_mesh(str(obj_location),
                        error_handler=ignore_error_handler)
     return mesh
Exemplo n.º 11
0
 def get_data(self, index):
     obj_location = self.paths[index] / 'model.obj'
     mesh = import_mesh(str(obj_location))
     return mesh