예제 #1
0
 def test_writing_bin_ply(self):
     m = Mesh(filename=self.test_ply_path)
     (_, tempname) = tempfile.mkstemp()
     m.write_ply(tempname)
     with open(tempname, 'rb') as f:
         candidate = f.read()
     os.remove(tempname)
     with open(self.test_bin_ply_path, 'rb') as f:
         truth = f.read()
     self.assertEqual(candidate, truth)
예제 #2
0
    def test_loop_subdivision_smoke_test(self):
        from psbody.mesh import Mesh
        from psbody.mesh.topology.subdivision import loop_subdivider

        m1 = Mesh(
            filename=os.path.join(test_data_folder, 'female_template.ply'))
        sdv = loop_subdivider(m1)

        self.assertIsNotNone(sdv)
        self.assertTrue(hasattr(sdv, "faces"))

        f_new = sdv.faces

        v_new = sdv(m1.v)
        self.assertIsNotNone(v_new)
        v_new = v_new.reshape((-1, 3))

        v_new_want_edge = sdv(m1.v, want_edges=True)
        self.assertIsNotNone(v_new_want_edge)
        v_new_want_edge = v_new_want_edge.reshape((-1, 3))

        m2 = Mesh(v=v_new, f=f_new)

        m1.reset_normals()
        m2.reset_normals()

        m1.write_ply(os.path.join(temporary_files_folder, 'lowres.ply'))
        m2.write_ply(os.path.join(temporary_files_folder, 'highres.ply'))

        if 0:
            from psbody.mesh import MeshViewers
            mvs = MeshViewers(shape=(2, 2))
            mvs[0][0].set_static_meshes([m1])
            m1.f = []
            mvs[0][1].set_static_meshes([m1])
            mvs[1][0].set_static_meshes([m2])
            m2.f = []
            mvs[1][1].set_static_meshes([m2])