def readPolyData(filename, computeNormals=False): ext = os.path.splitext(filename)[1].lower() readers = { '.vtp' : vtk.vtkXMLPolyDataReader, '.vtk' : vtk.vtkPolyDataReader, '.ply' : vtk.vtkPLYReader, '.obj' : vtk.vtkOBJReader, '.stl' : vtk.vtkSTLReader, } try: readers['.pcd'] = vtk.vtkPCDReader except AttributeError: pass if ext not in readers: raise Exception('Unknown file extension in readPolyData: %s' % filename) reader = readers[ext]() reader.SetFileName(filename) reader.Update() polyData = shallowCopy(reader.GetOutput()) if polyData.GetNumberOfPoints() and not polyData.GetNumberOfCells(): f = vtk.vtkVertexGlyphFilter() f.SetInputData(polyData) f.Update() polyData = shallowCopy(f.GetOutput()) if computeNormals: return _computeNormals(polyData) else: return polyData
def numpyToPolyData(pts, pointData=None, createVertexCells=True): pd = vtk.vtkPolyData() pd.SetPoints(getVtkPointsFromNumpy(pts.copy())) if pointData is not None: for key, value in pointData.iteritems(): addNumpyToVtk(pd, value.copy(), key) if createVertexCells: f = vtk.vtkVertexGlyphFilter() f.SetInputData(pd) f.Update() pd = shallowCopy(f.GetOutput()) return pd