#!/usr/bin/env python # encoding: utf-8 # Copyright (c) 2013 Max Planck Society. All rights reserved. import numpy as np import unittest import os from . import test_data_folder, temporary_files_folder class TestVisibility(unittest.TestCase): @unittest.skip('Too long - skipping for the moment.') def test_qslim_smoke_test(self): from psbody.mesh.mesh import Mesh from psbody.mesh.topology.decimation import qslim_decimator from psbody.mesh.geometry.triangle_area import triangle_area m = Mesh(filename=os.path.join(test_data_folder, 'female_template.ply')) ta = triangle_area(m.v, m.f) m.set_face_colors(ta / np.max(ta)) qslimmer = qslim_decimator(m, factor=0.1) m2 = qslimmer(m) ta = triangle_area(m2.v, m2.f) m2.set_face_colors(ta / np.max(ta)) class TestLoopSubdivision(unittest.TestCase): @unittest.skipIf( not os.path.isfile(os.path.join(test_data_folder, 'female_template.ply')), 'No data file.') 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]) class TestConnectivity(unittest.TestCase): @unittest.skipIf( not os.path.isfile(os.path.join(test_data_folder, 'female_template.ply')), 'No data file.') def test_connectivity_smoke_test(self): from psbody.mesh import Mesh from psbody.mesh.topology.connectivity import get_vert_connectivity, get_faces_per_edge m = Mesh(filename=os.path.join(test_data_folder, 'female_template.ply')) vconn = get_vert_connectivity(m) fpe = get_faces_per_edge(m) self.assertIsNotNone(vconn) self.assertIsNotNone(fpe)