Exemple #1
0
class VTKFrame(qg.QFrame):

    def __init__(self, actors=None, parent=None):
        import vtk
        from vtk.qt4.QVTKRenderWindowInteractor import \
            QVTKRenderWindowInteractor

        qg.QFrame.__init__(self, parent)
        layout = qg.QGridLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.setLayout(layout)

        self.vtk_widget = QVTKRenderWindowInteractor(self)
        layout.addWidget(self.vtk_widget, 0, 0)

        self.renderer = vtk.vtkRenderer()
        self.vtk_widget.GetRenderWindow().AddRenderer(self.renderer)
        self.iren = self.vtk_widget.GetRenderWindow().GetInteractor()

        if actors:
            for a in actors:
                self.renderer.AddActor(a)

    def init(self):
        self.iren.Initialize()

    def add_actor(self, actor):
        self.renderer.AddActor(actor)
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create cylinder
        cylinder = vtk.vtkCylinder()
        cylinder.SetCenter(0, 0, 0)
        cylinder.SetRadius(1.0)
        
        # Create plane
        plane = vtk.vtkPlane()
        plane.SetOrigin(0, 0, 0)
        plane.SetNormal(0, -1, 0)

        # Cut the cylinder
        cuted_cylinder = vtk.vtkImplicitBoolean()
        cuted_cylinder.SetOperationTypeToIntersection()
        #cuted_cylinder.SetOperationTypeToUnion()
        cuted_cylinder.AddFunction(cylinder)
        cuted_cylinder.AddFunction(plane)

        # Sample 
        sample = vtk.vtkSampleFunction()
        sample.SetImplicitFunction(cuted_cylinder)
        sample.SetModelBounds(-1.5 , 1.5 , -1.5 , 1.5 , -1.5 , 1.5)
        sample.SetSampleDimensions(60, 60, 60)
        sample.SetComputeNormals(0)

        #
        surface = vtk.vtkContourFilter()
        #surface.SetInput(sample.GetOutput())
        surface.SetInputConnection(sample.GetOutputPort())
 
        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        #mapper.SetInput(surface.GetOutput())
        mapper.SetInputConnection(surface.GetOutputPort())
 
        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
 
        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True
Exemple #3
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        source = vtk.vtkSphereSource()
        #source = vtk.vtkConeSource()
        source.Update()

        polydata = vtk.vtkPolyData()
        polydata.SetPoints(source.GetOutput().GetPoints())

        # Construct the surface the create isosurface
        surf = vtk.vtkSurfaceReconstructionFilter()
        surf.SetInput(polydata)

        cf = vtk.vtkContourFilter()
        cf.SetInputConnection(surf.GetOutputPort())
        cf.SetValue(0, 0.0)

        # Sometimes the contouring algorithm can create a volumn whose gradient
        # vector and ordering of polygon (using the right hand rule) are
        # inconsistent, vetReverseSense cures this problem.
        reverse = vtk.vtkReverseSense()
        reverse.SetInputConnection(cf.GetOutputPort())
        reverse.ReverseCellsOn()
        reverse.ReverseNormalsOn()

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(reverse.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #4
0
    def initVTKWidget(self, frame):
        """Sets up vtkWidget inside frame.
		
		Also sets up corresponding renderer and interactor.
		
		Args:
			frame (QtGui.QFrame): Parenting frame.
			
		Returns:
			tuple: Tuple containing:
			
				* vtkWidget (vtk.qt4.QVTKRenderWindowInteractor.QVTKRenderWindowInteractor): Qt vtk window interactor.
				* ren (vtk.vtkRenderer)
				* iren (vtk.vtkRenderWindowInteractor)
				
		"""

        vtkWidget = QVTKRenderWindowInteractor(frame)
        ren = vtk.vtkRenderer()
        vtkWidget.GetRenderWindow().AddRenderer(ren)
        iren = vtkWidget.GetRenderWindow().GetInteractor()
        iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
        ren.ResetCamera()

        return vtkWidget, ren, iren
Exemple #5
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None, dataset=None):
        QtGui.QMainWindow.__init__(self, parent)

        # Create Dataset
        self.dataset = create_3gauss() if dataset is None else dataset

        # Compute Reeb graph
        #self.rg = pyrg.computeCT_Grid3D(self.dataset)

        # Create UI
        self.frame = QtGui.QFrame()

        self.hl = QtGui.QHBoxLayout()
        self.vtkWidget_vr = QVTKRenderWindowInteractor(self.frame)
        self.vtkWidget_rg = QVTKRenderWindowInteractor(self.frame)
        self.hl.addWidget(self.vtkWidget_vr)
        self.hl.addWidget(self.vtkWidget_rg)

        self.frame.setLayout(self.hl)
        self.setCentralWidget(self.frame)

        self.show()

        # Create Volume Render pipeline
        self.volumeRenderPipeline = VolumeRenderPipeine(
            self.dataset, self.vtkWidget_vr.GetRenderWindow())

        # Create Reebgraph Render pipeline
        self.reebgraphRenderPipeline = ReebgraphRenderPipeline(
            self.dataset, self.vtkWidget_rg.GetRenderWindow())
Exemple #6
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)

        self.frame = QtGui.QFrame()

        self.vl = QtGui.QVBoxLayout()
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.vl.addWidget(self.vtkWidget)

        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        source = vtk.vtkDICOMImageReader()
        source.SetFileName("D:\Anaconda\workspace\pytest\patient\\1.dcm")

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(source.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)

        self.ren.ResetCamera()

        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)

        self.show()
        self.iren.Initialize()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create three points. 
        origin = [0.0, 0.0, 0.0]
        p0 = [1.0, 0.0, 0.0]
        p1 = [0.0, 1.0, 0.0]
        p2 = [0.0, 1.0, 2.0]
        p3 = [1.0, 2.0, 3.0]

        # Create a vtkPoints object and store the points in it.
        points = vtk.vtkPoints()
        points.InsertNextPoint(origin)
        points.InsertNextPoint(p0)
        points.InsertNextPoint(p1)
        points.InsertNextPoint(p2)
        points.InsertNextPoint(p3)

        spline = vtk.vtkParametricSpline()
        spline.SetPoints(points)

        functionSource = vtk.vtkParametricFunctionSource()
        functionSource.SetParametricFunction(spline)
        functionSource.Update()
 
        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(functionSource.GetOutputPort())
 
        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
 
        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        sphere1 = vtk.vtkSphere()
        sphere1.SetCenter(0.9, 0, 0)
        sphere2 = vtk.vtkSphere()
        sphere2.SetCenter(-0.9, 0, 0)

        implicitBoolean = vtk.vtkImplicitBoolean()
        implicitBoolean.AddFunction(sphere1)
        implicitBoolean.AddFunction(sphere2)
        implicitBoolean.SetOperationTypeToUnion()
        #implicitBoolean.SetOperationTypeToIntersection()

        # Sample the function
        sample = vtk.vtkSampleFunction()
        sample.SetSampleDimensions(50, 50, 50)
        sample.SetImplicitFunction(implicitBoolean)
        sample.SetModelBounds(-3, 3, -3, 3, -3, 3)

        # Create the 0 isosurface
        contours = vtk.vtkContourFilter()
        contours.SetInputConnection(sample.GetOutputPort())
        contours.GenerateValues(1, 1, 1)

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(contours.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #9
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.frame = QtGui.QFrame()
        self.vl = QtGui.QVBoxLayout()
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        self.vl.addWidget(self.vtkWidget)

        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        self.reader = vtk.vtkDICOMImageReader()
        self.reader.SetDirectoryName(dicom_path)
        self.reader.Update()

        dims = self.reader.GetOutput().GetDimensions()
        origin = self.reader.GetOutput().GetOrigin()
        self.readerImageCast = vtk.vtkImageCast()
        self.readerImageCast.SetInputConnection(self.reader.GetOutputPort())
        self.readerImageCast.SetOutputScalarTypeToFloat()
        self.readerImageCast.Update()

        print(dims)
        print(origin)
        self.data = vtk.vtkImageData()
        self.data.SetDimensions(dims[0], dims[1], dims[2])
        self.data.AllocateScalars(vtk.VTK_FLOAT, 1)
        self.data.SetSpacing(1, 1, 0.625)
        self.data.SetOrigin(origin[0], origin[1], origin[2])
        print(self.data.GetActualMemorySize())

        self.mc = vtk.vtkMarchingCubes()
        # self.mc.SetInputData(self.data)
        self.mc.SetInputConnection(self.readerImageCast.GetOutputPort())
        self.mc.SetValue(0, 320)
        self.mc.Update()

        self.tri = vtk.vtkTriangleFilter()
        self.tri.SetInputConnection(self.mc.GetOutputPort())
        self.tri.Update()

        self.mapper = vtk.vtkPolyDataMapper()
        self.mapper.SetInputConnection(self.tri.GetOutputPort())
        self.actor = vtk.vtkActor()
        self.actor.SetMapper(self.mapper)
        self.ren.AddActor(self.actor)
        self.ren.SetBackground(0.9, 0.9, 0.9)
        self.ren.ResetCamera()

        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)

    def export2stl(self, fileName):
        writer = vtk.vtkSTLWriter()
        writer.SetFileName(fileName)
        writer.SetInputData(self.mc.GetOutput())
        writer.Update()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.2, 0.3, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create a line
        lineSource = vtk.vtkLineSource()
        lineSource.SetPoint1(1, 0, 0)
        lineSource.SetPoint2(0, 1, 0)

        # Create a mapper and actor
        lineMapper = vtk.vtkPolyDataMapper()
        lineMapper.SetInputConnection(lineSource.GetOutputPort())
        lineActor = vtk.vtkActor()
        lineActor.GetProperty().SetColor(0, 0, 0.1)
        lineActor.SetMapper(lineMapper)

        #Create a tube around the line
        tubeFilter = vtk.vtkTubeFilter()
        tubeFilter.SetInputConnection(lineSource.GetOutputPort())
        tubeFilter.SetRadius(0.025)  #Default is 0.5
        tubeFilter.SetNumberOfSides(50)
        tubeFilter.Update()

        # Create a mapper
        tubeMapper = vtk.vtkPolyDataMapper()
        tubeMapper.SetInputConnection(tubeFilter.GetOutputPort())

        # Create an actor
        tubeActor = vtk.vtkActor()
        tubeActor.SetMapper(tubeMapper)

        self.ren.AddActor(tubeActor)
        self.ren.AddActor(lineActor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            #self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #11
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        pointSource = vtk.vtkPointSource()
        pointSource.SetNumberOfPoints(5)
        pointSource.Update()

        points = pointSource.GetOutput().GetPoints()
        xSpline = vtk.vtkKochanekSpline()
        ySpline = vtk.vtkKochanekSpline()
        zSpline = vtk.vtkKochanekSpline()

        spline = vtk.vtkParametricSpline()
        spline.SetXSpline(xSpline)
        spline.SetYSpline(ySpline)
        spline.SetZSpline(zSpline)
        spline.SetPoints(points)

        functionSource = vtk.vtkParametricFunctionSource()
        functionSource.SetParametricFunction(spline)
        functionSource.Update()

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(functionSource.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        sphereSource = vtk.vtkSphereSource()
        sphereSource.SetPhiResolution(50)
        sphereSource.SetThetaResolution(50)
        sphereSource.Update()

        # Sample the sphere
        pointSampler = vtk.vtkPolyDataPointSampler()
        pointSampler.SetDistance(0.01)
        pointSampler.SetInputConnection(sphereSource.GetOutputPort())
        pointSampler.Update()

        # Visualize
        sphereMapper = vtk.vtkPolyDataMapper()
        sphereMapper.SetInputConnection(sphereSource.GetOutputPort())

        sphereActor = vtk.vtkActor()
        sphereActor.SetMapper(sphereMapper)

        sampleMapper = vtk.vtkPolyDataMapper()
        sampleMapper.SetInputConnection(pointSampler.GetOutputPort())

        sampleActor = vtk.vtkActor()
        sampleActor.SetMapper(sampleMapper)
        sampleActor.GetProperty().SetColor(1, 0, 0)

        self.ren.AddActor(sphereActor)
        self.ren.AddActor(sampleActor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        sphereSource = vtk.vtkSphereSource()
        sphereSource.Update()
        originalMesh = sphereSource.GetOutput()

        numberOfViewports = 3
        self.vtkWidget.GetRenderWindow().SetSize(200 * numberOfViewports, 200)

        numberOfSubdivisions = 2
        for i in range(numberOfViewports):
            if i == 0:
                subdivisionFilter = vtk.vtkLinearSubdivisionFilter()
            elif i == 1:
                subdivisionFilter = vtk.vtkLoopSubdivisionFilter()
            else:
                subdivisionFilter = vtk.vtkButterflySubdivisionFilter()

            subdivisionFilter.SetNumberOfSubdivisions(numberOfSubdivisions)
            subdivisionFilter.SetInputConnection(
                originalMesh.GetProducerPort())
            subdivisionFilter.Update()

            renderer = vtk.vtkRenderer()
            self.vtkWidget.GetRenderWindow().AddRenderer(renderer)
            renderer.SetViewport(
                float(i) / numberOfViewports, 0, (i + 1.0) / numberOfViewports,
                1)

            # Create a mapper and actor
            mapper = vtk.vtkPolyDataMapper()
            mapper.SetInputConnection(subdivisionFilter.GetOutputPort())

            actor = vtk.vtkActor()
            actor.SetMapper(mapper)
            renderer.AddActor(actor)
            renderer.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        polygonSource = vtk.vtkRegularPolygonSource()
        polygonSource.Update()

        triangleFilter = vtk.vtkTriangleFilter()
        triangleFilter.SetInputConnection(polygonSource.GetOutputPort())
        triangleFilter.Update()

        inputMapper = vtk.vtkPolyDataMapper()
        inputMapper.SetInputConnection(polygonSource.GetOutputPort())
        inputActor = vtk.vtkActor()
        inputActor.SetMapper(inputMapper)
        inputActor.GetProperty().SetRepresentationToWireframe()

        triangleMapper = vtk.vtkPolyDataMapper()
        triangleMapper.SetInputConnection(triangleFilter.GetOutputPort())
        triangleActor = vtk.vtkActor()
        triangleActor.SetMapper(triangleMapper)
        triangleActor.GetProperty().SetRepresentationToWireframe()

        # Setup renderers
        leftRenderer = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(leftRenderer)
        leftRenderer.SetViewport(0, 0, 0.5, 1)
        leftRenderer.SetBackground(0.6, 0.5, 0.4)
        leftRenderer.AddActor(inputActor)

        rightRenderer = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(rightRenderer)
        rightRenderer.SetViewport(0.5, 0, 1, 1)
        rightRenderer.SetBackground(0.4, 0.5, 0.6)
        rightRenderer.AddActor(triangleActor)

        leftRenderer.ResetCamera()
        rightRenderer.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        sphereSource = vtk.vtkSphereSource()
        sphereSource.Update()

        polydata = vtk.vtkPolyData()
        polydata.SetPoints(sphereSource.GetOutput().GetPoints())

        splatter = vtk.vtkGaussianSplatter()
        splatter.SetInput(polydata)
        splatter.SetSampleDimensions(50, 50, 50)
        splatter.SetRadius(0.05)
        splatter.ScalarWarpingOff()

        surface = vtk.vtkContourFilter()
        surface.SetInputConnection(splatter.GetOutputPort())
        surface.SetValue(0, 0.01)

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(surface.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create source
        source = vtk.vtkConeSource()
        source.SetHeight(3.0)
        source.SetRadius(1.0)
        source.SetResolution(20)
 
        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(source.GetOutputPort())
 
        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)

        # outline
        outline = vtk.vtkOutlineFilter()
        outline.SetInputConnection(source.GetOutputPort())
        mapper2 = vtk.vtkPolyDataMapper()
        mapper2.SetInputConnection(outline.GetOutputPort())
        actor2 = vtk.vtkActor()
        actor2.SetMapper(mapper2)
        self.ren.AddActor(actor2)
 
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        sphereSource = vtk.vtkSphereSource()
        sphereSource.Update()

        input_ = vtk.vtkPolyData()
        input_.ShallowCopy(sphereSource.GetOutput())

        arrowSource = vtk.vtkArrowSource()

        glyph3D = vtk.vtkGlyph3D()
        glyph3D.SetSourceConnection(arrowSource.GetOutputPort())
        glyph3D.SetVectorModeToUseNormal()
        glyph3D.SetInput(input_)
        glyph3D.SetScaleFactor(0.2)
        glyph3D.Update()

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(glyph3D.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #18
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Create the quadric function definition
        quadric = vtk.vtkQuadric()
        quadric.SetCoefficients(0.5, 1, 0.2, 0, 0.1, 0, 0, 0.2, 0, 0)
        #quadric.SetCoefficients(0.5, 0, 0.2, 0, 0, 0, 0, 0, 0, -0.1)

        # Sample the quadric function
        sample = vtk.vtkSampleFunction()
        sample.SetSampleDimensions(50, 50, 50)
        sample.SetImplicitFunction(quadric)
        sample.SetModelBounds(-1, 1, -1, 1, -1, 1)

        contourFilter = vtk.vtkContourFilter()
        contourFilter.SetInputConnection(sample.GetOutputPort())
        #contourFilter.GenerateValues(1, 1, 1)
        contourFilter.Update()

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(contourFilter.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create source
        source = vtk.vtkSphereSource()
        source.Update()

        triangleFilter = vtk.vtkTriangleFilter()
        triangleFilter.SetInputConnection(source.GetOutputPort())
        triangleFilter.Update()

        mesh = triangleFilter.GetOutput()
        qualityFilter = vtk.vtkMeshQuality()
        qualityFilter.SetInput(mesh)
        qualityFilter.SetTriangleQualityMeasureToArea()
        qualityFilter.Update()

        polydata = vtk.vtkPolyData()
        polydata.ShallowCopy(qualityFilter.GetOutput())

        # Create a mapper and actor
        mapper = vtk.vtkDataSetMapper()
        mapper.SetInputConnection(polydata.GetProducerPort())
        mapper.SetScalarRange(polydata.GetScalarRange())
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
 
        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #20
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        points = vtk.vtkPoints()
        points.InsertNextPoint(0, 0, 0)
        points.InsertNextPoint(1, 1, 0)
        points.InsertNextPoint(2, 2, 0)

        polyData = vtk.vtkPolyData()
        polyData.SetPoints(points)

        # Create anything you want here, we will use a polygon for the demo.
        polygonSource = vtk.vtkRegularPolygonSource()  #default is 6 sides
        glyph2D = vtk.vtkGlyph2D()
        glyph2D.SetSourceConnection(polygonSource.GetOutputPort())
        glyph2D.SetInput(polyData)
        glyph2D.Update()

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(glyph2D.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            #self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #21
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        # Provide some geometry
        resolution = 8
        aPlane = vtk.vtkPlaneSource()
        aPlane.SetXResolution(resolution)
        aPlane.SetYResolution(resolution)
        aPlane.Update()

        # Create cell data
        cellData = vtk.vtkUnsignedCharArray()
        cellData.SetNumberOfComponents(3)
        cellData.SetNumberOfTuples(aPlane.GetOutput().GetNumberOfCells())

        for i in range(aPlane.GetOutput().GetNumberOfCells()):
            rgb = random.randint(64, 255), random.randint(64,
                                                          255), random.randint(
                                                              64, 255)
            cellData.InsertTuple(i, rgb)

        aPlane.GetOutput().GetCellData().SetScalars(cellData)

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(aPlane.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True
Exemple #22
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        #Sphere1
        sphereSource1 = vtk.vtkSphereSource()
        sphereSource1.SetCenter(0, 0, 0)
        sphereSource1.SetRadius(4.0)
        sphereSource1.Update()

        mapper1 = vtk.vtkPolyDataMapper()
        mapper1.SetInputConnection(sphereSource1.GetOutputPort())

        actor1 = vtk.vtkActor()
        actor1.SetMapper(mapper1)

        #Sphere2
        sphereSource2 = vtk.vtkSphereSource()
        sphereSource2.SetCenter(10, 0, 0)
        sphereSource2.SetRadius(3.0)
        sphereSource2.Update()

        mapper2 = vtk.vtkPolyDataMapper()
        mapper2.SetInputConnection(sphereSource2.GetOutputPort())

        actor2 = vtk.vtkActor()
        actor2.SetMapper(mapper2)

        #
        self.ren.AddActor(actor1)
        self.ren.AddActor(actor2)
        self.ren.SetBackground(1, 1, 1)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True
Exemple #23
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create source
        camera = vtk.vtkCamera()
        planesArray = [0]*24
        camera.GetFrustumPlanes(2, planesArray)
         
        planes = vtk.vtkPlanes()
        planes.SetFrustumPlanes(planesArray)
         
        frustumSource = vtk.vtkFrustumSource()
        frustumSource.SetPlanes(planes)
        frustumSource.Update()
         
        frustum = frustumSource.GetOutput()
         
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInput(frustum)
         
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
 
        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self.startTimer(30)
            self._initialized = True

    def timerEvent(self, evt):
        self.ren.GetActiveCamera().Azimuth(1)
        self.vtkWidget.GetRenderWindow().Render()
Exemple #24
0
    def load_vtk_frame(self):
        # vtk
        vtk_frame = QtGui.QFrame()
        self.vtk_frame = vtk_frame
        vtk_boxlayout = QtGui.QVBoxLayout()
        self.vtk_boxlayout = vtk_boxlayout
        vtk_widget = QVTKRenderWindowInteractor(vtk_frame)
        self.vtk_widget = vtk_widget
        vtk_boxlayout.addWidget(vtk_widget)

        vtk_ren = vtk.vtkRenderer()
        self.vtk_ren = vtk_ren
        vtk_widget.GetRenderWindow().AddRenderer(vtk_ren)
        vtk_iren = vtk_widget.GetRenderWindow().GetInteractor()
        self.vtk_iren = vtk_iren
        interactor_style = vtk.vtkInteractorStyleTrackballCamera()
        self.vtk_iren.SetInteractorStyle(interactor_style)
        # Orientation Marker
        axesActor = vtk.vtkAxesActor()
        self.orientation_marker = vtk.vtkOrientationMarkerWidget()
        self.orientation_marker.SetOrientationMarker(axesActor)
        self.orientation_marker.SetInteractor(self.vtk_iren)
        self.orientation_marker.EnabledOn()
        self.orientation_marker.InteractiveOn()

        # test work
        # Create source
        source = vtk.vtkSphereSource()
        source.SetCenter(0, 0, 0)
        source.SetRadius(5.0)
        # Create a mapper
        mapper = vtk.vtkDataSetMapper()
        mapper.SetInputConnection(source.GetOutputPort())
        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetRepresentationToWireframe()
        vtk_ren.AddActor(actor)
        vtk_frame.setLayout(vtk_boxlayout)
        self.part_info['Sample Sphere'] = {'center': source.GetCenter()}
        self.ug_mapper_actor['Sample Sphere'] = (source, mapper, actor)
        uti.signal_center.report_part_list_signal.emit({'Volume Parts':['Sample Sphere'], 'Boundary Parts':list()})
        # add to properties

        # delete-able

        vtk_ren.ResetCamera()
        return vtk_frame
Exemple #25
0
    def _initWidget(self):
        centralWidget = QtGui.QWidget(self)
        layout = QtGui.QVBoxLayout()

        vtkWidget = QVTKRenderWindowInteractor(centralWidget)
        layout.addWidget(vtkWidget)

        centralWidget.setLayout(layout)

        self.setCentralWidget(centralWidget)

        ren = vtk.vtkRenderer()
        vtkWidget.GetRenderWindow().AddRenderer(ren)
        self.iren = vtkWidget.GetRenderWindow().GetInteractor()
        self.ren = ren
        self.renWin = vtkWidget.GetRenderWindow()
Exemple #26
0
def QVTKRenderWidgetConeExample():
    """A simple example that uses the QVTKRenderWindowInteractor class."""

    # every QT app needs an app
    app = QtGui.QApplication(['QVTKRenderWindowInteractor'])

    # create the widget
    widget = QVTKRenderWindowInteractor()
    widget.Initialize()
    widget.Start()
    # if you dont want the 'q' key to exit comment this.
    widget.AddObserver("ExitEvent", lambda o, e, a=app: a.quit())

    ren = vtk.vtkRenderer()
    widget.GetRenderWindow().AddRenderer(ren)

    cone = vtk.vtkConeSource()
    cone.SetResolution(8)

    coneMapper = vtk.vtkPolyDataMapper()
    coneMapper.SetInputConnection(cone.GetOutputPort())

    coneActor = vtk.vtkActor()
    coneActor.SetMapper(coneMapper)

    ren.AddActor(coneActor)

    # show the widget
    widget.show()
    # start event processing
    app.exec_()
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)

        self.frame = QtGui.QFrame()

        layout = QtGui.QVBoxLayout()
        self.vtkWidget = \
            QVTKRenderWindowInteractor(self.frame)
        layout.addWidget(self.vtkWidget)

        self.renderer = vtk.vtkRenderer()
        rw = self.vtkWidget.GetRenderWindow()
        rw.AddRenderer(self.renderer)
        self.interactor = rw.GetInteractor()

        cylinder = vtk.vtkCylinderSource()
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection( \
            cylinder.GetOutputPort())
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.renderer.AddActor(actor)
        self.renderer.ResetCamera()

        self.frame.setLayout(layout)
        self.setCentralWidget(self.frame)

        self.show()
        self.interactor.Initialize()
Exemple #28
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        loadUi('vtk.ui', self)
        self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
        # self.vl.addWidget(self.vtkWidget)
        # self.vl.addWidget(self.button)
        new(self.vtkWidget.GetRenderWindow().GetInteractor())
        self.show()
class RotationViewer(module_template.Viewer):
    """Uses mayavi to plot a sphere made up of small spheres as pixels. The
    colors indicate the responsability density."""
    def __init__(self, parent=None):
        super(RotationViewer, self).__init__()
        #self._widget = QtGui.QWidget(parent)
        self._vtk_widget = QVTKRenderWindowInteractor(self._widget) # _vtk_widget is actually the RenderWindowInteractor
        self._vtk_widget.SetInteractorStyle(vtk.vtkInteractorStyleRubberBandPick())

        #self._vtk_widget.Initialize()
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self._vtk_widget)
        self._widget.setLayout(layout)

        self._renderer = vtk.vtkRenderer()
        self._vtk_widget.GetRenderWindow().AddRenderer(self._renderer)

        #self._mlab_widget = embedded_mayavi.MlabWidget()
        self._setup_done = False
        self._points = None
        self._default_sphere_n = 10
        self._sphere = vtk_tools.SphereMap(self._default_sphere_n)
        self._renderer.AddViewProp(self._sphere.get_actor())
        self._renderer.SetBackground(1., 1., 1.)
        #self._renderer.Render()

    def initialize(self):
        self._vtk_widget.Initialize()

    # def get_widget(self):
    #     """Return the widget containing the view."""
    #     return self._vtk_widget

    def set_sampling_n(self, sampling_n):
        """Rerun when the array size changes."""
        self._sphere.set_n(sampling_n)

    def get_coordinates(self):
        return self._sphere.get_coordinates()

    def get_number_of_points():
        pass

    def plot_rotations(self, values):
        """Update the viewer to show the new values."""
        if len(values) != self._sphere.get_number_of_points():
            #raise ValueError("values must be array of length {0}. Length {1} array received.".format(self._sphere.get_number_of_points(), len(values)))
            sampling_n = icosahedral_sphere.points_to_n(len(values))
            self.set_sampling_n(sampling_n)
        self._sphere.set_lookup_table(vtk_tools.get_lookup_table(0., values.max(), log=False, colorscale="jet", number_of_colors=1000))
        self._sphere.set_values(values)
        #self._sphere
        #self._renderer.Render()
        self._vtk_widget.Render()
Exemple #30
0
class VTKFrame(QtGui.QFrame):
    def __init__(self, parent=None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)

        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

        superquadricSource = vtk.vtkSuperquadricSource()
        superquadricSource.SetPhiRoundness(3.1)
        superquadricSource.SetThetaRoundness(2.2)

        clipPlane = vtk.vtkPlane()
        clipPlane.SetNormal(1.0, -1.0, -1.0)
        clipPlane.SetOrigin(0, 0, 0)

        clipper = vtk.vtkClipPolyData()
        clipper.SetInputConnection(superquadricSource.GetOutputPort())
        clipper.SetClipFunction(clipPlane)

        superquadricMapper = vtk.vtkPolyDataMapper()
        superquadricMapper.SetInputConnection(clipper.GetOutputPort())

        superquadricActor = vtk.vtkActor()
        superquadricActor.SetMapper(superquadricMapper)

        #create renderers and add actors of plane and cube
        self.ren.AddActor(superquadricActor)

        self.ren.ResetCamera()
        self._initialized = False

    def showEvent(self, evt):
        if not self._initialized:
            self.iren.Initialize()
            self._initialized = True