[vtk-developers] gradient backgrounds bug?

Dean Inglis dean.inglis at sympatico.ca
Mon Apr 14 21:30:31 EDT 2008


Ive been trying out the new gradient backgrounds
which are a great addition to vtk.  However, Ive
come across a few pipelines where the gradient 
background does not work and in some cases 
interferes with event processing.  Attached is
a tcl script to test vtkImageOrthoPlanes: it
makes use of two renderers.  If you un-comment 
one or both lines where the renderers turn on
the gradient background and try interacting with
the orthoplanes you will see some odd behaviour.
See tcl script below and comments.  I have no idea
how to fix this since I never do opengl programming,
and this behaviour may happen with other pipeline
scenarios.

Dean 



package require vtk
package require vtkinteraction

  vtkVolume16Reader v16
  v16 SetDataDimensions 64 64
  v16 SetDataByteOrderToLittleEndian
  v16 SetImageRange 1 93
  v16 SetDataSpacing 3.2 3.2 1.5
  v16 SetFilePrefix "d:/Developer/Sources/VTKData/Data/headsq/quarter"
  v16 ReleaseDataFlagOn
  v16 SetDataMask 0x7fff
  v16 Update

  vtkOutlineFilter outline
    outline SetInputConnection [v16 GetOutputPort ]

  vtkPolyDataMapper outlineMapper
    outlineMapper SetInputConnection [outline GetOutputPort ]

  vtkActor outlineActor
    outlineActor SetMapper outlineMapper

  vtkRenderer ren1
  vtkRenderer ren2

  vtkRenderWindow renWin
    renWin AddRenderer ren2 
    renWin AddRenderer ren1 

  vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin 

  vtkPropPicker picker    

  vtkProperty ipwProp
   # assign default props to the ipw's texture plane actor

  vtkImagePlaneWidget planeWidgetX
    planeWidgetX SetInteractor iren
    planeWidgetX SetKeyPressActivationValue 'x'
    planeWidgetX SetPicker picker 
    planeWidgetX RestrictPlaneToVolumeOn  
    [planeWidgetX GetPlaneProperty ] SetColor 1 0 0 
    planeWidgetX SetTexturePlaneProperty ipwProp 
    planeWidgetX TextureInterpolateOff  
    planeWidgetX SetResliceInterpolateToNearestNeighbour  
    planeWidgetX SetInput [v16 GetOutput ]
    planeWidgetX SetPlaneOrientationToXAxes  
    planeWidgetX SetSliceIndex 32 
    planeWidgetX DisplayTextOn  
    planeWidgetX On  
    planeWidgetX InteractionOff  
    planeWidgetX InteractionOn  

  vtkImagePlaneWidget planeWidgetY
    planeWidgetY SetInteractor iren
    planeWidgetY SetKeyPressActivationValue 'y' 
    planeWidgetY SetPicker picker 
    [planeWidgetY GetPlaneProperty] SetColor 1 1 0
    planeWidgetY SetTexturePlaneProperty ipwProp 
    planeWidgetY TextureInterpolateOn  
    planeWidgetY SetResliceInterpolateToLinear  
    planeWidgetY SetInput [v16 GetOutput ]
    planeWidgetY SetPlaneOrientationToYAxes  
    planeWidgetY SetSlicePosition 102.4 
    planeWidgetY SetLookupTable  [planeWidgetX GetLookupTable ]
    planeWidgetY DisplayTextOff  
    planeWidgetY UpdatePlacement  
    planeWidgetY On  

  vtkImagePlaneWidget planeWidgetZ
    planeWidgetZ SetInteractor iren
    planeWidgetZ SetKeyPressActivationValue 'z' 
    planeWidgetZ SetPicker picker 
    [planeWidgetZ GetPlaneProperty ] SetColor 0 0 1
    planeWidgetZ SetTexturePlaneProperty ipwProp 
    planeWidgetZ TextureInterpolateOn  
    planeWidgetZ SetResliceInterpolateToCubic  
    planeWidgetZ SetInput [v16 GetOutput ]
    planeWidgetZ SetPlaneOrientationToZAxes  
    planeWidgetZ SetSliceIndex 25 
    planeWidgetZ SetLookupTable [ planeWidgetX GetLookupTable ]
    planeWidgetZ DisplayTextOn  
    planeWidgetZ On  

  vtkImageOrthoPlanes orthoPlanes
    orthoPlanes SetPlane 0 planeWidgetX
    orthoPlanes SetPlane 1 planeWidgetY
    orthoPlanes SetPlane 2 planeWidgetZ
    orthoPlanes ResetPlanes  

  #set wl [planeWidgetZ GetWindowLevel ]

  #  Add a 2D image to test the GetReslice method
  # 
  vtkImageMapToColors colorMap
    colorMap PassAlphaToOutputOff  
    colorMap SetActiveComponent 0 
    colorMap SetOutputFormatToLuminance  
    colorMap SetInput [planeWidgetZ GetResliceOutput ]
    colorMap SetLookupTable [planeWidgetX GetLookupTable ]

  vtkImageActor imageActor
    imageActor PickableOff
    imageActor SetInput [colorMap GetOutput ]

  #  Add the actors
  #
  ren1 AddActor outlineActor
  ren2 AddActor imageActor

  ren1 SetBackground 0.1  0.1  0.2
  ren1 SetBackground2 1  0.1  0.2

#----------------------------------------------------------
# if the renderer has its gradientbackground
# turn on, interaction with the image plane widgets
# is not possible
#
  #ren1 GradientBackgroundOn

# if left off, interaction is possible, but clicking
# one of the widgets will toggle the gradient background
# in the second renderer
#
  ren2 SetBackground 0.2  0.1  0.2
  ren2 SetBackground2 1  0.1  0.2
  ren2 GradientBackgroundOn

  renWin SetSize  600 350 

  ren1 SetViewport 0 0 0.58333 1 
  ren2 SetViewport 0.58333 0 1 1

# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize

# prevent the tk window from showing up then start the event loop
wm withdraw .




More information about the vtk-developers mailing list