[vtkusers] Picking points?
    Bert VanSesamstraat 
    bertvansesamstraat at hotmail.com
       
    Wed Aug 21 04:50:49 EDT 2002
    
    
  
Dear all,
My question is quite easy,
I want to pick some points of an image.
I do this using the following script:
package require vtk
package require vtkinteraction
package require vtktesting
# Start by loading some data.
#
vtkImageReader v16
  v16 DebugOff
  v16 SetDataByteOrderToBigEndian
  v16 SetDataExtent 0 511 0 80 1 81
  v16 SetFileName "dataInt81_81.raw"
  v16 SetDataOrigin 0 0 0
  v16 SetFileDimensionality 3
  v16 Update
vtkImageShiftScale shiftScale
  shiftScale SetInput [v16 GetOutput]
  shiftScale SetShift 0
  shiftScale SetScale 0.07
  shiftScale SetOutputScalarTypeToUnsignedChar
vtkImageActor ia
  ia SetInput [shiftScale GetOutput]
  ia SetZSlice 14
# Create the RenderWindow, Renderer and both Actors
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkPointPicker LocalPicker
  LocalPicker SetEndPickMethod HandleLocalPick
  LocalPicker SetTolerance 0.2
vtkRenderWindowInteractor LocalInteractor
  LocalInteractor SetRenderWindow renWin
  LocalInteractor SetLightFollowCamera 1
  LocalInteractor SetPicker LocalPicker
  LocalInteractor Initialize
# Add the actors to the renderer, set the background and size
ren1 AddActor ia
# render the image
LocalInteractor AddObserver UserEvent {wm deiconify .vtkInteract}
renWin Render
set cam1 [ren1 GetActiveCamera]
#ren1 ResetCameraClippingRange
renWin Render
# prevent the tk window from showing up then start the event loop
wm withdraw .
proc HandleLocalPick {} {
    set pid [LocalPicker GetPointId]
    puts "$pid"
    # Test the actor that was hit: depending on the
    # actor, select the point data from the part of
    # the pipeline that was used to produce the
    # actor.
    if { $pid >= 0 } {
    	set pickPos [[LocalInteractor GetPicker] GetPickPosition]
	set xp [lindex $pickPos 0]
	set yp [lindex $pickPos 1]
	set zp [lindex $pickPos 2]
	puts "$xp   $yp    $zp   "
       puts "picked"
    		     }
                        }
As fas as I understand the procedure you get the actor by $pid which can be 
used to get the actual pickpoints.
I tried this script with several values of the tolerance but $pid stays -1.
Can someone please help me?
_________________________________________________________________
Join the worlds largest e-mail service with MSN Hotmail. 
http://www.hotmail.com
    
    
More information about the vtkusers
mailing list