# Load libraries for VTK package require vtk package require vtkinteraction package require vtktesting # This example shows how to use a transparent texture map to perform # thresholding. The key is the vtkThresholdTextureCoords filter which # creates texture coordinates based on a threshold value. These texture # coordinates are used in conjuntion with a texture map with varying # opacity and intensity to create an inside, transition, and outside # region. # # Begin by reading some structure grid data. vtkPLOT3DReader pl3d pl3d SetXYZFileName "$VTK_DATA_ROOT/Data/bluntfinxyz.bin" pl3d SetQFileName "$VTK_DATA_ROOT/Data/bluntfinq.bin" pl3d SetScalarFunctionNumber 100 pl3d SetVectorFunctionNumber 202 pl3d Update # Now extract surfaces from the grid corresponding to boundary geometry. # First the wall. vtkStructuredGridGeometryFilter wall wall SetInputConnection [pl3d GetOutputPort] wall SetExtent 0 100 0 0 0 100 vtkPolyDataMapper wallMap wallMap SetInputConnection [wall GetOutputPort] wallMap ScalarVisibilityOff vtkActor wallActor wallActor SetMapper wallMap eval [wallActor GetProperty] SetColor 0.8 0.8 0.8 # Now the fin. # vtkStructuredGridGeometryFilter fin fin SetInputConnection [pl3d GetOutputPort] fin SetExtent 0 100 0 100 0 0 vtkPolyDataMapper finMap finMap SetInputConnection [fin GetOutputPort] finMap ScalarVisibilityOff vtkActor finActor finActor SetMapper finMap eval [finActor GetProperty] SetColor 0.8 0.8 0.8 # Extract planes to threshold. Start by reading the specially # designed texture map that has three regions: an inside, boundary, # and outside region. The opacity and intensity of this texture map # are varied. vtkStructuredPointsReader tmap tmap SetFileName "$VTK_DATA_ROOT/Data/texThres2.vtk" vtkTexture texture texture SetInputConnection [tmap GetOutputPort] texture InterpolateOff texture RepeatOff # Here are the three planes which will be texture thresholded. # vtkStructuredGridGeometryFilter plane1 plane1 SetInputConnection [pl3d GetOutputPort] plane1 SetExtent 10 10 0 100 0 100 vtkThresholdTextureCoords thresh1 thresh1 SetInputConnection [plane1 GetOutputPort] thresh1 ThresholdByUpper 1.5 vtkDataSetMapper plane1Map plane1Map SetInputConnection [thresh1 GetOutputPort] eval plane1Map SetScalarRange [[pl3d GetOutput] GetScalarRange] vtkActor plane1Actor plane1Actor SetMapper plane1Map plane1Actor SetTexture texture [plane1Actor GetProperty] SetOpacity 0.999 vtkStructuredGridGeometryFilter plane2 plane2 SetInputConnection [pl3d GetOutputPort] plane2 SetExtent 30 30 0 100 0 100 vtkThresholdTextureCoords thresh2 thresh2 SetInputConnection [plane2 GetOutputPort] thresh2 ThresholdByUpper 1.5 vtkDataSetMapper plane2Map plane2Map SetInputConnection [thresh2 GetOutputPort] eval plane2Map SetScalarRange [[pl3d GetOutput] GetScalarRange] vtkActor plane2Actor plane2Actor SetMapper plane2Map plane2Actor SetTexture texture [plane2Actor GetProperty] SetOpacity 0.999 vtkStructuredGridGeometryFilter plane3 plane3 SetInputConnection [pl3d GetOutputPort] plane3 SetExtent 35 35 0 100 0 100 vtkThresholdTextureCoords thresh3 thresh3 SetInputConnection [plane3 GetOutputPort] thresh3 ThresholdByUpper 1.5 vtkDataSetMapper plane3Map plane3Map SetInputConnection [thresh3 GetOutputPort] eval plane3Map SetScalarRange [[pl3d GetOutput] GetScalarRange] vtkActor plane3Actor plane3Actor SetMapper plane3Map plane3Actor SetTexture texture [plane3Actor GetProperty] SetOpacity 0.999 # For context create an outline around the data. # vtkStructuredGridOutlineFilter outline outline SetInputConnection [pl3d GetOutputPort] vtkPolyDataMapper outlineMapper outlineMapper SetInputConnection [outline GetOutputPort] vtkActor outlineActor outlineActor SetMapper outlineMapper set outlineProp [outlineActor GetProperty] eval $outlineProp SetColor 0 0 0 # Create the RenderWindow, Renderer and both Actors # vtkRenderer ren1 vtkRenderWindow renWin renWin AddRenderer ren1 vtkRenderWindowInteractor iren iren SetRenderWindow renWin # Add the actors to the renderer, set the background and size # ren1 AddActor outlineActor ren1 AddActor wallActor ren1 AddActor finActor ren1 AddActor plane1Actor ren1 AddActor plane2Actor ren1 AddActor plane3Actor ren1 SetBackground 1 1 1 renWin SetSize 500 500 # Set up a nice view. # vtkCamera cam1 cam1 SetClippingRange 1.51176 75.5879 cam1 SetFocalPoint 2.33749 2.96739 3.61023 cam1 SetPosition 10.8787 5.27346 15.8687 cam1 SetViewAngle 30 cam1 SetViewPlaneNormal 0.564986 0.152542 0.810877 cam1 SetViewUp -0.0610856 0.987798 -0.143262 ren1 SetActiveCamera cam1 iren Initialize # Set up an observer to invoke a proc when the UserEvent (keypress-u) # is invoked. # iren AddObserver UserEvent {wm deiconify .vtkInteract} # prevent the tk window from showing up then start the event loop wm withdraw .