1#!/usr/bin/env python 2import vtk 3from vtk.util.misc import vtkGetDataRoot 4VTK_DATA_ROOT = vtkGetDataRoot() 5 6# Create renderer stuff 7# 8ren1 = vtk.vtkRenderer() 9renWin = vtk.vtkRenderWindow() 10renWin.AddRenderer(ren1) 11iren = vtk.vtkRenderWindowInteractor() 12iren.SetRenderWindow(renWin) 13# Pipeline stuff 14# 15torus = vtk.vtkSuperquadricSource() 16torus.SetCenter(0.0,0.0,0.0) 17torus.SetScale(1.0,1.0,1.0) 18torus.SetPhiResolution(64) 19torus.SetThetaResolution(64) 20torus.SetPhiRoundness(1.0) 21torus.SetThetaRoundness(1.0) 22torus.SetThickness(0.5) 23torus.SetSize(0.5) 24torus.SetToroidal(1) 25# The quadric has nasty discontinuities from the way the edges are generated 26# so let's pass it though a CleanPolyDataFilter and merge any points which 27# are coincident, or very close 28cleaner = vtk.vtkCleanPolyData() 29cleaner.SetInputConnection(torus.GetOutputPort()) 30cleaner.SetTolerance(0.005) 31curve1 = vtk.vtkCurvatures() 32curve1.SetInputConnection(cleaner.GetOutputPort()) 33curve1.SetCurvatureTypeToGaussian() 34curve2 = vtk.vtkCurvatures() 35curve2.SetInputConnection(cleaner.GetOutputPort()) 36curve2.SetCurvatureTypeToMean() 37lut1 = vtk.vtkLookupTable() 38lut1.SetNumberOfColors(256) 39lut1.SetHueRange(0.15,1.0) 40lut1.SetSaturationRange(1.0,1.0) 41lut1.SetValueRange(1.0,1.0) 42lut1.SetAlphaRange(1.0,1.0) 43lut1.SetRange(-20,20) 44lut2 = vtk.vtkLookupTable() 45lut2.SetNumberOfColors(256) 46lut2.SetHueRange(0.15,1.0) 47lut2.SetSaturationRange(1.0,1.0) 48lut2.SetValueRange(1.0,1.0) 49lut2.SetAlphaRange(1.0,1.0) 50lut2.SetRange(0,4) 51cmapper1 = vtk.vtkPolyDataMapper() 52cmapper1.SetInputConnection(curve1.GetOutputPort()) 53cmapper1.SetLookupTable(lut1) 54cmapper1.SetUseLookupTableScalarRange(1) 55cmapper2 = vtk.vtkPolyDataMapper() 56cmapper2.SetInputConnection(curve2.GetOutputPort()) 57cmapper2.SetLookupTable(lut2) 58cmapper2.SetUseLookupTableScalarRange(1) 59cActor1 = vtk.vtkActor() 60cActor1.SetMapper(cmapper1) 61cActor1.SetPosition(-0.5,0.0,0.0) 62cActor2 = vtk.vtkActor() 63cActor2.SetMapper(cmapper2) 64cActor2.SetPosition(0.5,0.0,0.0) 65# Add the actors to the renderer 66# 67ren1.AddActor(cActor1) 68ren1.AddActor(cActor2) 69ren1.SetBackground(0.5,0.5,0.5) 70renWin.SetSize(300,200) 71camera = vtk.vtkCamera() 72ren1.SetActiveCamera(camera) 73camera.SetPosition(0.0,2.0,2.1) 74camera.SetFocalPoint(0.0,0.0,0.0) 75camera.SetViewAngle(30) 76ren1.ResetCameraClippingRange() 77iren.Initialize() 78# render the image 79# 80# prevent the tk window from showing up then start the event loop 81renWin.Render() 82# --- end of script -- 83