def vtk_render_polydata(poly): """Helper function to turn VTK poly data to a rendered window """ # now viusalize mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(poly) mapper.SetScalarRange(0, 7) actor = vtk.vtkActor() actor.SetMapper(mapper) # now render camera = vtk.vtkCamera() camera.SetPosition(1, 1, 1) camera.SetFocalPoint(0, 0, 0) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkXRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.SetActiveCamera(camera) renderer.ResetCamera() renderer.SetBackground(0, 0, 0) renWin.SetSize(300, 300) renWin.Render() iren.Start()
def build_triangle(): """Build a triangle mesh using the raw points and faces https://lorensen.github.io/VTKExamples/site/Python/PolyData/ColoredTriangle/ """ Points = vtk.vtkPoints() Triangles = vtk.vtkCellArray() Points.InsertNextPoint(1.0, 0.0, 0.0) Points.InsertNextPoint(0.0, 0.0, 0.0) Points.InsertNextPoint(0.0, 1.0, 0.0) Triangle = vtk.vtkTriangle() Triangle.GetPointIds().SetId(0, 0) Triangle.GetPointIds().SetId(1, 1) Triangle.GetPointIds().SetId(2, 2) Triangles.InsertNextCell(Triangle) # setup colors Colors = vtk.vtkUnsignedCharArray() Colors.SetNumberOfComponents(3) Colors.SetName("Colors") Colors.InsertNextTuple3(255, 0, 0) Colors.InsertNextTuple3(0, 255, 0) Colors.InsertNextTuple3(0, 0, 255) polydata = vtk.vtkPolyData() polydata.SetPoints(Points) polydata.SetPolys(Triangles) polydata.GetPointData().SetScalars(Colors) polydata.Modified() if vtk.VTK_MAJOR_VERSION <= 5: polydata.Update() # now display it mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(polydata) actor = vtk.vtkActor() actor.SetMapper(mapper) # now render stuff camera = vtk.vtkCamera() camera.SetPosition(1, 1, 1) camera.SetFocalPoint(0, 0, 0) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkXRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.SetActiveCamera(camera) renderer.ResetCamera() renderer.SetBackground(0, 0, 0) renWin.Render() iren.Start()
def init_all_VolumeRendering_component(self, flagMesh): self.flagMesh = flagMesh self.ren= vtk.vtkRenderer() self.renWin.AddRenderer(self.ren) self.iren = vtk.vtkXRenderWindowInteractor() self.iren.SetRenderWindow(self.renWin) self.ren.GetVolumes() self.alpha_channel_function = vtk.vtkPiecewiseFunction() self.alpha_channel_function.AddPoint(0, 0.0, 0.5, 0.0) self.alpha_channel_function.AddPoint(255, 1, 0.5, 0.0) self.color_function = vtk.vtkColorTransferFunction() self.color_function.AddRGBPoint(0, 0, 0.0, 0.0, 0.5, 0.0) self.color_function.AddRGBPoint(255, 1, 1, 1, 0.5, 0.0) self.volume_property = vtk.vtkVolumeProperty() self.volume_property.SetColor(self.color_function) self.volume_property.SetScalarOpacity(self.alpha_channel_function) self.data_importer = vtk.vtkImageImport() if self.flagMesh : self.volume_mapper = vtk.vtkPolyDataMapper() else: self.volume_mapper = vtk.vtkFixedPointVolumeRayCastMapper() self.volume = vtk.vtkVolume()
def draw_polyhedron_vtk(vertices, faces): r"""Plot a polyhedron using VTK mesh = draw_polyhedron_vtk(v, f) Parameters ---------- vertices : (v, 3) numpy array Array holding all the vertices of the mesh faces : (f, 3) numpy array Array holding all of the faces of the mesh Returns ------- none Author ------ Shankar Kulumani GWU [email protected] """ # create a polydata object polyData = meshtopolydata(vertices, faces) # render and view mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(polyData) actor = vtk.vtkActor() actor.SetMapper(mapper) # now render camera = vtk.vtkCamera() camera.SetPosition(1, 1, 1) camera.SetFocalPoint(0, 0, 0) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkXRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.SetActiveCamera(camera) renderer.ResetCamera() renderer.SetBackground(0, 0, 0) renWin.SetSize(800,800) renWin.Render() iren.Start()
def vtk_show(renderer, width=800, height=600): r"""Start a vtk renderer window and interact vtk_show(renderer, width, height) Parameters ---------- renderer : vtk.vtkRenderer() Renderer object in vtk width, height : int Width and height in pixels of resulting window Returns ------- none Author ------ Shankar Kulumani GWU [email protected] """ # now render camera = vtk.vtkCamera() camera.SetPosition(2, 2, 2) camera.SetFocalPoint(0, 0, 0) renderer.SetActiveCamera(camera) renderer.ResetCamera() renderer.SetBackground(0, 0, 0) renderWindow = vtk.vtkRenderWindow() # renderWindow.SetOffScreenRendering(1) renderWindow.AddRenderer(renderer) renderWindow.SetSize(width, height) iren = vtk.vtkXRenderWindowInteractor() iren.SetRenderWindow(renderWindow) renderWindow.Render() iren.Start()
def cube(): """Construct a cube manually https://www.vtk.org/Wiki/VTK/Examples/Python/DataManipulation/Cube.py """ verts = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0), (1.0, 0.0, 1.0), (1.0, 1.0, 1.0), (0.0, 1.0, 1.0)] faces = [(0, 1, 2, 3), (4, 5, 6, 7), (0, 1, 5, 4), (1, 2, 6, 5), (2, 3, 7, 6), (3, 0, 4, 7)] # cube = vtk.vtkPolyData() # points = vtk.vtkPoints() # polys = vtk.vtkCellArray() # insert cell as a number and a tuple of the vertices in the face # scalars = vtk.vtkFloatArray() # # load the data # for i in range(8): # points.InsertPoint(i, verts[i]) # for i in range(6): # polys.InsertNextCell(vtk_mesh.make_vtk_idlist(faces[i])) # for i in range(8): # scalars.InsertTuple1(i, i) # # now assign everything to the polydata object # cube.SetPoints(points) # cube.SetPolys(polys) # cube.GetPointData().SetScalars(scalars) cube = vtk_mesh.numpy_to_vtk_poly(np.array(verts), np.array(faces)) # now viusalize mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(cube) mapper.SetScalarRange(0, 7) actor = vtk.vtkActor() actor.SetMapper(mapper) # now render camera = vtk.vtkCamera() camera.SetPosition(1, 1, 1) camera.SetFocalPoint(0, 0, 0) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkXRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.SetActiveCamera(camera) renderer.ResetCamera() renderer.SetBackground(0, 0, 0) renWin.SetSize(300, 300) renWin.Render() iren.Start()