File: TestCameraInterpolator.tcl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,880 kB
  • sloc: cpp: 1,442,792; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 103; objc: 17
file content (121 lines) | stat: -rw-r--r-- 3,215 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package require vtk
package require vtkinteraction
package require vtktesting

vtkLookupTable lut
  lut SetHueRange 0.6 0
  lut SetSaturationRange 1.0 0
  lut SetValueRange 0.5 1.0

# Read the data: a height field results
vtkDEMReader demReader
  demReader SetFileName "$VTK_DATA_ROOT/Data/SainteHelens.dem"
  demReader Update

set lo [lindex [[demReader GetOutput] GetScalarRange] 0]
set hi [lindex [[demReader GetOutput] GetScalarRange] 1]

vtkImageDataGeometryFilter surface
  surface SetInputConnection [demReader GetOutputPort]

vtkWarpScalar warp
  warp SetInputConnection [surface GetOutputPort]
  warp SetScaleFactor 1
  warp UseNormalOn
  warp SetNormal 0 0 1
  warp Update

vtkPolyDataNormals normals
  normals SetInputData [warp GetPolyDataOutput]
  normals SetFeatureAngle 60
  normals SplittingOff

vtkPolyDataMapper demMapper
  demMapper SetInputConnection [normals GetOutputPort]
  eval demMapper SetScalarRange $lo $hi
  demMapper SetLookupTable lut

vtkLODActor demActor
  demActor SetMapper demMapper

# 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 demActor

ren1 SetBackground 0 0 0
renWin SetSize 300 300
ren1 SetBackground 0.1 0.2 0.4

# 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 .

vtkCamera view1
view1 SetClippingRange 30972.2 35983.7
view1 SetFocalPoint 562835 5.11498e+006 2294.5
view1 SetPosition 562835 5.11498e+006 35449.9
view1 SetViewAngle 30
view1 SetViewUp 0 1 0

vtkCamera view2
view2 SetClippingRange 9013.43 13470.4
view2 SetFocalPoint 562835 5.11498e+006 2294.5
view2 SetPosition 562835 5.11498e+006 13269.4
view2 SetViewAngle 30
view2 SetViewUp 0 1 0

vtkCamera view3
view3 SetClippingRange 4081.2 13866.4
view3 SetFocalPoint 562853 5.11586e+006 2450.05
view3 SetPosition 562853 5.1144e+006 10726.6
view3 SetViewAngle 30
view3 SetViewUp 0 0.984808 0.173648

vtkCamera view4
view4 SetClippingRange 14.0481 14048.1
view4 SetFocalPoint 562880 5.11652e+006 2733.15
view4 SetPosition 562974 5.11462e+006 6419.98
view4 SetViewAngle 30
view4 SetViewUp 0.0047047 0.888364 0.459116

vtkCamera view5
view5 SetClippingRange 14.411 14411
view5 SetFocalPoint 562910 5.11674e+006 3027.15
view5 SetPosition 562414 5.11568e+006 3419.87
view5 SetViewAngle 30
view5 SetViewUp -0.0301976 0.359864 0.932516

vtkCameraInterpolator interpolator
interpolator SetInterpolationTypeToSpline
interpolator AddCamera 0 view1
interpolator AddCamera 5 view2
interpolator AddCamera 7.5 view3
interpolator AddCamera 9.0 view4
interpolator AddCamera 11.0 view5

vtkCamera camera
ren1 SetActiveCamera camera
proc animate {} {
    set numSteps 500
    set min [interpolator GetMinimumT]
    set max [interpolator GetMaximumT]
    for {set i 0} {$i <= $numSteps} {incr i} {
        set t [expr double($i) * ($max - $min) / double($numSteps)]
        interpolator InterpolateCamera $t camera
        renWin Render
    }
}
interpolator InterpolateCamera 8.2 camera
#animate