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.
94 lines
2.7 KiB
94 lines
2.7 KiB
2 years ago
|
# This example demonstrates the generation of a streamsurface.
|
||
|
|
||
|
#
|
||
|
# First we include the VTK Tcl packages which will make available
|
||
|
# all of the vtk commands from Tcl. The vtkinteraction package defines
|
||
|
# a simple Tcl/Tk interactor widget.
|
||
|
#
|
||
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
package require vtktesting
|
||
|
|
||
|
# Read the data and specify which scalars and vectors to read.
|
||
|
#
|
||
|
vtkPLOT3DReader pl3d
|
||
|
pl3d SetXYZFileName "$VTK_DATA_ROOT/Data/combxyz.bin"
|
||
|
pl3d SetQFileName "$VTK_DATA_ROOT/Data/combq.bin"
|
||
|
pl3d SetScalarFunctionNumber 100
|
||
|
pl3d SetVectorFunctionNumber 202
|
||
|
pl3d Update
|
||
|
|
||
|
# We use a rake to generate a series of streamline starting points
|
||
|
# scattered along a line. Each point will generate a streamline. These
|
||
|
# streamlines are then fed to the vtkRuledSurfaceFilter which stitches
|
||
|
# the lines together to form a surface.
|
||
|
#
|
||
|
vtkLineSource rake
|
||
|
rake SetPoint1 15 -5 32
|
||
|
rake SetPoint2 15 5 32
|
||
|
rake SetResolution 21
|
||
|
vtkPolyDataMapper rakeMapper
|
||
|
rakeMapper SetInputConnection [rake GetOutputPort]
|
||
|
vtkActor rakeActor
|
||
|
rakeActor SetMapper rakeMapper
|
||
|
|
||
|
vtkRungeKutta4 integ
|
||
|
vtkStreamTracer sl
|
||
|
sl SetInputConnection [pl3d GetOutputPort]
|
||
|
sl SetSourceConnection [rake GetOutputPort]
|
||
|
sl SetIntegrator integ
|
||
|
sl SetMaximumPropagation 0.1
|
||
|
sl SetMaximumPropagationUnitToTimeUnit
|
||
|
sl SetInitialIntegrationStep 0.1
|
||
|
sl SetInitialIntegrationStepUnitToCellLengthUnit
|
||
|
sl SetIntegrationDirectionToBackward
|
||
|
|
||
|
#
|
||
|
# The ruled surface stiches together lines with triangle strips.
|
||
|
# Note the SetOnRatio method. It turns on every other strip that
|
||
|
# the filter generates (only when multiple lines are input).
|
||
|
#
|
||
|
vtkRuledSurfaceFilter scalarSurface
|
||
|
scalarSurface SetInputConnection [sl GetOutputPort]
|
||
|
scalarSurface SetOffset 0
|
||
|
scalarSurface SetOnRatio 2
|
||
|
scalarSurface PassLinesOn
|
||
|
scalarSurface SetRuledModeToPointWalk
|
||
|
scalarSurface SetDistanceFactor 30
|
||
|
vtkPolyDataMapper mapper
|
||
|
mapper SetInputConnection [scalarSurface GetOutputPort]
|
||
|
eval mapper SetScalarRange [[pl3d GetOutput] GetScalarRange]
|
||
|
vtkActor actor
|
||
|
actor SetMapper mapper
|
||
|
|
||
|
# Put an outline around for context.
|
||
|
#
|
||
|
vtkStructuredGridOutlineFilter outline
|
||
|
outline SetInputConnection [pl3d GetOutputPort]
|
||
|
vtkPolyDataMapper outlineMapper
|
||
|
outlineMapper SetInputConnection [outline GetOutputPort]
|
||
|
vtkActor outlineActor
|
||
|
outlineActor SetMapper outlineMapper
|
||
|
[outlineActor GetProperty] SetColor 0 0 0
|
||
|
|
||
|
# Now create the usual graphics stuff.
|
||
|
vtkRenderer ren
|
||
|
vtkRenderWindow renWin
|
||
|
renWin AddRenderer ren
|
||
|
vtkRenderWindowInteractor iren
|
||
|
iren SetRenderWindow renWin
|
||
|
|
||
|
ren AddActor rakeActor
|
||
|
ren AddActor actor
|
||
|
ren AddActor outlineActor
|
||
|
ren SetBackground 1 1 1
|
||
|
|
||
|
renWin SetSize 300 300
|
||
|
|
||
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
||
|
iren Initialize
|
||
|
|
||
|
# interact with data
|
||
|
wm withdraw .
|
||
|
|