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.

116 lines
2.8 KiB

2 years ago
package require vtk
package require vtkinteraction
# create pipeline
#
# create sphere to color
vtkSphereSource sphere
sphere SetThetaResolution 20
sphere SetPhiResolution 40
proc colorCells {} {
vtkMath randomColorGenerator
set input [randomColors GetInput]
set output [randomColors GetOutput]
set numCells [$input GetNumberOfCells]
vtkFloatArray colors
colors SetNumberOfTuples $numCells
for {set i 0} {$i < $numCells} {incr i} {
colors SetValue $i [randomColorGenerator Random 0 1]
}
[$output GetCellData] CopyScalarsOff
[$output GetCellData] PassData [$input GetCellData]
[$output GetCellData] SetScalars colors
colors Delete; #reference counting - it's ok
randomColorGenerator Delete
}
# Compute random scalars (colors) for each cell
vtkProgrammableAttributeDataFilter randomColors
randomColors SetInputConnection [sphere GetOutputPort]
randomColors SetExecuteMethod colorCells
# mapper and actor
vtkPolyDataMapper mapper
mapper SetInput [randomColors GetPolyDataOutput]
eval mapper SetScalarRange [[randomColors GetPolyDataOutput] GetScalarRange]
vtkActor sphereActor
sphereActor SetMapper mapper
# Create a scalar bar
vtkScalarBarActor scalarBar
scalarBar SetLookupTable [mapper GetLookupTable]
scalarBar SetTitle "Temperature"
[scalarBar GetPositionCoordinate] SetCoordinateSystemToNormalizedViewport
[scalarBar GetPositionCoordinate] SetValue 0.1 0.05
scalarBar SetOrientationToVertical
scalarBar SetWidth 0.8
scalarBar SetHeight 0.9
scalarBar SetLabelFormat "%-#6.3f"
# Test the Get/Set Position
eval scalarBar SetPosition [scalarBar GetPosition]
# Create graphics stuff
# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderer ren2
vtkRenderWindow renWin
renWin AddRenderer ren1
renWin AddRenderer ren2
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
ren1 AddActor sphereActor
ren2 AddActor2D scalarBar
renWin SetSize 160 160
ren1 SetViewport 0 0 0.75 1.0
ren2 SetViewport 0.75 0 1.0 1.0
ren2 SetBackground 0.3 0.3 0.3
# render the image
#
renWin Render
scalarBar SetNumberOfLabels 8
renWin Render
vtkWindowToImageFilter w2i
w2i SetInput renWin
w2i SetMagnification 2
w2i Update
# copy the output
set outputData [[w2i GetOutput] NewInstance]
$outputData DeepCopy [w2i GetOutput]
vtkImageMapper ia
ia SetInput $outputData
scalarBar ReleaseGraphicsResources renWin
sphereActor ReleaseGraphicsResources renWin
ia SetColorWindow 255
ia SetColorLevel 127.5
vtkActor2D ia2
ia2 SetMapper ia
renWin SetSize 320 320
ren2 RemoveViewProp scalarBar
ren1 RemoveViewProp sphereActor
ren1 AddActor ia2
renWin RemoveRenderer ren2
ren1 SetViewport 0 0 1 1
renWin Render
iren AddObserver UserEvent {wm deiconify .vtkInteract}
# prevent the tk window from showing up then start the event loop
wm withdraw .
$outputData UnRegister {}