Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.
 
 
 
 
 
 

127 lines
3.8 KiB

# This example demonstrates the use of vtkCubeAxesActor2D to indicate the
# position in space that the camera is currently viewing.
# The vtkCubeAxesActor2D draws axes on the bounding box of the data set and
# labels the axes with x-y-z coordinates.
#
# First we include the VTK Tcl packages which will make available
# all of the vtk commands to Tcl
#
package require vtk
package require vtkinteraction
# Create a vtkBYUReader and read in a data set.
#
vtkBYUReader fohe
fohe SetGeometryFileName "$VTK_DATA_ROOT/Data/teapot.g"
# Create a vtkPolyDataNormals filter to calculate the normals of the data set.
vtkPolyDataNormals normals
normals SetInputConnection [fohe GetOutputPort]
# Set up the associated mapper and actor.
vtkPolyDataMapper foheMapper
foheMapper SetInputConnection [normals GetOutputPort]
vtkLODActor foheActor
foheActor SetMapper foheMapper
# Create a vtkOutlineFilter to draw the bounding box of the data set. Also
# create the associated mapper and actor.
vtkOutlineFilter outline
outline SetInputConnection [normals GetOutputPort]
vtkPolyDataMapper mapOutline
mapOutline SetInputConnection [outline GetOutputPort]
vtkActor outlineActor
outlineActor SetMapper mapOutline
[outlineActor GetProperty] SetColor 0 0 0
# Create a vtkCamera, and set the camera parameters.
vtkCamera camera
camera SetClippingRange 1.60187 20.0842
camera SetFocalPoint 0.21406 1.5 0
camera SetPosition 8.3761 4.94858 4.12505
camera SetViewUp 0.180325 0.549245 -0.815974
# Create a vtkLight, and set the light parameters.
vtkLight light
light SetFocalPoint 0.21406 1.5 0
light SetPosition 8.3761 4.94858 4.12505
# Create the Renderers. Assign them the appropriate viewport coordinates,
# active camera, and light.
vtkRenderer ren1
ren1 SetViewport 0 0 0.5 1.0
ren1 SetActiveCamera camera
ren1 AddLight light
vtkRenderer ren2
ren2 SetViewport 0.5 0 1.0 1.0
ren2 SetActiveCamera camera
ren2 AddLight light
# Create the RenderWindow and RenderWindowInteractor.
vtkRenderWindow renWin
renWin AddRenderer ren1
renWin AddRenderer ren2
renWin SetWindowName "VTK - Cube Axes"
renWin SetSize 600 300
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
# Add the actors to the renderer, and set the background.
#
ren1 AddViewProp foheActor
ren1 AddViewProp outlineActor
ren2 AddViewProp foheActor
ren2 AddViewProp outlineActor
ren1 SetBackground 0.1 0.2 0.4
ren2 SetBackground 0.1 0.2 0.4
# Create a text property for both cube axes
#
vtkTextProperty tprop
tprop SetColor 1 1 1
tprop ShadowOn
# Create a vtkCubeAxesActor2D. Use the outer edges of the bounding box to
# draw the axes. Add the actor to the renderer.
vtkCubeAxesActor2D axes
axes SetInput [normals GetOutput]
axes SetCamera [ren1 GetActiveCamera]
axes SetLabelFormat "%6.4g"
axes SetFlyModeToOuterEdges
axes SetFontFactor 0.8
axes SetAxisTitleTextProperty tprop
axes SetAxisLabelTextProperty tprop
ren1 AddViewProp axes
# Create a vtkCubeAxesActor2D. Use the closest vertex to the camera to
# determine where to draw the axes. Add the actor to the renderer.
vtkCubeAxesActor2D axes2
axes2 SetViewProp foheActor
axes2 SetCamera [ren2 GetActiveCamera]
axes2 SetLabelFormat "%6.4g"
axes2 SetFlyModeToClosestTriad
axes2 SetFontFactor 0.8
axes2 ScalingOff
axes2 SetAxisTitleTextProperty tprop
axes2 SetAxisLabelTextProperty tprop
ren2 AddViewProp axes2
# Render
renWin Render
# Set the user method (bound to key 'u')
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize
# Set up a check for aborting rendering.
proc TkCheckAbort {} {
set foo [renWin GetEventPending]
if {$foo != 0} {renWin SetAbortRender 1}
}
renWin AddObserver AbortCheckEvent {TkCheckAbort}
# Withdraw the default tk window.
wm withdraw .