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.
88 lines
2.1 KiB
88 lines
2.1 KiB
package require vtk
|
|
package require vtkinteraction
|
|
package require vtktesting
|
|
|
|
# Create the RenderWindow, Renderer and both Actors
|
|
#
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
vtkLight lgt
|
|
|
|
# create pipeline
|
|
#
|
|
vtkMergePoints locator
|
|
locator SetDivisions 32 32 46
|
|
locator RetainCellListsOff
|
|
locator SetNumberOfPointsPerBucket 2
|
|
locator AutomaticOff
|
|
|
|
vtkVolume16Reader v16
|
|
v16 SetDataDimensions 64 64
|
|
[v16 GetOutput] SetOrigin 0.0 0.0 0.0
|
|
v16 SetDataByteOrderToLittleEndian
|
|
v16 SetFilePrefix "$VTK_DATA_ROOT/Data/headsq/quarter"
|
|
v16 SetImageRange 1 93
|
|
v16 SetDataSpacing 3.2 3.2 1.5
|
|
|
|
vtkMarchingCubes iso
|
|
iso SetInputConnection [v16 GetOutputPort]
|
|
iso SetValue 0 1150
|
|
iso ComputeGradientsOn
|
|
iso ComputeScalarsOff
|
|
iso SetLocator locator
|
|
|
|
vtkVectorNorm gradient
|
|
gradient SetInputConnection [iso GetOutputPort]
|
|
|
|
vtkDataSetMapper isoMapper
|
|
isoMapper SetInputConnection [gradient GetOutputPort]
|
|
isoMapper ScalarVisibilityOn
|
|
isoMapper SetScalarRange 0 1200
|
|
isoMapper ImmediateModeRenderingOn
|
|
|
|
vtkActor isoActor
|
|
isoActor SetMapper isoMapper
|
|
set isoProp [isoActor GetProperty]
|
|
eval $isoProp SetColor $antique_white
|
|
|
|
vtkOutlineFilter outline
|
|
outline SetInputConnection [v16 GetOutputPort]
|
|
vtkPolyDataMapper outlineMapper
|
|
outlineMapper SetInputConnection [outline GetOutputPort]
|
|
vtkActor outlineActor
|
|
outlineActor SetMapper outlineMapper
|
|
set outlineProp [outlineActor GetProperty]
|
|
#eval $outlineProp SetColor 0 0 0
|
|
|
|
# Add the actors to the renderer, set the background and size
|
|
#
|
|
ren1 AddActor outlineActor
|
|
ren1 AddActor isoActor
|
|
ren1 SetBackground 1 1 1
|
|
ren1 AddLight lgt
|
|
renWin SetSize 250 250
|
|
ren1 SetBackground 0.1 0.2 0.4
|
|
|
|
ren1 ResetCamera
|
|
set cam1 [ren1 GetActiveCamera]
|
|
$cam1 Elevation 90
|
|
$cam1 SetViewUp 0 0 -1
|
|
$cam1 Zoom 1.5
|
|
eval lgt SetPosition [$cam1 GetPosition]
|
|
eval lgt SetFocalPoint [$cam1 GetFocalPoint]
|
|
|
|
ren1 ResetCameraClippingRange
|
|
|
|
# render the image
|
|
#
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
|
|
renWin Render
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|
|
|
|
|