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.
81 lines
2.4 KiB
81 lines
2.4 KiB
package require vtk
|
|
package require vtkinteraction
|
|
|
|
# Create the standard renderer, render window
|
|
# and interactor
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
iren SetDesiredUpdateRate 3
|
|
|
|
# Create a small mesh. The coarser and more opaque the mesh, the easier it
|
|
# is to see rendering errors.
|
|
vtkImageMandelbrotSource input
|
|
input SetWholeExtent 0 2 0 2 0 2
|
|
input SetSizeCX 2 2 2 2
|
|
input SetMaximumNumberOfIterations 10
|
|
|
|
# make sure we have only tetrahedra
|
|
vtkDataSetTriangleFilter trifilter
|
|
trifilter SetInputConnection [input GetOutputPort]
|
|
|
|
# Create transfer mapping scalar value to opacity
|
|
vtkPiecewiseFunction opacityTransferFunction
|
|
opacityTransferFunction AddPoint 0 0.0
|
|
opacityTransferFunction AddPoint 10 1.0
|
|
|
|
# Create transfer mapping scalar value to color
|
|
vtkColorTransferFunction colorTransferFunction
|
|
colorTransferFunction AddRGBPoint 0 1.0 0.0 1.0
|
|
colorTransferFunction AddRGBPoint 2 0.0 0.0 1.0
|
|
colorTransferFunction AddRGBPoint 4 0.0 1.0 1.0
|
|
colorTransferFunction AddRGBPoint 6 0.0 1.0 0.0
|
|
colorTransferFunction AddRGBPoint 8 1.0 1.0 0.0
|
|
colorTransferFunction AddRGBPoint 10 1.0 0.0 0.0
|
|
|
|
# The property describes how the data will look
|
|
vtkVolumeProperty volumeProperty
|
|
volumeProperty SetColor colorTransferFunction
|
|
volumeProperty SetScalarOpacity opacityTransferFunction
|
|
volumeProperty ShadeOff
|
|
volumeProperty SetInterpolationTypeToLinear
|
|
volumeProperty SetScalarOpacityUnitDistance 0.75
|
|
|
|
# The mapper / ray cast function / ray integrator know how to render the data
|
|
vtkUnstructuredGridVolumeRayCastMapper volumeMapper
|
|
volumeMapper SetInputConnection [trifilter GetOutputPort]
|
|
|
|
vtkUnstructuredGridPartialPreIntegration rayIntegrator
|
|
volumeMapper SetRayIntegrator rayIntegrator
|
|
|
|
# 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
|
|
renWin SetSize 300 300
|
|
|
|
[ren1 GetActiveCamera] Azimuth 20.0
|
|
[ren1 GetActiveCamera] Elevation 15.0
|
|
[ren1 GetActiveCamera] Zoom 1.2
|
|
|
|
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 .
|
|
|
|
|
|
|
|
|