# This example shows how to use decimation to reduce a polygonal mesh. We also
# use mesh smoothing and generate surface normals to give a pleasing result.
#

package require vtk
package require vtkinteraction

# We start by reading some data that was originally captured from
# a Cyberware laser digitizing system.
#
vtkPolyDataReader fran
    fran SetFileName "$VTK_DATA_ROOT/Data/fran_cut.vtk"

# We want to preserve topology (not let any cracks form). This may limit
# the total reduction possible, which we have specified at 90%.
#
vtkDecimatePro deci
    deci SetInputConnection [fran GetOutputPort]
    deci SetTargetReduction 0.9
    deci PreserveTopologyOn
vtkSmoothPolyDataFilter smoother
    smoother SetInputConnection [deci GetOutputPort]
    smoother SetNumberOfIterations 50
vtkPolyDataNormals normals
    normals SetInputConnection [smoother GetOutputPort]
    normals FlipNormalsOn
vtkPolyDataMapper franMapper
    franMapper SetInputConnection [normals GetOutputPort]
vtkActor franActor
    franActor SetMapper franMapper
    eval [franActor GetProperty] SetColor 1.0 0.49 0.25

# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin

# Add the actors to the renderer, set the background and size
#
ren1 AddActor franActor
ren1 SetBackground 1 1 1
renWin SetSize 250 250

# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}

vtkCamera cam1
    cam1 SetClippingRange 0.0475572 2.37786
    cam1 SetFocalPoint 0.052665 -0.129454 -0.0573973
    cam1 SetPosition 0.327637 -0.116299 -0.256418
    cam1 SetViewUp -0.0225386 0.999137 0.034901
ren1 SetActiveCamera cam1

iren Initialize

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


