File: gaussian.tcl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,880 kB
  • sloc: cpp: 1,442,792; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 103; objc: 17
file content (179 lines) | stat: -rw-r--r-- 5,356 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package require vtk
package require vtkinteraction

vtkRenderer ren1
vtkRenderWindow renWin
    renWin SetMultiSamples 0
    renWin AddRenderer ren1
    renWin SetSize 300 300
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin
vtkCamera camera
  camera ParallelProjectionOn
  camera SetViewUp 0 1 0
  camera SetFocalPoint 12 10.5 15
  camera SetPosition -70 15 34
  camera ComputeViewPlaneNormal
  ren1 SetActiveCamera camera

# Create the reader for the data
#vtkStructuredPointsReader reader
vtkGaussianCubeReader reader
    reader SetFileName "$VTK_DATA_ROOT/Data/m4_TotalDensity.cube"
    reader SetHBScale 1.1
    reader SetBScale 10
    reader Update

set range [[[[reader GetGridOutput] GetPointData] GetScalars] GetRange]
set min [lindex $range 0]
set max [lindex $range 1]

vtkImageShiftScale readerSS
  readerSS SetInputData [reader GetGridOutput]
  readerSS SetShift [expr $min * -1]
  readerSS SetScale [expr 255 / ($max - $min)]
  readerSS SetOutputScalarTypeToUnsignedChar

vtkOutlineFilter bounds
    bounds SetInputData [reader GetGridOutput]

vtkPolyDataMapper boundsMapper
    boundsMapper SetInputConnection [bounds GetOutputPort]

vtkActor boundsActor
    boundsActor SetMapper boundsMapper
    [boundsActor GetProperty] SetColor 0 0 0

vtkContourFilter contour
    contour SetInputData [reader GetGridOutput]
    eval contour GenerateValues 5 0 .05


vtkPolyDataMapper contourMapper
    contourMapper SetInputConnection [contour GetOutputPort]
    eval contourMapper SetScalarRange 0 .1
   [contourMapper GetLookupTable] SetHueRange 0.32 0

vtkActor contourActor
    contourActor SetMapper contourMapper
    [contourActor GetProperty] SetOpacity .5

# Create transfer mapping scalar value to opacity
vtkPiecewiseFunction opacityTransferFunction
    opacityTransferFunction AddPoint  0    0.01
    opacityTransferFunction AddPoint  255  0.35
    opacityTransferFunction ClampingOn

# Create transfer mapping scalar value to color
vtkColorTransferFunction colorTransferFunction
    colorTransferFunction AddHSVPoint    0.0 0.66 1.0 1.0
    colorTransferFunction AddHSVPoint   50.0 0.33 1.0 1.0
    colorTransferFunction AddHSVPoint  100.0 0.00 1.0 1.0

# The property describes how the data will look
vtkVolumeProperty volumeProperty
    volumeProperty SetColor colorTransferFunction
    volumeProperty SetScalarOpacity opacityTransferFunction
    volumeProperty SetInterpolationTypeToLinear

# The mapper / ray cast function know how to render the data
vtkVolumeRayCastCompositeFunction  compositeFunction

vtkVolumeRayCastMapper volumeMapper
#vtkVolumeTextureMapper2D volumeMapper
    volumeMapper SetVolumeRayCastFunction compositeFunction
    volumeMapper SetInputConnection [readerSS GetOutputPort]

# The volume holds the mapper and the property and
# can be used to position/orient the volume

vtkVolume volume
    volume SetMapper volumeMapper
    volume SetProperty volumeProperty

ren1 AddVolume volume
#ren1 AddActor contourActor
ren1 AddActor boundsActor

######################################################################
vtkSphereSource Sphere
  Sphere SetCenter 0 0 0
  Sphere SetRadius 1
  Sphere SetThetaResolution 16
  Sphere SetStartTheta 0
  Sphere SetEndTheta 360
  Sphere SetPhiResolution 16
  Sphere SetStartPhi 0
  Sphere SetEndPhi 180

vtkGlyph3D Glyph
  Glyph SetInputConnection [reader GetOutputPort]
  Glyph SetOrient 1
  Glyph SetColorMode 1
  #Glyph ScalingOn
  Glyph SetScaleMode 2
  Glyph SetScaleFactor .6
  Glyph SetSourceConnection [Sphere GetOutputPort]

vtkPolyDataMapper AtomsMapper
  AtomsMapper SetInputConnection [Glyph GetOutputPort]
  AtomsMapper SetImmediateModeRendering 1
  AtomsMapper UseLookupTableScalarRangeOff
  AtomsMapper SetScalarVisibility 1
  AtomsMapper SetScalarModeToDefault

vtkActor Atoms
  Atoms SetMapper AtomsMapper
  [Atoms GetProperty] SetRepresentationToSurface
  [Atoms GetProperty] SetInterpolationToGouraud
  [Atoms GetProperty] SetAmbient 0.15
  [Atoms GetProperty] SetDiffuse 0.85
  [Atoms GetProperty] SetSpecular 0.1
  [Atoms GetProperty] SetSpecularPower 100
  [Atoms GetProperty] SetSpecularColor 1 1 1
  [Atoms GetProperty] SetColor 1 1 1

vtkTubeFilter Tube
  Tube SetInputConnection [reader GetOutputPort]
  Tube SetNumberOfSides 16
  Tube SetCapping 0
  Tube SetRadius 0.2
  Tube SetVaryRadius 0
  Tube SetRadiusFactor 10

vtkPolyDataMapper BondsMapper
  BondsMapper SetInputConnection [Tube GetOutputPort]
  BondsMapper SetImmediateModeRendering 1
  BondsMapper UseLookupTableScalarRangeOff
  BondsMapper SetScalarVisibility 1
  BondsMapper SetScalarModeToDefault
vtkActor Bonds
  Bonds SetMapper BondsMapper
  [Bonds GetProperty] SetRepresentationToSurface
  [Bonds GetProperty] SetInterpolationToGouraud
  [Bonds GetProperty] SetAmbient 0.15
  [Bonds GetProperty] SetDiffuse 0.85
  [Bonds GetProperty] SetSpecular 0.1
  [Bonds GetProperty] SetSpecularPower 100
  [Bonds GetProperty] SetSpecularColor 1 1 1
  [Bonds GetProperty] SetColor 1 1 1

ren1 AddActor Bonds
ren1 AddActor Atoms
####################################################

ren1 SetBackground 1 1 1
ren1 ResetCamera
renWin Render


proc TkCheckAbort {} {
  set foo [renWin GetEventPending]
  if {$foo != 0} {renWin SetAbortRender 1}
}
renWin AddObserver "AbortCheckEvent" {TkCheckAbort}

iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize

wm withdraw .