def test_write_and_read_binary_float_vertex_colors_to_and_from_off_file(
            self):
        self.mesh.request_vertex_colors()

        options = openmesh.Options(openmesh.Options.VertexColor)

        ok = openmesh.read_mesh(self.mesh, "meshlab.ply", options)

        self.assertTrue(ok)

        options.clear()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.Binary
        options += openmesh.Options.ColorFloat

        # Write the mesh
        ok = openmesh.write_mesh(self.mesh, "cube_floating_binary.off",
                                 options)
        self.assertTrue(ok)
        self.mesh.clear()
        options.clear()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.Binary
        options += openmesh.Options.ColorFloat
        ok = openmesh.read_mesh(self.mesh, "cube_floating_binary.off", options)
        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)

        self.assertFalse(options.vertex_has_normal())
        self.assertFalse(options.vertex_has_texcoord())
        self.assertFalse(options.face_has_color())
        self.assertTrue(options.vertex_has_color())
        self.assertTrue(options.color_is_float())
        self.assertTrue(options.is_binary())

        self.mesh.release_vertex_colors()
Exemplo n.º 2
0
 def test_write_and_read_binary_float_vertex_colors_to_and_from_off_file(self):
     self.mesh.request_vertex_colors()
     
     options = openmesh.Options(openmesh.Options.VertexColor)
     
     ok = openmesh.read_mesh(self.mesh, "meshlab.ply", options)
     
     self.assertTrue(ok)
     
     options.clear()
     options += openmesh.Options.VertexColor
     options += openmesh.Options.Binary
     options += openmesh.Options.ColorFloat
     
     # Write the mesh
     ok = openmesh.write_mesh(self.mesh, "cube_floating_binary.off", options)
     self.assertTrue(ok)
     self.mesh.clear()
     options.clear()
     options += openmesh.Options.VertexColor
     options += openmesh.Options.Binary
     options += openmesh.Options.ColorFloat
     ok = openmesh.read_mesh(self.mesh, "cube_floating_binary.off", options)
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)
     
     self.assertFalse(options.vertex_has_normal())
     self.assertFalse(options.vertex_has_texcoord())
     self.assertFalse(options.face_has_color())
     self.assertTrue(options.vertex_has_color())
     self.assertTrue(options.color_is_float())
     self.assertTrue(options.is_binary())
     
     self.mesh.release_vertex_colors()
Exemplo n.º 3
0
def makeDrainMeshPaths(path, tolerance, cpus):
    import openmesh as om

    mesh = om.PolyMesh()
    om.read_mesh(mesh, path)

    drainCurves = drainMeshPaths(mesh, tolerance, cpus)
    outfile = r'C:\Users\Christian\Desktop\drainCurves.obj'
    result = om.write_mesh(drainCurves, outfile)

    if result:
        return True
    else:
        return False
Exemplo n.º 4
0
 def test_load_simple_ply_with_normals(self):
     self.mesh.request_vertex_normals()
     
     options = openmesh.Options()
     options += openmesh.Options.VertexNormal
     
     ok = openmesh.read_mesh(self.mesh, "cube-minimal-normals.ply", options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     
     self.assertTrue(options.vertex_has_normal())
     self.assertFalse(options.vertex_has_texcoord())
     self.assertFalse(options.vertex_has_color())
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[0], 0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[2], 1.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[0], 1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[1], 0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[2], 0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[0], 1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[2], 1.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[0], 1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[1], 1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[2], 2.0)
     
     self.mesh.release_vertex_normals()
def Decimate_mesh(meshvtk,name_vtkmesh,nvertices=2000):
    print 'test'
    stlWriter = vtk.vtkSTLWriter()
    stlWriter.SetFileName('meshdecimated.stl')
    stlWriter.SetInputData(meshvtk)
    stlWriter.Write()
    
    mesh_om = om.PolyMesh()
    Result=om.read_mesh(mesh_om, "meshdecimated.stl")
    print Result
    deci_om=om.PolyMeshDecimater(mesh_om)
    mh=om.PolyMeshModQuadricHandle()   
    
    deci_om.add(mh)
    deci_om.initialize()
    deci_om.decimate_to(nvertices)
    mesh_om.garbage_collection()
    
    
    
    assert mesh_om.n_vertices()==nvertices, 'vertices goal not acomplished; nvertices={0:d}'.format(mesh_om.n_vertices())
    print "Decimation to {0} vertices Sucessful".format(nvertices)
    om.write_mesh(mesh_om,'meshdecimated.stl')
    stlReader = vtk.vtkSTLReader()
    stlReader.SetFileName('meshdecimated.stl')
    stlReader.Update()   
      
    vtkwrite=vtk.vtkPolyDataWriter()
    vtkwrite.SetInputData(stlReader.GetOutput())
    vtkwrite.SetFileName(name_vtkmesh)
    vtkwrite.Write()
    
    print "enters"
Exemplo n.º 6
0
 def test_load_ply_from_mesh_lab_with_vertex_colors(self):
     self.mesh.request_vertex_colors()
 
     options = openmesh.Options()
     options += openmesh.Options.VertexColor
 
     ok = openmesh.read_mesh(self.mesh, "meshlab.ply", options)
 
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
 
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)
 
     self.assertFalse(options.vertex_has_normal())
     self.assertFalse(options.vertex_has_texcoord())
     self.assertTrue(options.vertex_has_color())
 
     self.mesh.release_vertex_colors()
Exemplo n.º 7
0
    def test_load_simple_ply_with_texcoords(self):
        self.mesh.request_vertex_texcoords2D()
        
        options = openmesh.Options()
        options += openmesh.Options.VertexTexCoord
        
        ok = openmesh.read_mesh(self.mesh, "cube-minimal-texCoords.ply", options)
        
        self.assertTrue(ok)
        
        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)

        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(0))[0], 10.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(0))[1], 10.0)

        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(2))[0], 6.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(2))[1], 6.0)

        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(4))[0], 9.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(4))[1], 9.0)

        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(7))[0], 12.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(7))[1], 12.0)
        
        self.assertFalse(options.vertex_has_normal())
        self.assertTrue(options.vertex_has_texcoord())
        self.assertFalse(options.vertex_has_color())
        
        self.mesh.release_vertex_texcoords2D()
Exemplo n.º 8
0
 def test_load_simple_obj_check_texcoords(self):
     self.mesh.request_halfedge_texcoords2D()
     
     options = openmesh.Options()
     options += openmesh.Options.FaceTexCoord
     
     file_name = "cube-minimal-texCoords.obj"
     
     ok = openmesh.read_mesh(self.mesh, file_name, options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle( 0))[0], 1.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle( 0))[1], 1.0)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(10))[0], 3.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(10))[1], 3.0)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(19))[0], 6.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(19))[1], 6.0)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(24))[0], 7.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(24))[1], 7.0)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(30))[0], 9.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(30))[1], 9.0)
     
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(35))[0], 12.0)
     self.assertEqual(self.mesh.texcoord2D(self.mesh.halfedge_handle(35))[1], 12.0)
     
     self.mesh.release_halfedge_texcoords2D()
Exemplo n.º 9
0
    def test_write_triangle(self):
        filename = "triangle-minimal.om"

        # Generate data
        v1 = self.mesh.add_vertex(openmesh.Vec3d(1.0, 0.0, 0.0))
        v2 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 1.0, 0.0))
        v3 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 0.0, 1.0))
        self.mesh.add_face(v1, v2, v3)

        # Save
        ok = openmesh.write_mesh(self.mesh, filename)
        self.assertTrue(ok)

        # Reset
        self.mesh.clear()

        # Load
        ok = openmesh.read_mesh(self.mesh, filename)
        self.assertTrue(ok)

        # Compare
        self.assertEqual(self.mesh.n_vertices(), 3)
        self.assertEqual(self.mesh.n_edges(), 3)
        self.assertEqual(self.mesh.n_faces(), 1)

        self.assertEqual(self.mesh.point(v1), openmesh.Vec3d(1.0, 0.0, 0.0))
        self.assertEqual(self.mesh.point(v2), openmesh.Vec3d(0.0, 1.0, 0.0))
        self.assertEqual(self.mesh.point(v3), openmesh.Vec3d(0.0, 0.0, 1.0))

        # Cleanup
        os.remove(filename)
Exemplo n.º 10
0
 def test_load_simple_om_with_vertex_colors(self):
     self.mesh.request_vertex_colors()
     
     options = openmesh.Options()
     options += openmesh.Options.VertexColor
     
     ok = openmesh.read_mesh(self.mesh, "cube-minimal-vertexColors.om", options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 0.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 0.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)
     
     self.assertFalse(options.vertex_has_normal())
     self.assertFalse(options.vertex_has_texcoord())
     self.assertTrue(options.vertex_has_color())
     
     self.mesh.release_vertex_colors()
Exemplo n.º 11
0
 def test_load_simple_obj_with_vertex_colors_as_vc_lines(self):
     self.mesh.request_vertex_colors()
     
     options = openmesh.Options()
     options += openmesh.Options.VertexColor
     
     file_name = "cube-minimal-vertex-colors-as-vc-lines.obj"
     
     ok = openmesh.read_mesh(self.mesh, file_name, options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 0.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 0.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 1.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)
     
     self.mesh.release_vertex_colors()
Exemplo n.º 12
0
 def test_write_triangle(self):
     filename = "triangle-minimal.om";
     
     # Generate data
     v1 = self.mesh.add_vertex(openmesh.Vec3d(1.0, 0.0, 0.0))
     v2 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 1.0, 0.0))
     v3 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 0.0, 1.0))
     self.mesh.add_face(v1, v2, v3)
     
     # Save
     ok = openmesh.write_mesh(self.mesh, filename)
     self.assertTrue(ok)
     
     # Reset
     self.mesh.clear()
     
     # Load
     ok = openmesh.read_mesh(self.mesh, filename)
     self.assertTrue(ok)
     
     # Compare
     self.assertEqual(self.mesh.n_vertices(), 3)
     self.assertEqual(self.mesh.n_edges(), 3)
     self.assertEqual(self.mesh.n_faces(), 1)
     
     self.assertEqual(self.mesh.point(v1), openmesh.Vec3d(1.0, 0.0, 0.0))
     self.assertEqual(self.mesh.point(v2), openmesh.Vec3d(0.0, 1.0, 0.0))
     self.assertEqual(self.mesh.point(v3), openmesh.Vec3d(0.0, 0.0, 1.0))
     
     # Cleanup
     os.remove(filename)
    def test_load_simple_obj_with_vertex_colors_as_vc_lines(self):
        self.mesh.request_vertex_colors()

        options = openmesh.Options()
        options += openmesh.Options.VertexColor

        file_name = "cube-minimal-vertex-colors-as-vc-lines.obj"

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 0.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 1.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 1.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 0.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 1.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 1.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)

        self.mesh.release_vertex_colors()
Exemplo n.º 14
0
    def test_load_simple_om_with_texcoords(self):
        self.mesh.request_vertex_texcoords2D()

        options = openmesh.Options()
        options += openmesh.Options.VertexTexCoord
        
        ok = openmesh.read_mesh(self.mesh, "cube-minimal-texCoords.om", options)
        
        self.assertTrue(ok)
        
        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)
        
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(0))[0], 10.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(0))[1], 10.0)
        
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(2))[0], 6.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(2))[1], 6.0)
        
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(4))[0], 9.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(4))[1], 9.0)
        
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(7))[0], 12.0)
        self.assertEqual(self.mesh.texcoord2D(self.mesh.vertex_handle(7))[1], 12.0)
        
        self.assertFalse(options.vertex_has_normal())
        self.assertTrue(options.vertex_has_texcoord())
        self.assertFalse(options.vertex_has_color())
        
        self.mesh.release_vertex_texcoords2D()
Exemplo n.º 15
0
    def test_write_and_read_binary_ply_with_float_vertex_colors(self):
        self.mesh.request_vertex_colors()

        options = openmesh.Options()
        options += openmesh.Options.VertexColor

        ok = openmesh.read_mesh(self.mesh, "meshlab.ply", options)

        self.assertTrue(ok)

        options += openmesh.Options.ColorFloat
        options += openmesh.Options.Binary

        ok = openmesh.write_mesh(self.mesh, "meshlab_binary_float.ply", options)
        self.assertTrue(ok)

        self.mesh.clear
        ok = openmesh.read_mesh(self.mesh, "meshlab_binary_float.ply", options)
        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)

        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
        self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)

        self.assertFalse(options.vertex_has_normal())
        self.assertFalse(options.vertex_has_texcoord())
        self.assertTrue(options.vertex_has_color())
        self.assertTrue(options.color_is_float())
        self.assertTrue(options.is_binary())

        self.mesh.release_vertex_colors()
Exemplo n.º 16
0
 def test_write_and_read_binary_ply_with_float_vertex_colors(self):
     self.mesh.request_vertex_colors()
     
     options = openmesh.Options()
     options += openmesh.Options.VertexColor
     
     ok = openmesh.read_mesh(self.mesh, "meshlab.ply", options)
     
     self.assertTrue(ok)
     
     options += openmesh.Options.ColorFloat
     options += openmesh.Options.Binary
     
     ok = openmesh.write_mesh(self.mesh, "meshlab_binary_float.ply", options)
     self.assertTrue(ok)
     
     self.mesh.clear
     ok = openmesh.read_mesh(self.mesh, "meshlab_binary_float.ply", options)
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(0))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(3))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(4))[2], 1.0)
     
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[0], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[1], 0.0)
     self.assertEqual(self.mesh.color(self.mesh.vertex_handle(7))[2], 1.0)
     
     self.assertFalse(options.vertex_has_normal())
     self.assertFalse(options.vertex_has_texcoord())
     self.assertTrue(options.vertex_has_color())
     self.assertTrue(options.color_is_float())
     self.assertTrue(options.is_binary())
     
     self.mesh.release_vertex_colors()
Exemplo n.º 17
0
 def test_load_simple_point_ply_file_with_bad_encoding(self):
     ok = openmesh.read_mesh(self.mesh, "pointCloudBadEncoding.ply")
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 10)
     self.assertEqual(self.mesh.n_edges(), 0)
     self.assertEqual(self.mesh.n_faces(), 0)
Exemplo n.º 18
0
 def test_load_simple_ply(self):
     ok = openmesh.read_mesh(self.mesh, "cube-minimal.ply")
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
Exemplo n.º 19
0
 def test_load_simple_stl_file(self):
     ok = openmesh.read_mesh(self.mesh, "cube1.stl")
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 7526)
     self.assertEqual(self.mesh.n_edges(), 22572)
     self.assertEqual(self.mesh.n_faces(), 15048)
Exemplo n.º 20
0
    def test_load_simple_point_ply_file_with_bad_encoding(self):
        ok = openmesh.read_mesh(self.mesh, "pointCloudBadEncoding.ply")

        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 10)
        self.assertEqual(self.mesh.n_edges(), 0)
        self.assertEqual(self.mesh.n_faces(), 0)
Exemplo n.º 21
0
 def test_load_simple_obj(self):
     ok = openmesh.read_mesh(self.mesh, "cube-minimal.obj")
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
Exemplo n.º 22
0
def read_obj(filename):
    mesh = OM.TriMesh()
    options = OM.Options()
    ok = OM.read_mesh(mesh, filename, options)
    mesh.request_face_normals()
    mesh.update_face_normals()
    if not ok:
        raise RuntimeError('read_obj() failed to read file: ' + filename)
    return mesh
    def test_write_and_read_vertex_colors_to_and_from_off_file(self):
        self.mesh.request_vertex_colors()

        self.mesh.add_vertex(openmesh.Vec3d(0, 0, 1))
        self.mesh.add_vertex(openmesh.Vec3d(0, 1, 0))
        self.mesh.add_vertex(openmesh.Vec3d(0, 1, 1))
        self.mesh.add_vertex(openmesh.Vec3d(1, 0, 1))

        # Using the default openmesh Python color type
        testColor = openmesh.Vec4f(1.0, 0.5, 0.25, 1.0)

        # Setting colors (different from black)
        for v in self.mesh.vertices():
            self.mesh.set_color(v, testColor)

        # Check if the colors are correctly set
        count = 0
        for v in self.mesh.vertices():
            color = self.mesh.color(v)
            if color[0] != testColor[0] or color[1] != testColor[1] or color[
                    2] != testColor[2]:
                count += 1

        self.assertEqual(count, 0)

        options = openmesh.Options()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.ColorFloat

        openmesh.write_mesh(self.mesh, "temp.off", options)
        openmesh.read_mesh(self.mesh, "temp.off", options)

        # Check if vertices still have the same color
        count = 0
        for v in self.mesh.vertices():
            color = self.mesh.color(v)
            if color[0] != testColor[0] or color[1] != testColor[1] or color[
                    2] != testColor[2]:
                count += 1

        self.assertEqual(count, 0)

        self.mesh.release_vertex_colors()
Exemplo n.º 24
0
    def test_write_and_read_vertex_colors_to_and_from_off_file(self):
        self.mesh.request_vertex_colors()

        self.mesh.add_vertex(openmesh.Vec3d(0, 0, 1))
        self.mesh.add_vertex(openmesh.Vec3d(0, 1, 0))
        self.mesh.add_vertex(openmesh.Vec3d(0, 1, 1))
        self.mesh.add_vertex(openmesh.Vec3d(1, 0, 1))
        
        # Using the default openmesh Python color type
        testColor = openmesh.Vec4f(1.0, 0.5, 0.25, 1.0)
        
        # Setting colors (different from black)
        for v in self.mesh.vertices():
            self.mesh.set_color(v, testColor)
        
        # Check if the colors are correctly set
        count = 0
        for v in self.mesh.vertices():
            color = self.mesh.color(v)
            if color[0] != testColor[0] or color[1] != testColor[1] or color[2] != testColor[2]:
                count += 1

        self.assertEqual(count, 0)

        options = openmesh.Options()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.ColorFloat
        
        openmesh.write_mesh(self.mesh, "temp.off", options)
        openmesh.read_mesh(self.mesh, "temp.off", options)

        # Check if vertices still have the same color
        count = 0
        for v in self.mesh.vertices():
            color = self.mesh.color(v)
            if color[0] != testColor[0] or color[1] != testColor[1] or color[2] != testColor[2]:
                count += 1

        self.assertEqual(count, 0)

        self.mesh.release_vertex_colors()
    def test_load_simple_obj_force_vertex_colors_although_not_available(self):
        self.mesh.request_vertex_colors()

        file_name = "cube-minimal.obj"

        options = openmesh.Options()
        options += openmesh.Options.VertexColor

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)
        self.assertEqual(self.mesh.n_halfedges(), 36)
Exemplo n.º 26
0
 def test_load_simple_obj_force_vertex_colors_although_not_available(self):
     self.mesh.request_vertex_colors()
     
     file_name = "cube-minimal.obj"
     
     options = openmesh.Options()
     options += openmesh.Options.VertexColor
     
     ok = openmesh.read_mesh(self.mesh, file_name, options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     self.assertEqual(self.mesh.n_halfedges(), 36)
Exemplo n.º 27
0
 def test_load_simple_stl_file_with_normals(self):
     self.mesh.request_face_normals()
     
     options = openmesh.Options()
     options += openmesh.Options.FaceNormal
     
     ok = openmesh.read_mesh(self.mesh, "cube1.stl", options)
     
     self.assertTrue(ok)
     
     self.assertAlmostEqual(self.mesh.normal(self.mesh.face_handle(0))[0], -0.038545)
     self.assertAlmostEqual(self.mesh.normal(self.mesh.face_handle(0))[1], -0.004330)
     self.assertAlmostEqual(self.mesh.normal(self.mesh.face_handle(0))[2],  0.999247)
     
     self.assertEqual(self.mesh.n_vertices(), 7526)
     self.assertEqual(self.mesh.n_edges(), 22572)
     self.assertEqual(self.mesh.n_faces(), 15048)
     
     self.mesh.release_face_normals()
    def test_load_simple_obj_check_texcoords(self):
        self.mesh.request_halfedge_texcoords2D()

        options = openmesh.Options()
        options += openmesh.Options.FaceTexCoord

        file_name = "cube-minimal-texCoords.obj"

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(0))[0], 1.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(0))[1], 1.0)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(10))[0], 3.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(10))[1], 3.0)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(19))[0], 6.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(19))[1], 6.0)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(24))[0], 7.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(24))[1], 7.0)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(30))[0], 9.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(30))[1], 9.0)

        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(35))[0], 12.0)
        self.assertEqual(
            self.mesh.texcoord2D(self.mesh.halfedge_handle(35))[1], 12.0)

        self.mesh.release_halfedge_texcoords2D()
    def test_load_obj_with_material(self):
        self.mesh.request_face_colors()

        options = openmesh.Options()
        options += openmesh.Options.FaceColor

        file_name = "square_material.obj"

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        fh = self.mesh.face_handle(self.mesh.halfedge_handle(0))

        self.assertTrue(fh.is_valid())

        self.assertAlmostEqual(self.mesh.color(fh)[0], 0.5, 2)
        self.assertAlmostEqual(self.mesh.color(fh)[1], 0.5, 2)
        self.assertAlmostEqual(self.mesh.color(fh)[2], 0.5, 2)

        self.mesh.release_face_colors()
Exemplo n.º 30
0
    def test_load_obj_with_material(self):
        self.mesh.request_face_colors()

        options = openmesh.Options()
        options += openmesh.Options.FaceColor

        file_name = "square_material.obj"

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        fh = self.mesh.face_handle(self.mesh.halfedge_handle(0))

        self.assertTrue(fh.is_valid())

        self.assertAlmostEqual(self.mesh.color(fh)[0], 0.5, 2)
        self.assertAlmostEqual(self.mesh.color(fh)[1], 0.5, 2)
        self.assertAlmostEqual(self.mesh.color(fh)[2], 0.5, 2)

        self.mesh.release_face_colors()
Exemplo n.º 31
0
    def calc_skel_radius(self, mesh_name=None, dim=3):
        """
        calc nearest mesh vertex of skeleton vertex
        """
        if mesh_name != None:
            self.mesh_name = mesh_name

        if self.mesh_name == None:
            print 'please set mesh_name before calc_skel_radius'
        elif os.path.isfile(self.mesh_name):
            mesh = om.TriMesh()
            assert om.read_mesh(mesh, self.mesh_name)
            mesh_vertices = np.zeros((mesh.n_vertices(), dim), dtype=float)
            for n, vh in enumerate(mesh.vertices()):
                for i in xrange(3):
                    mesh_vertices[n, i] = mesh.point(vh)[i]

            nbrs = NearestNeighbors(n_neighbors=1, algorithm='ball_tree').fit(mesh_vertices)
            self.vert_radius, indices = nbrs.kneighbors(self.verts)
        else:
            print 'cannot find mesh file', self.mesh_name                
            sys.exit(0)
Exemplo n.º 32
0
 def read_obj(self, path):
     mesh = openmesh.TriMesh()
     openmesh.read_mesh(mesh, path)
     return mesh
Exemplo n.º 33
0
    def test_write_triangle_vertex_integer_color(self):
        self.mesh.request_vertex_colors()

        options = openmesh.Options()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.ColorFloat

        filename = "triangle-minimal-ColorsPerVertex.om"

        # Generate data
        v1 = self.mesh.add_vertex(openmesh.Vec3d(1.0, 0.0, 0.0))
        v2 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 1.0, 0.0))
        v3 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 0.0, 1.0))
        self.mesh.add_face(v1, v2, v3)

        c1 = openmesh.Vec4f(0.00, 0.00, 0.50, 1.00)
        c2 = openmesh.Vec4f(0.25, 0.00, 0.00, 1.00)
        c3 = openmesh.Vec4f(0.00, 0.75, 0.00, 1.00)

        self.mesh.set_color(v1, c1)
        self.mesh.set_color(v2, c2)
        self.mesh.set_color(v3, c3)

        # Save
        ok = openmesh.write_mesh(self.mesh, filename, options)
        self.assertTrue(ok)

        self.mesh.release_vertex_colors()

        # Load
        cmpMesh = openmesh.TriMesh()
        cmpMesh.request_vertex_colors()
        ok = openmesh.read_mesh(cmpMesh, filename, options)
        self.assertTrue(ok)

        self.assertTrue(cmpMesh.has_vertex_colors())

        # Compare
        self.assertEqual(self.mesh.n_vertices(), 3)
        self.assertEqual(self.mesh.n_edges(), 3)
        self.assertEqual(self.mesh.n_faces(), 1)

        self.assertEqual(cmpMesh.point(v1), openmesh.Vec3d(1.0, 0.0, 0.0))
        self.assertEqual(cmpMesh.point(v2), openmesh.Vec3d(0.0, 1.0, 0.0))
        self.assertEqual(cmpMesh.point(v3), openmesh.Vec3d(0.0, 0.0, 1.0))

        self.assertAlmostEqual(cmpMesh.color(v1)[0], c1[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[1], c1[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[2], c1[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[3], c1[3], 2)

        self.assertAlmostEqual(cmpMesh.color(v2)[0], c2[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[1], c2[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[2], c2[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[3], c2[3], 2)

        self.assertAlmostEqual(cmpMesh.color(v3)[0], c3[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[1], c3[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[2], c3[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[3], c3[3], 2)

        # Clean up
        cmpMesh.release_vertex_colors()
        os.remove(filename)
    def test_load_simple_obj_check_halfedge_and_vertex_normals(self):
        self.mesh.request_halfedge_normals()
        self.mesh.request_vertex_normals()

        options = openmesh.Options()
        options += openmesh.Options.VertexNormal

        file_name = "cube-minimal.obj"

        ok = openmesh.read_mesh(self.mesh, file_name, options)

        self.assertTrue(ok)

        self.assertEqual(self.mesh.n_vertices(), 8)
        self.assertEqual(self.mesh.n_edges(), 18)
        self.assertEqual(self.mesh.n_faces(), 12)
        self.assertEqual(self.mesh.n_halfedges(), 36)

        # =====================================================
        # Check vertex normals
        # =====================================================

        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[0], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[1], -1.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[2], 0.0)

        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[0], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[1], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[2], 1.0)

        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[0], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[1], -1.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[2], 0.0)

        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[0], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[1], 0.0)
        self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[2], 1.0)

        # =====================================================
        # Check halfedge normals
        # =====================================================

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(0))[0], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(0))[1], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(0))[2], -1.0)

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(10))[0], -1.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(10))[1], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(10))[2], 0.0)

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(19))[0], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(19))[1], 1.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(19))[2], 0.0)

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(24))[0], 1.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(24))[1], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(24))[2], 0.0)

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(30))[0], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(30))[1], -1.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(30))[2], 0.0)

        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(35))[0], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(35))[1], 0.0)
        self.assertEqual(
            self.mesh.normal(self.mesh.halfedge_handle(35))[2], 1.0)

        self.mesh.release_vertex_normals()
        self.mesh.release_halfedge_normals()
    
if __name__ == '__main__':
    inpath='/media/roger/48BCFC2BBCFC1562/dataset/labels_registered_mha/label_warped10.mha'
    nvertices=2000
    imgitk = sitk.ReadImage(inpath)
    imgclean=clean_itkbin(imgitk,validlabel=2)
    meshvtk=generate_mesh(imgclean)
    _,_=compute_info_mesh(meshvtk)    
    WriteSTLMesh(meshvtk, 'meshdecimated.stl')
 
#===============================================================================
# 
# This part should be in a function but it crashes duw to openmesh :/  
#===============================================================================
    mesh_om = om.PolyMesh()
    Result=om.read_mesh(mesh_om, "meshdecimated.stl")
    assert Result, "Open mesh could not read file"
    deci_om=om.PolyMeshDecimater(mesh_om)
    mh=om.PolyMeshModQuadricHandle()   
    
    deci_om.add(mh)
    deci_om.initialize()
    deci_om.decimate_to(nvertices)
    mesh_om.garbage_collection()
    
    assert mesh_om.n_vertices()==nvertices, 'vertices goal not acomplished; nvertices={0:d}'.format(mesh_om.n_vertices())
    print "Decimation to {0} vertices Sucessful".format(nvertices)
    om.write_mesh(mesh_om,'meshdecimated.stl')
################################################################################    
    
    meshvtktmp=LoadSTLMesh('meshdecimated.stl') 
Exemplo n.º 36
0
    def test_write_triangle_vertex_integer_color(self):
        self.mesh.request_vertex_colors()
            
        options = openmesh.Options()
        options += openmesh.Options.VertexColor
        options += openmesh.Options.ColorFloat

        filename = "triangle-minimal-ColorsPerVertex.om"
            
        # Generate data
        v1 = self.mesh.add_vertex(openmesh.Vec3d(1.0, 0.0, 0.0))
        v2 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 1.0, 0.0))
        v3 = self.mesh.add_vertex(openmesh.Vec3d(0.0, 0.0, 1.0))
        self.mesh.add_face(v1, v2, v3)
        
        c1 = openmesh.Vec4f(0.00, 0.00, 0.50, 1.00)
        c2 = openmesh.Vec4f(0.25, 0.00, 0.00, 1.00)
        c3 = openmesh.Vec4f(0.00, 0.75, 0.00, 1.00)
    
        self.mesh.set_color(v1, c1)
        self.mesh.set_color(v2, c2)
        self.mesh.set_color(v3, c3)
            
        # Save
        ok = openmesh.write_mesh(self.mesh, filename, options)
        self.assertTrue(ok)
            
        self.mesh.release_vertex_colors()
            
        # Load
        cmpMesh = openmesh.TriMesh()
        cmpMesh.request_vertex_colors()
        ok = openmesh.read_mesh(cmpMesh, filename, options)
        self.assertTrue(ok)
            
        self.assertTrue(cmpMesh.has_vertex_colors())
            
        # Compare
        self.assertEqual(self.mesh.n_vertices(), 3)
        self.assertEqual(self.mesh.n_edges(), 3)
        self.assertEqual(self.mesh.n_faces(), 1)
        
        self.assertEqual(cmpMesh.point(v1), openmesh.Vec3d(1.0, 0.0, 0.0))
        self.assertEqual(cmpMesh.point(v2), openmesh.Vec3d(0.0, 1.0, 0.0))
        self.assertEqual(cmpMesh.point(v3), openmesh.Vec3d(0.0, 0.0, 1.0))
        
        self.assertAlmostEqual(cmpMesh.color(v1)[0], c1[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[1], c1[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[2], c1[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v1)[3], c1[3], 2)
        
        self.assertAlmostEqual(cmpMesh.color(v2)[0], c2[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[1], c2[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[2], c2[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v2)[3], c2[3], 2)
        
        self.assertAlmostEqual(cmpMesh.color(v3)[0], c3[0], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[1], c3[1], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[2], c3[2], 2)
        self.assertAlmostEqual(cmpMesh.color(v3)[3], c3[3], 2)
        
        # Clean up
        cmpMesh.release_vertex_colors()
        os.remove(filename)
Exemplo n.º 37
0
 def test_load_simple_obj_check_halfedge_and_vertex_normals(self):
     self.mesh.request_halfedge_normals()
     self.mesh.request_vertex_normals()
     
     options = openmesh.Options()
     options += openmesh.Options.VertexNormal
     
     file_name = "cube-minimal.obj"
     
     ok = openmesh.read_mesh(self.mesh, file_name, options)
     
     self.assertTrue(ok)
     
     self.assertEqual(self.mesh.n_vertices(), 8)
     self.assertEqual(self.mesh.n_edges(), 18)
     self.assertEqual(self.mesh.n_faces(), 12)
     self.assertEqual(self.mesh.n_halfedges(), 36)
     
     # =====================================================
     # Check vertex normals
     # =====================================================
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[1], -1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(0))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(3))[2],  1.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[1], -1.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(4))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.vertex_handle(7))[2],  1.0)
     
     # =====================================================
     # Check halfedge normals
     # =====================================================
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle( 0))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle( 0))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle( 0))[2], -1.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(10))[0], -1.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(10))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(10))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(19))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(19))[1],  1.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(19))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(24))[0],  1.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(24))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(24))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(30))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(30))[1], -1.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(30))[2],  0.0)
     
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(35))[0],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(35))[1],  0.0)
     self.assertEqual(self.mesh.normal(self.mesh.halfedge_handle(35))[2],  1.0)
     
     self.mesh.release_vertex_normals()
     self.mesh.release_halfedge_normals()