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
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()
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
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())
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()
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()
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()
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()
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()
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
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
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()
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
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()
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()
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()
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