1package require vtk 2package require vtkinteraction 3 4# Create renderer stuff 5# 6vtkRenderer ren1 7vtkRenderWindow renWin 8 renWin AddRenderer ren1 9vtkRenderWindowInteractor iren 10 iren SetRenderWindow renWin 11 12# Pipeline stuff 13# 14vtkSuperquadricSource torus 15 torus SetCenter 0.0 0.0 0.0 16 torus SetScale 1.0 1.0 1.0 17 torus SetPhiResolution 64 18 torus SetThetaResolution 64 19 torus SetPhiRoundness 1.0 20 torus SetThetaRoundness 1.0 21 torus SetThickness 0.5 22 torus SetSize 0.5 23 torus SetToroidal 1 24 25# The quadric is made of strips, so pass it through a triangle filter as 26# the curvature filter only operates on polys 27vtkTriangleFilter tri 28 tri SetInputConnection [torus GetOutputPort] 29 30# The quadric has nasty discontinuities from the way the edges are generated 31# so let's pass it though a CleanPolyDataFilter and merge any points which 32# are coincident, or very close 33 34vtkCleanPolyData cleaner 35 cleaner SetInputConnection [tri GetOutputPort] 36 cleaner SetTolerance 0.005 37 38vtkCurvatures curve1 39 curve1 SetInputConnection [cleaner GetOutputPort] 40 curve1 SetCurvatureTypeToGaussian 41 42vtkCurvatures curve2 43 curve2 SetInputConnection [cleaner GetOutputPort] 44 curve2 SetCurvatureTypeToMean 45 46vtkLookupTable lut1 47 lut1 SetNumberOfColors 256 48 lut1 SetHueRange 0.15 1.0 49 lut1 SetSaturationRange 1.0 1.0 50 lut1 SetValueRange 1.0 1.0 51 lut1 SetAlphaRange 1.0 1.0 52 lut1 SetRange -20 20 53 54vtkLookupTable lut2 55 lut2 SetNumberOfColors 256 56 lut2 SetHueRange 0.15 1.0 57 lut2 SetSaturationRange 1.0 1.0 58 lut2 SetValueRange 1.0 1.0 59 lut2 SetAlphaRange 1.0 1.0 60 lut2 SetRange 0 4 61 62vtkPolyDataMapper cmapper1 63 cmapper1 SetInputConnection [curve1 GetOutputPort] 64 cmapper1 SetLookupTable lut1 65 cmapper1 SetUseLookupTableScalarRange 1 66 67vtkPolyDataMapper cmapper2 68 cmapper2 SetInputConnection [curve2 GetOutputPort] 69 cmapper2 SetLookupTable lut2 70 cmapper2 SetUseLookupTableScalarRange 1 71 72vtkActor cActor1 73 cActor1 SetMapper cmapper1 74 cActor1 SetPosition -0.5 0.0 0.0 75 76vtkActor cActor2 77 cActor2 SetMapper cmapper2 78 cActor2 SetPosition 0.5 0.0 0.0 79 80# Add the actors to the renderer 81# 82ren1 AddActor cActor1 83ren1 AddActor cActor2 84 85ren1 SetBackground 0.5 0.5 0.5 86renWin SetSize 300 200 87 88vtkCamera camera 89ren1 SetActiveCamera camera 90 91camera SetPosition 0.0 2.0 2.1 92camera SetFocalPoint 0.0 0.0 0.0 93camera SetViewAngle 30 94 95ren1 ResetCameraClippingRange 96 97iren Initialize 98 99# render the image 100# 101iren AddObserver UserEvent {wm deiconify .vtkInteract} 102 103 104# prevent the tk window from showing up then start the event loop 105wm withdraw . 106 107 108renWin Render 109