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()
Beispiel #4
0
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()
Beispiel #5
0
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()