1package require vtk 2package require vtkinteraction 3 4# Create the RenderWindow, Renderer and both Actors 5# 6vtkRenderer ren1 7vtkRenderWindow renWin 8 renWin AddRenderer ren1 9vtkRenderWindowInteractor iren 10 iren SetRenderWindow renWin 11 12# read data 13# 14vtkPolyDataReader input 15 input SetFileName "$VTK_DATA_ROOT/Data/brainImageSmooth.vtk" 16 17# 18# generate vectors 19vtkCleanPolyData clean 20 clean SetInputConnection [input GetOutputPort] 21 22vtkWindowedSincPolyDataFilter smooth 23 smooth SetInputConnection [clean GetOutputPort] 24 smooth GenerateErrorVectorsOn 25 smooth GenerateErrorScalarsOn 26 smooth Update 27 28vtkPolyDataMapper mapper 29 mapper SetInputConnection [smooth GetOutputPort] 30 eval mapper SetScalarRange [[smooth GetOutput] GetScalarRange] 31 32vtkActor brain 33 brain SetMapper mapper 34 35 36# Add the actors to the renderer, set the background and size 37# 38ren1 AddActor brain 39 40renWin SetSize 320 240 41 42[ren1 GetActiveCamera] SetPosition 149.653 -65.3464 96.0401 43[ren1 GetActiveCamera] SetFocalPoint 146.003 22.3839 0.260541 44[ren1 GetActiveCamera] SetViewAngle 30 45[ren1 GetActiveCamera] SetViewUp -0.255578 -0.717754 -0.647695 46[ren1 GetActiveCamera] SetClippingRange 79.2526 194.052 47 48iren Initialize 49renWin Render 50 51# render the image 52# 53iren AddObserver UserEvent {wm deiconify .vtkInteract} 54 55# prevent the tk window from showing up then start the event loop 56wm withdraw . 57 58# 59# If the current directory is writable, then test the witers 60# 61 62if {[catch {set channel [open "test.tmp" "w"]}] == 0 } { 63 close $channel 64 file delete -force "test.tmp" 65 66 # 67 # 68 # test the writers 69 vtkDataSetWriter dsw 70 dsw SetInputConnection [smooth GetOutputPort] 71 dsw SetFileName "brain.dsw" 72 dsw Write 73 file delete -force "brain.dsw" 74 75 vtkPolyDataWriter pdw 76 pdw SetInputConnection [smooth GetOutputPort] 77 pdw SetFileName "brain.pdw" 78 pdw Write 79 file delete -force "brain.pdw" 80 81 if { [info command "vtkIVWriter"] != "" } { 82 vtkIVWriter iv 83 iv SetInputConnection [smooth GetOutputPort] 84 iv SetFileName "brain.iv" 85 iv Write 86 file delete -force "brain.iv" 87 } 88 89 # 90 # the next writers only handle triangles 91 vtkTriangleFilter triangles 92 triangles SetInputConnection [smooth GetOutputPort] 93 94 if { [info command "vtkIVWriter"] != "" } { 95 vtkIVWriter iv2 96 iv2 SetInputConnection [triangles GetOutputPort] 97 iv2 SetFileName "brain2.iv" 98 iv2 Write 99 file delete -force "brain2.iv" 100 } 101 102 if { [info command "vtkIVWriter"] != "" } { 103 vtkExtractEdges edges 104 edges SetInputConnection [triangles GetOutputPort] 105 vtkIVWriter iv3 106 iv3 SetInputConnection [edges GetOutputPort] 107 iv3 SetFileName "brain3.iv" 108 iv3 Write 109 file delete -force "brain3.iv" 110 } 111 112 vtkBYUWriter byu 113 byu SetGeometryFileName "brain.g" 114 byu SetScalarFileName "brain.s" 115 byu SetDisplacementFileName "brain.d" 116 byu SetInputConnection [triangles GetOutputPort] 117 byu Write 118 file delete -force "brain.g" 119 file delete -force "brain.s" 120 file delete -force "brain.d" 121 122 vtkMCubesWriter mcubes 123 mcubes SetInputConnection [triangles GetOutputPort] 124 mcubes SetFileName "brain.tri" 125 mcubes SetLimitsFileName "brain.lim" 126 mcubes Write 127 file delete -force "brain.lim" 128 file delete -force "brain.tri" 129 130 vtkSTLWriter stl 131 stl SetInputConnection [triangles GetOutputPort] 132 stl SetFileName "brain.stl" 133 stl Write 134 file delete -force "brain.stl" 135 136 vtkSTLWriter stlBinary 137 stlBinary SetInputConnection [triangles GetOutputPort] 138 stlBinary SetFileName "brainBinary.stl" 139 stlBinary SetFileType 2 140 stlBinary Write 141 file delete -force "brainBinary.stl" 142 143# vtkCGMWriter cgm 144# cgm SetInputConnection [triangles GetOutputPort] 145# cgm SetFileName "brain.cgm" 146# cgm Write 147# file delete -force "brain.cgm" 148} 149 150 151 152