You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
349 lines
9.7 KiB
349 lines
9.7 KiB
package require vtk
|
|
|
|
# Create a gaussian
|
|
vtkImageGaussianSource gs
|
|
gs SetWholeExtent 0 30 0 30 0 30
|
|
gs SetMaximum 255.0
|
|
gs SetStandardDeviation 5
|
|
gs SetCenter 15 15 15
|
|
|
|
# threshold to leave a gap that should show up for
|
|
# gradient opacity
|
|
vtkImageThreshold t
|
|
t SetInputConnection [gs GetOutputPort]
|
|
t ReplaceInOn
|
|
t SetInValue 0
|
|
t ThresholdBetween 150 200
|
|
|
|
# Use a shift scale to convert to unsigned char
|
|
vtkImageShiftScale ss
|
|
ss SetInputConnection [t GetOutputPort]
|
|
ss SetOutputScalarTypeToUnsignedChar
|
|
|
|
# grid will be used for two component dependent
|
|
vtkImageGridSource grid0
|
|
grid0 SetDataScalarTypeToUnsignedChar
|
|
grid0 SetGridSpacing 10 10 10
|
|
grid0 SetLineValue 200
|
|
grid0 SetFillValue 10
|
|
grid0 SetDataExtent 0 30 0 30 0 30
|
|
|
|
# use dilation to thicken the grid
|
|
vtkImageContinuousDilate3D d
|
|
d SetInputConnection [grid0 GetOutputPort]
|
|
d SetKernelSize 3 3 3
|
|
|
|
# Now make a two component dependent
|
|
vtkImageAppendComponents iac
|
|
iac AddInput [d GetOutput]
|
|
iac AddInput [ss GetOutput]
|
|
|
|
# Some more gaussians for the four component indepent case
|
|
vtkImageGaussianSource gs1
|
|
gs1 SetWholeExtent 0 30 0 30 0 30
|
|
gs1 SetMaximum 255.0
|
|
gs1 SetStandardDeviation 4
|
|
gs1 SetCenter 5 5 5
|
|
|
|
vtkImageThreshold t1
|
|
t1 SetInputConnection [gs1 GetOutputPort]
|
|
t1 ReplaceInOn
|
|
t1 SetInValue 0
|
|
t1 ThresholdBetween 150 256
|
|
|
|
vtkImageGaussianSource gs2
|
|
gs2 SetWholeExtent 0 30 0 30 0 30
|
|
gs2 SetMaximum 255.0
|
|
gs2 SetStandardDeviation 4
|
|
gs2 SetCenter 12 12 12
|
|
|
|
vtkImageGaussianSource gs3
|
|
gs3 SetWholeExtent 0 30 0 30 0 30
|
|
gs3 SetMaximum 255.0
|
|
gs3 SetStandardDeviation 4
|
|
gs3 SetCenter 19 19 19
|
|
|
|
vtkImageThreshold t3
|
|
t3 SetInputConnection [gs3 GetOutputPort]
|
|
t3 ReplaceInOn
|
|
t3 SetInValue 0
|
|
t3 ThresholdBetween 150 256
|
|
|
|
vtkImageGaussianSource gs4
|
|
gs4 SetWholeExtent 0 30 0 30 0 30
|
|
gs4 SetMaximum 255.0
|
|
gs4 SetStandardDeviation 4
|
|
gs4 SetCenter 26 26 26
|
|
|
|
# we need a few append filters ...
|
|
vtkImageAppendComponents iac1
|
|
iac1 AddInput [t1 GetOutput]
|
|
iac1 AddInput [gs2 GetOutput]
|
|
|
|
vtkImageAppendComponents iac2
|
|
iac2 AddInput [iac1 GetOutput]
|
|
iac2 AddInput [t3 GetOutput]
|
|
|
|
vtkImageAppendComponents iac3
|
|
iac3 AddInput [iac2 GetOutput]
|
|
iac3 AddInput [gs4 GetOutput]
|
|
|
|
# create the four component dependend -
|
|
# use lines in x, y, z for colors
|
|
vtkImageGridSource gridR
|
|
gridR SetDataScalarTypeToUnsignedChar
|
|
gridR SetGridSpacing 10 100 100
|
|
gridR SetLineValue 250
|
|
gridR SetFillValue 100
|
|
gridR SetDataExtent 0 30 0 30 0 30
|
|
|
|
vtkImageContinuousDilate3D dR
|
|
dR SetInputConnection [gridR GetOutputPort]
|
|
dR SetKernelSize 2 2 2
|
|
|
|
vtkImageGridSource gridG
|
|
gridG SetDataScalarTypeToUnsignedChar
|
|
gridG SetGridSpacing 100 10 100
|
|
gridG SetLineValue 250
|
|
gridG SetFillValue 100
|
|
gridG SetDataExtent 0 30 0 30 0 30
|
|
|
|
vtkImageContinuousDilate3D dG
|
|
dG SetInputConnection [gridG GetOutputPort]
|
|
dG SetKernelSize 2 2 2
|
|
|
|
vtkImageGridSource gridB
|
|
gridB SetDataScalarTypeToUnsignedChar
|
|
gridB SetGridSpacing 100 100 10
|
|
gridB SetLineValue 0
|
|
gridB SetFillValue 250
|
|
gridB SetDataExtent 0 30 0 30 0 30
|
|
|
|
vtkImageContinuousDilate3D dB
|
|
dB SetInputConnection [gridB GetOutputPort]
|
|
dB SetKernelSize 2 2 2
|
|
|
|
# need some appending
|
|
vtkImageAppendComponents iacRG
|
|
iacRG AddInput [dR GetOutput]
|
|
iacRG AddInput [dG GetOutput]
|
|
|
|
vtkImageAppendComponents iacRGB
|
|
iacRGB AddInput [iacRG GetOutput]
|
|
iacRGB AddInput [dB GetOutput]
|
|
|
|
vtkImageAppendComponents iacRGBA
|
|
iacRGBA AddInput [iacRGB GetOutput]
|
|
iacRGBA AddInput [ss GetOutput]
|
|
|
|
# We need a bunch of opacity functions
|
|
|
|
# this one is a simple ramp to .2
|
|
vtkPiecewiseFunction rampPoint2
|
|
rampPoint2 AddPoint 0 0.0
|
|
rampPoint2 AddPoint 255 0.2
|
|
|
|
# this one is a simple ramp to 1
|
|
vtkPiecewiseFunction ramp1
|
|
ramp1 AddPoint 0 0.0
|
|
ramp1 AddPoint 255 1.0
|
|
|
|
# this one shows a sharp surface
|
|
vtkPiecewiseFunction surface
|
|
surface AddPoint 0 0.0
|
|
surface AddPoint 10 0.0
|
|
surface AddPoint 50 1.0
|
|
surface AddPoint 255 1.0
|
|
|
|
|
|
# this one is constant 1
|
|
vtkPiecewiseFunction constant1
|
|
constant1 AddPoint 0 1.0
|
|
constant1 AddPoint 255 1.0
|
|
|
|
# this one is used for gradient opacity
|
|
vtkPiecewiseFunction gop
|
|
gop AddPoint 0 0.0
|
|
gop AddPoint 20 0.0
|
|
gop AddPoint 60 1.0
|
|
gop AddPoint 255 1.0
|
|
|
|
|
|
# We need a bunch of color functions
|
|
|
|
# This one is a simple rainbow
|
|
vtkColorTransferFunction rainbow
|
|
rainbow SetColorSpaceToHSV
|
|
rainbow HSVWrapOff
|
|
rainbow AddHSVPoint 0 0.1 1.0 1.0
|
|
rainbow AddHSVPoint 255 0.9 1.0 1.0
|
|
|
|
# this is constant red
|
|
vtkColorTransferFunction red
|
|
red AddRGBPoint 0 1 0 0
|
|
red AddRGBPoint 255 1 0 0
|
|
|
|
# this is constant green
|
|
vtkColorTransferFunction green
|
|
green AddRGBPoint 0 0 1 0
|
|
green AddRGBPoint 255 0 1 0
|
|
|
|
# this is constant blue
|
|
vtkColorTransferFunction blue
|
|
blue AddRGBPoint 0 0 0 1
|
|
blue AddRGBPoint 255 0 0 1
|
|
|
|
# this is constant yellow
|
|
vtkColorTransferFunction yellow
|
|
yellow AddRGBPoint 0 1 1 0
|
|
yellow AddRGBPoint 255 1 1 0
|
|
|
|
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
renWin SetSize 500 500
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
[ren1 GetCullers] InitTraversal
|
|
set culler [[ren1 GetCullers] GetNextItem]
|
|
$culler SetSortingStyleToBackToFront
|
|
|
|
# We need 25 mapper / actor pairs which we will render
|
|
# in a grid. Going down we will vary the input data
|
|
# with the top row unsigned char, then float, then
|
|
# two dependent components, then four dependent components
|
|
# then four independent components. Going across we
|
|
# will vary the rendering method with MIP, Composite,
|
|
# Composite Shade, Composite GO, and Composite GO Shade.
|
|
|
|
for { set j 0 } { $j < 5 } { incr j } {
|
|
for { set i 0 } { $i < 5 } { incr i } {
|
|
vtkVolumeProperty volumeProperty${i}${j}
|
|
vtkFixedPointVolumeRayCastMapper volumeMapper${i}${j}
|
|
volumeMapper${i}${j} SetSampleDistance 0.25
|
|
|
|
vtkVolume volume${i}${j}
|
|
volume${i}${j} SetMapper volumeMapper${i}${j}
|
|
volume${i}${j} SetProperty volumeProperty${i}${j}
|
|
|
|
volume${i}${j} AddPosition [expr $i*30] [expr $j*30] 0
|
|
|
|
ren1 AddVolume volume${i}${j}
|
|
}
|
|
}
|
|
|
|
for { set i 0 } { $i < 5 } { incr i } {
|
|
volumeMapper0${i} SetInputConnection [t GetOutputPort]
|
|
volumeMapper1${i} SetInputConnection [ss GetOutputPort]
|
|
volumeMapper2${i} SetInputConnection [iac GetOutputPort]
|
|
volumeMapper3${i} SetInputConnection [iac3 GetOutputPort]
|
|
volumeMapper4${i} SetInputConnection [iacRGBA GetOutputPort]
|
|
|
|
volumeMapper${i}0 SetBlendModeToMaximumIntensity
|
|
volumeMapper${i}1 SetBlendModeToComposite
|
|
volumeMapper${i}2 SetBlendModeToComposite
|
|
volumeMapper${i}3 SetBlendModeToComposite
|
|
volumeMapper${i}4 SetBlendModeToComposite
|
|
|
|
volumeProperty0${i} IndependentComponentsOn
|
|
volumeProperty1${i} IndependentComponentsOn
|
|
volumeProperty2${i} IndependentComponentsOff
|
|
volumeProperty3${i} IndependentComponentsOn
|
|
volumeProperty4${i} IndependentComponentsOff
|
|
|
|
volumeProperty0${i} SetColor rainbow
|
|
volumeProperty0${i} SetScalarOpacity rampPoint2
|
|
volumeProperty0${i} SetGradientOpacity constant1
|
|
|
|
volumeProperty1${i} SetColor rainbow
|
|
volumeProperty1${i} SetScalarOpacity rampPoint2
|
|
volumeProperty1${i} SetGradientOpacity constant1
|
|
|
|
volumeProperty2${i} SetColor rainbow
|
|
volumeProperty2${i} SetScalarOpacity rampPoint2
|
|
volumeProperty2${i} SetGradientOpacity constant1
|
|
|
|
volumeProperty3${i} SetColor 0 red
|
|
volumeProperty3${i} SetColor 1 green
|
|
volumeProperty3${i} SetColor 2 blue
|
|
volumeProperty3${i} SetColor 3 yellow
|
|
volumeProperty3${i} SetScalarOpacity 0 rampPoint2
|
|
volumeProperty3${i} SetScalarOpacity 1 rampPoint2
|
|
volumeProperty3${i} SetScalarOpacity 2 rampPoint2
|
|
volumeProperty3${i} SetScalarOpacity 3 rampPoint2
|
|
volumeProperty3${i} SetGradientOpacity 0 constant1
|
|
volumeProperty3${i} SetGradientOpacity 1 constant1
|
|
volumeProperty3${i} SetGradientOpacity 2 constant1
|
|
volumeProperty3${i} SetGradientOpacity 3 constant1
|
|
volumeProperty3${i} SetComponentWeight 0 1
|
|
volumeProperty3${i} SetComponentWeight 1 1
|
|
volumeProperty3${i} SetComponentWeight 2 1
|
|
volumeProperty3${i} SetComponentWeight 3 1
|
|
|
|
volumeProperty4${i} SetColor rainbow
|
|
volumeProperty4${i} SetScalarOpacity rampPoint2
|
|
volumeProperty4${i} SetGradientOpacity constant1
|
|
|
|
volumeProperty${i}2 ShadeOn
|
|
volumeProperty${i}4 ShadeOn 0
|
|
volumeProperty${i}4 ShadeOn 1
|
|
volumeProperty${i}4 ShadeOn 2
|
|
volumeProperty${i}4 ShadeOn 3
|
|
}
|
|
|
|
volumeProperty00 SetScalarOpacity ramp1
|
|
volumeProperty10 SetScalarOpacity ramp1
|
|
volumeProperty20 SetScalarOpacity ramp1
|
|
volumeProperty30 SetScalarOpacity 0 surface
|
|
volumeProperty30 SetScalarOpacity 1 surface
|
|
volumeProperty30 SetScalarOpacity 2 surface
|
|
volumeProperty30 SetScalarOpacity 3 surface
|
|
volumeProperty40 SetScalarOpacity ramp1
|
|
|
|
volumeProperty02 SetScalarOpacity surface
|
|
volumeProperty12 SetScalarOpacity surface
|
|
volumeProperty22 SetScalarOpacity surface
|
|
volumeProperty32 SetScalarOpacity 0 surface
|
|
volumeProperty32 SetScalarOpacity 1 surface
|
|
volumeProperty32 SetScalarOpacity 2 surface
|
|
volumeProperty32 SetScalarOpacity 3 surface
|
|
volumeProperty42 SetScalarOpacity surface
|
|
|
|
volumeProperty04 SetScalarOpacity surface
|
|
volumeProperty14 SetScalarOpacity surface
|
|
volumeProperty24 SetScalarOpacity surface
|
|
volumeProperty34 SetScalarOpacity 0 surface
|
|
volumeProperty34 SetScalarOpacity 1 surface
|
|
volumeProperty34 SetScalarOpacity 2 surface
|
|
volumeProperty34 SetScalarOpacity 3 surface
|
|
volumeProperty44 SetScalarOpacity surface
|
|
|
|
volumeProperty03 SetGradientOpacity gop
|
|
volumeProperty13 SetGradientOpacity gop
|
|
volumeProperty23 SetGradientOpacity gop
|
|
volumeProperty33 SetGradientOpacity 0 gop
|
|
volumeProperty33 SetGradientOpacity 2 gop
|
|
volumeProperty43 SetGradientOpacity gop
|
|
|
|
volumeProperty33 SetScalarOpacity 0 ramp1
|
|
volumeProperty33 SetScalarOpacity 2 ramp1
|
|
|
|
volumeProperty04 SetGradientOpacity gop
|
|
volumeProperty14 SetGradientOpacity gop
|
|
volumeProperty24 SetGradientOpacity gop
|
|
volumeProperty34 SetGradientOpacity 0 gop
|
|
volumeProperty34 SetGradientOpacity 2 gop
|
|
volumeProperty44 SetGradientOpacity gop
|
|
|
|
renWin Render
|
|
|
|
[ren1 GetActiveCamera] Dolly 1.3
|
|
[ren1 GetActiveCamera] Azimuth 15
|
|
[ren1 GetActiveCamera] Elevation 5
|
|
ren1 ResetCameraClippingRange
|
|
|
|
wm withdraw .
|
|
|
|
iren Initialize
|
|
|