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.
94 lines
2.4 KiB
94 lines
2.4 KiB
2 years ago
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
|
||
|
set Scale 5
|
||
|
vtkLookupTable lut
|
||
|
lut SetHueRange 0.6 0
|
||
|
lut SetSaturationRange 1.0 0
|
||
|
lut SetValueRange 0.5 1.0
|
||
|
|
||
|
vtkDEMReader demModel
|
||
|
demModel SetFileName $VTK_DATA_ROOT/Data/SainteHelens.dem
|
||
|
demModel Update
|
||
|
|
||
|
demModel Print
|
||
|
|
||
|
set lo [expr $Scale * [lindex [demModel GetElevationBounds] 0]]
|
||
|
set hi [expr $Scale * [lindex [demModel GetElevationBounds] 1]]
|
||
|
|
||
|
vtkLODActor demActor
|
||
|
|
||
|
# create a pipeline for each lod mapper
|
||
|
vtkImageShrink3D shrink16
|
||
|
shrink16 SetShrinkFactors 16 16 1
|
||
|
shrink16 SetInputConnection [demModel GetOutputPort]
|
||
|
shrink16 AveragingOn
|
||
|
|
||
|
vtkImageDataGeometryFilter geom16
|
||
|
geom16 SetInputConnection [shrink16 GetOutputPort]
|
||
|
geom16 ReleaseDataFlagOn
|
||
|
|
||
|
vtkWarpScalar warp16
|
||
|
warp16 SetInputConnection [geom16 GetOutputPort]
|
||
|
warp16 SetNormal 0 0 1
|
||
|
warp16 UseNormalOn
|
||
|
warp16 SetScaleFactor $Scale
|
||
|
warp16 ReleaseDataFlagOn
|
||
|
|
||
|
vtkElevationFilter elevation16
|
||
|
elevation16 SetInputConnection [warp16 GetOutputPort]
|
||
|
elevation16 SetLowPoint 0 0 $lo
|
||
|
elevation16 SetHighPoint 0 0 $hi
|
||
|
eval elevation16 SetScalarRange $lo $hi
|
||
|
elevation16 ReleaseDataFlagOn
|
||
|
|
||
|
vtkPolyDataNormals normals16
|
||
|
normals16 SetInput [elevation16 GetPolyDataOutput]
|
||
|
normals16 SetFeatureAngle 60
|
||
|
normals16 ConsistencyOff
|
||
|
normals16 SplittingOff
|
||
|
normals16 ReleaseDataFlagOn
|
||
|
|
||
|
vtkPolyDataMapper demMapper16
|
||
|
demMapper16 SetInputConnection [normals16 GetOutputPort]
|
||
|
eval demMapper16 SetScalarRange $lo $hi
|
||
|
demMapper16 SetLookupTable lut
|
||
|
demMapper16 ImmediateModeRenderingOn
|
||
|
|
||
|
demMapper16 Update
|
||
|
demActor AddLODMapper demMapper16
|
||
|
|
||
|
# Create the RenderWindow, Renderer and both Actors
|
||
|
#
|
||
|
vtkRenderer ren1
|
||
|
vtkRenderWindow renWin
|
||
|
renWin AddRenderer ren1
|
||
|
vtkRenderWindowInteractor iren
|
||
|
iren SetRenderWindow renWin
|
||
|
vtkInteractorStyleTerrain t
|
||
|
iren SetInteractorStyle t
|
||
|
|
||
|
# Add the actors to the renderer, set the background and size
|
||
|
#
|
||
|
ren1 AddActor demActor
|
||
|
ren1 SetBackground .4 .4 .4
|
||
|
|
||
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
||
|
iren SetDesiredUpdateRate 1
|
||
|
|
||
|
wm withdraw .
|
||
|
proc TkCheckAbort {} {
|
||
|
set foo [renWin GetEventPending]
|
||
|
if {$foo != 0} {renWin SetAbortRender 1}
|
||
|
}
|
||
|
renWin AddObserver AbortCheckEvent {TkCheckAbort}
|
||
|
|
||
|
[ren1 GetActiveCamera] SetViewUp 0 0 1
|
||
|
[ren1 GetActiveCamera] SetPosition -99900 -21354 131801
|
||
|
[ren1 GetActiveCamera] SetFocalPoint 41461 41461 2815
|
||
|
ren1 ResetCamera
|
||
|
[ren1 GetActiveCamera] Dolly 1.2
|
||
|
ren1 ResetCameraClippingRange
|
||
|
|
||
|
renWin Render
|