[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