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.
86 lines
2.4 KiB
86 lines
2.4 KiB
2 years ago
|
# This is a simple volume rendering example that
|
||
|
# uses a vtkVolumeRayCast mapper
|
||
|
|
||
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
|
||
|
# Simple volume rendering example.
|
||
|
vtkImageReader reader
|
||
|
reader SetDataByteOrderToLittleEndian
|
||
|
reader SetDataExtent 0 63 0 63 1 93
|
||
|
reader SetFilePrefix "$VTK_DATA_ROOT/Data/headsq/quarter"
|
||
|
reader SetDataMask 0x7fff
|
||
|
reader SetDataSpacing 2 2 1
|
||
|
reader SetDataScalarTypeToUnsignedShort
|
||
|
reader Update
|
||
|
|
||
|
[reader GetOutput] SetOrigin -63 -63 -46
|
||
|
|
||
|
# Create transfer functions for opacity and color
|
||
|
vtkPiecewiseFunction opacityTransferFunction
|
||
|
opacityTransferFunction AddPoint 100 0.0
|
||
|
opacityTransferFunction AddPoint 2000 1.0
|
||
|
|
||
|
vtkColorTransferFunction colorTransferFunction
|
||
|
colorTransferFunction ClampingOff
|
||
|
colorTransferFunction AddRGBPoint 0.0 1.00 0.0 0.0
|
||
|
colorTransferFunction AddRGBPoint 1000.0 0.00 1.0 0.0
|
||
|
colorTransferFunction AddRGBPoint 2000.0 0.00 0.0 1.0
|
||
|
colorTransferFunction AddRGBPoint 3000.0 1.00 1.0 1.0
|
||
|
colorTransferFunction AddRGBPoint 4000.0 1.00 1.0 1.0
|
||
|
# colorTransferFunction SetColorSpaceToHSV
|
||
|
|
||
|
# Create properties, mappers, volume actors, and ray cast function
|
||
|
vtkVolumeProperty volumeProperty
|
||
|
volumeProperty SetColor colorTransferFunction
|
||
|
volumeProperty SetScalarOpacity opacityTransferFunction
|
||
|
volumeProperty ShadeOn
|
||
|
volumeProperty SetInterpolationTypeToLinear
|
||
|
|
||
|
# The mapper / ray cast function know how to render the data
|
||
|
vtkOpenGLVolumeShearWarpMapper volumeMapper
|
||
|
volumeMapper SetInputConnection [reader GetOutputPort]
|
||
|
volumeMapper FastClassificationOff
|
||
|
volumeMapper SetFunctionTypeToMIP
|
||
|
volumeMapper IntermixIntersectingGeometryOn
|
||
|
|
||
|
# 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
|
||
|
|
||
|
vtkCamera cam
|
||
|
cam ParallelProjectionOn
|
||
|
|
||
|
# Create the standard renderer, render window
|
||
|
# and interactor
|
||
|
vtkRenderer ren1
|
||
|
vtkRenderWindow renWin
|
||
|
renWin AddRenderer ren1
|
||
|
vtkRenderWindowInteractor iren
|
||
|
iren SetRenderWindow renWin
|
||
|
|
||
|
ren1 SetActiveCamera cam
|
||
|
#ren1 AddVolume volume
|
||
|
ren1 SetBackground 0.5 0.5 0.5
|
||
|
renWin SetSize 600 600
|
||
|
|
||
|
ren1 AddVolume volume
|
||
|
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 .
|
||
|
|
||
|
|
||
|
|