def vtk_show(renderer, w=100, h=100): """ Takes vtkRenderer instance and returns an IPython Image with the rendering. """ renderWindow = vtkRenderWindow() renderWindow.SetOffScreenRendering(1) renderWindow.AddRenderer(renderer) renderWindow.SetSize(w, h) renderWindow.Render() windowToImageFilter = vtkWindowToImageFilter() windowToImageFilter.SetInput(renderWindow) windowToImageFilter.Update() writer = vtkPNGWriter() writer.SetWriteToMemory(1) writer.SetInputConnection(windowToImageFilter.GetOutputPort()) writer.Write() data = str(buffer(writer.GetResult())) from IPython.display import Image return Image(data) from vtk import (vtkSphereSource, vtkPolyDataMapper, vtkActor, vtkRenderer, vtkRenderWindow, vtkWindowToImageFilter, vtkPNGWriter) sphereSource = vtkSphereSource() sphereSource.SetPhiResolution(200) sphereSource.SetThetaResolution(200) mapper = vtkPolyDataMapper() mapper.SetInputConnection(sphereSource.GetOutputPort()) actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(1,1,0) renderer = vtkRenderer() renderer.AddActor(actor) renderer.SetBackground(1, 1, 1) vtk_show(renderer, 200, 200) from vtk import vtkStructuredGridReader, vtkPlane, vtkCutter, vtkDataSetMapper, vtkContourFilter r = vtkStructuredGridReader() r.SetFileName("/nh/nest/u/ondrej/Downloads/density.vtk") r.Update() # Contour iso = vtkContourFilter() iso.SetInputConnection(r.GetOutputPort()) iso.SetValue(0, 0.26) m = vtkPolyDataMapper() m.SetInputConnection(iso.GetOutputPort()) m.SetScalarRange(r.GetOutput().GetScalarRange()) a1 = vtkActor() a1.SetMapper(m) # Plane plane = vtkPlane() plane.SetOrigin(r.GetOutput().GetCenter()) plane.SetNormal(-0.2, 0.2, 0.9579) c = vtkCutter() c.SetInputConnection(r.GetOutputPort()) c.SetCutFunction(plane) m = vtkPolyDataMapper() m.SetInputConnection(c.GetOutputPort()) m.SetScalarRange(r.GetOutput().GetScalarRange()) a2 = vtkActor() a2.SetMapper(m) # Render renderer = vtkRenderer() renderer.AddActor(a1) renderer.AddActor(a2) renderer.SetBackground(0.8, 1, 1) vtk_show(renderer, 500, 500) import vtk #Create a cube cube=vtk.vtkCubeSource() cube.SetXLength(40) cube.SetYLength(30) cube.SetZLength(20) cubeMapper=vtk.vtkPolyDataMapper() cubeMapper.SetInputConnection(cube.GetOutputPort()) #create a plane to cut,here it cuts in the XZ direction (xz normal=(1,0,0);XY =(0,0,1),YZ =(0,1,0) plane=vtk.vtkPlane() plane.SetOrigin(10,0,0) plane.SetNormal(1,1,0) #create cutter cutter=vtk.vtkCutter() cutter.SetCutFunction(plane) cutter.SetInputConnection(cube.GetOutputPort()) cutter.Update() cutterMapper=vtk.vtkPolyDataMapper() cutterMapper.SetInputConnection( cutter.GetOutputPort()) #create plane actor planeActor=vtk.vtkActor() planeActor.GetProperty().SetColor(1.0,1,0) planeActor.GetProperty().SetLineWidth(2) planeActor.SetMapper(cutterMapper) #create cube actor cubeActor=vtk.vtkActor() cubeActor.GetProperty().SetColor(0.5,1,0.5) cubeActor.GetProperty().SetOpacity(0.5) cubeActor.SetMapper(cubeMapper) #create renderers and add actors of plane and cube ren = vtk.vtkRenderer() ren.AddActor(planeActor) ren.AddActor(cubeActor) ren.SetBackground(0,0,0) vtk_show(ren, 200, 200) from vtk import (vtkStructuredGridReader, vtkPlane, vtkCutter, vtkDataSetMapper, vtkContourFilter, vtkCamera) def get_plane_actor(r, n1, n2, n3): plane = vtkPlane() plane.SetOrigin(r.GetOutput().GetCenter()) plane.SetNormal(n1, n2, n3) c = vtkCutter() c.SetInputConnection(r.GetOutputPort()) c.SetCutFunction(plane) m = vtkPolyDataMapper() m.SetInputConnection(c.GetOutputPort()) m.SetScalarRange(r.GetOutput().GetScalarRange()) a = vtkActor() a.SetMapper(m) return a r = vtkStructuredGridReader() r.SetFileName("/nh/nest/u/ondrej/Downloads/density.vtk") r.Update() a1 = get_plane_actor(r, 0, 0, 1) a2 = get_plane_actor(r, 0, 1, 0) a3 = get_plane_actor(r, 1, 0, 0) camera =vtkCamera() camera.SetPosition(100, 100, 100) camera.SetFocalPoint(0, 0, 0) renderer = vtkRenderer() renderer.SetActiveCamera(camera) renderer.AddActor(a1) renderer.AddActor(a2) renderer.AddActor(a3) renderer.SetBackground(0.8, 1, 1) vtk_show(renderer, 500, 500) camera.SetPosition(0, 0, 100) vtk_show(renderer, 500, 500) camera.SetPosition(0, 50, 100) vtk_show(renderer, 500, 500)