Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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