def importFromFileToMesh(path): scene = pyassimp.load(path) if len(scene.meshes) == 0: print "assimp_importer: found no mesh, abort" return None elif len(scene.meshes) > 1: print "assimp_importer: found %s meshes, abort", len(scene.meshes) return None else: faces = scene.meshes[0].faces vertices = scene.meshes[0].vertices result = ROSMeshTriangleMesh() for vertex in vertices: ros_point = ROSPoint() ros_point.x = vertex[0] ros_point.y = vertex[1] ros_point.z = vertex[2] result.vertices.append(ros_point) for face in faces: if len(face.indices) != 3: print "WARNING: Triangle contained $s instead of 3 indicies", len(face.indices) ros_triangle = ROSTriangleIndices() ros_triangle.vertex_indices = [face.indices[0], face.indices[1], face.indices[2]] result.triangles.append(ros_triangle) pyassimp.release(scene) return result
def toTriangleMesh3D(geometry, is_text=False): if not is_text: geometry = db().execute(ST_AsText(geometry)).scalar() mesh = TriangleMesh() triangles = geometry.split(')),') for triangle in triangles: index = [] points = triangle.strip('TIN Z(((').strip('))').split(',') for point in points[0:len(points) - 1]: values = [float(x) for x in point.split()] index.append(len(mesh.vertices)) point = Point() point.x = values[0] point.y = values[1] point.z = values[2] mesh.vertices.append(point) indices = TriangleIndices() indices.vertex_indices = index mesh.triangles.append(indices) return mesh
def toTriangleMesh3D(geometry, is_text = False): if not is_text: geometry = db().execute(ST_AsText(geometry)).scalar() mesh = TriangleMesh() triangles = geometry.split(')),') for triangle in triangles: index = [] points = triangle.strip('TIN Z(((').strip('))').split(',') for point in points[0:len(points)-1]: values = [float(x) for x in point.split()] index.append(len(mesh.vertices)) point = Point() point.x = values[0] point.y = values[1] point.z = values[2] mesh.vertices.append(point) indices = TriangleIndices() indices.vertex_indices = index mesh.triangles.append(indices) return mesh