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
|
package require vtk
package require vtkinteraction
# prevent the tk window from showing up then start the event loop
wm withdraw .
vtkRenderWindow renWin
# create a rendering window and renderer
vtkRenderer ren1
renWin AddRenderer ren1
renWin SetSize 400 400
vtkSpherePuzzle puzzle
vtkPolyDataMapper mapper
mapper SetInputConnection [puzzle GetOutputPort]
vtkActor actor
actor SetMapper mapper
vtkSpherePuzzleArrows arrows
vtkPolyDataMapper mapper2
mapper2 SetInputConnection [arrows GetOutputPort]
vtkActor actor2
actor2 SetMapper mapper2
# Add the actors to the renderer, set the background and size
#
ren1 AddActor actor
ren1 AddActor actor2
ren1 SetBackground 0.1 0.2 0.4
set LastVal -1
proc MotionCallback {x y} {
global LastVal
# Compute display point from Tk display point.
set WindowY 400
set y [expr $WindowY - $y]
set z [ren1 GetZ $x $y]
ren1 SetDisplayPoint $x $y $z
ren1 DisplayToWorld
set pt [ren1 GetWorldPoint]
#tk_messageBox -message "$pt"
set x [lindex $pt 0]
set y [lindex $pt 1]
set z [lindex $pt 2]
set val [puzzle SetPoint $x $y $z]
if {$val != $LastVal} {
renWin Render
set LastVal $val
}
}
proc ButtonCallback {x y} {
# Compute display point from Tk display point.
set WindowY 400
set y [expr $WindowY - $y]
set z [ren1 GetZ $x $y]
ren1 SetDisplayPoint $x $y $z
ren1 DisplayToWorld
set pt [ren1 GetWorldPoint]
#tk_messageBox -message "$pt"
set x [lindex $pt 0]
set y [lindex $pt 1]
set z [lindex $pt 2]
# Had to move away from mose events (sgi RT problems)
for { set i 0} {$i <= 100} {set i [expr $i + 5]} {
puzzle SetPoint $x $y $z
puzzle MovePoint $i
renWin Render
}
}
renWin Render
set cam [ren1 GetActiveCamera]
$cam Elevation -40
update
puzzle MoveHorizontal 0 100 0
puzzle MoveHorizontal 1 100 1
puzzle MoveHorizontal 2 100 0
puzzle MoveVertical 2 100 0
puzzle MoveVertical 1 100 0
renWin Render
|