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.
101 lines
2.7 KiB
101 lines
2.7 KiB
package require vtk
|
|
package require vtkinteraction
|
|
|
|
# read in an interesting object and outline it
|
|
#
|
|
vtkBYUReader fohe
|
|
fohe SetGeometryFileName "$VTK_DATA_ROOT/Data/teapot.g"
|
|
vtkPolyDataNormals normals
|
|
normals SetInputConnection [fohe GetOutputPort]
|
|
vtkPolyDataMapper foheMapper
|
|
foheMapper SetInputConnection [normals GetOutputPort]
|
|
vtkLODActor foheActor
|
|
foheActor SetMapper foheMapper
|
|
|
|
vtkOutlineFilter outline
|
|
outline SetInputConnection [normals GetOutputPort]
|
|
vtkPolyDataMapper mapOutline
|
|
mapOutline SetInputConnection [outline GetOutputPort]
|
|
vtkActor outlineActor
|
|
outlineActor SetMapper mapOutline
|
|
[outlineActor GetProperty] SetColor 0 0 0
|
|
|
|
# Create the RenderWindow, Renderer, and setup viewports
|
|
vtkCamera camera
|
|
camera SetClippingRange 1.60187 20.0842
|
|
camera SetFocalPoint 0.21406 1.5 0
|
|
camera SetPosition 11.63 6.32 5.77
|
|
camera SetViewUp 0.180325 0.549245 -0.815974
|
|
vtkLight light
|
|
light SetFocalPoint 0.21406 1.5 0
|
|
light SetPosition 8.3761 4.94858 4.12505
|
|
|
|
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
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
renWin AddRenderer ren2
|
|
renWin SetWindowName "VTK - Cube Axes"
|
|
renWin SetSize 790 400
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
# Add the actors to the renderer, set the background and size
|
|
#
|
|
ren1 AddViewProp foheActor
|
|
ren1 AddViewProp outlineActor
|
|
ren2 AddViewProp foheActor
|
|
if { [info command "rtExMath"] == ""} {
|
|
ren2 AddViewProp outlineActor
|
|
}
|
|
|
|
ren1 SetBackground 0.1 0.2 0.4
|
|
ren2 SetBackground 0.1 0.2 0.4
|
|
|
|
vtkTextProperty tprop
|
|
tprop SetColor 1 1 1
|
|
tprop ShadowOn
|
|
|
|
vtkCubeAxesActor2D axes
|
|
axes SetInput [normals GetOutput]
|
|
axes SetCamera [ren1 GetActiveCamera]
|
|
axes SetLabelFormat "%6.1f"
|
|
axes SetFlyModeToOuterEdges
|
|
axes SetFontFactor 0.8
|
|
axes SetAxisTitleTextProperty tprop
|
|
axes SetAxisLabelTextProperty tprop
|
|
ren1 AddViewProp axes
|
|
|
|
vtkCubeAxesActor2D axes2
|
|
axes2 SetViewProp foheActor
|
|
axes2 SetCamera [ren2 GetActiveCamera]
|
|
axes2 SetLabelFormat [axes GetLabelFormat]
|
|
axes2 SetFlyModeToClosestTriad
|
|
axes2 SetFontFactor [axes GetFontFactor]
|
|
axes2 ScalingOff
|
|
axes2 SetAxisTitleTextProperty tprop
|
|
axes2 SetAxisLabelTextProperty tprop
|
|
ren2 AddViewProp axes2
|
|
|
|
renWin Render
|
|
|
|
# render the image
|
|
#
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
|
|
iren Initialize
|
|
|
|
proc TkCheckAbort {} {
|
|
set foo [renWin GetEventPending]
|
|
if {$foo != 0} {renWin SetAbortRender 1}
|
|
}
|
|
renWin AddObserver "AbortCheckEvent" {TkCheckAbort}
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|