catch {load vtktcl}

# create a window to render into
vtkRenderWindow renWin
vtkRenderer ren1
#ren1 SetBackground 1.0 1.0 1.0
renWin AddRenderer ren1
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin

# vtk pipeline
vtkFitsReader fitsReader
fitsReader SetFileName OMC.fits
fitsReader Update

# outline
vtkOutlineFilter outlineF
outlineF SetInput [fitsReader GetOutput]

vtkPolyDataMapper outlineM
outlineM SetInput [outlineF GetOutput]
outlineM ScalarVisibilityOff

vtkActor outlineA
outlineA SetMapper outlineM
#[outlineA GetProperty] SetColor 0.0 0.0 0.0

# isosurface
vtkMarchingCubes shellE
shellE SetInput [fitsReader GetOutput]
shellE SetValue 0 10

# decimate
#vtkDecimate shellD
#shellD SetInput [shellE GetOutput]
#shellD SetTargetReduction 0.7

vtkPolyDataMapper shellM
shellM SetInput [shellE GetOutput]
#shellM SetInput [shellD GetOutput]
shellM ScalarVisibilityOff

vtkActor shellA
shellA SetMapper shellM
[shellA GetProperty] SetColor 0.5 0.5 1.0

# slice
vtkStructuredPointsGeometryFilter sliceE
# values are clamped
sliceE SetExtent 0 5000 0 5000 13 13
sliceE SetInput [fitsReader GetOutput]

vtkPolyDataMapper sliceM
sliceM SetInput [sliceE GetOutput]
sliceM ScalarVisibilityOn
set range [[fitsReader GetOutput] GetScalarRange]
eval "sliceM SetScalarRange $range"

vtkActor sliceA
sliceA SetMapper sliceM

# add actors to renderer
ren1 AddActor outlineA
ren1 AddActor shellA
ren1 AddActor sliceA

# Render an image; since no lights/cameras specified, created automatically
renWin Render;

# prevent the tk window from showing up then start the event loop
#wm withdraw .

vtkVRMLExporter vrml
vrml SetRenderWindow renWin
vrml SetFileName out.wrl
# uncomment if wanting to write VRML
#vrml Write

# Begin mouse interaction
#iren Start;

# uncomment for vtkPipeline browser
# (http://brighton.ncsa.uiuc.edu/~prajlich/vtkPipeline)
#source tree.tcl
#source vtkShow.tcl
#source vtkPipeline.tcl

#set vtkPipelineWin .
#vtkPipeline renWin


