[vtkusers] vtkPicker in Java
    Alexander MacLennan 
    alex.maclennan at gmail.com
       
    Mon Jul  3 02:57:59 EDT 2006
    
    
  
Hi all,
I am having trouble extracting cell ids from my picker. I am trying to
select a single cell for the moment, but will then use this to select
an entire region for my application.
I get 0,0,0 as the point and no cell info at all
Here is my code: Any ideas??
The OOGLToVtkPolyData class works ok for loading and viewing OOGL files
 vtkPolyData pd = null;
    vtkPolyDataMapper pdm = null;
    vtkActor actor = null;
    vtkCanvas renWin = null;
    vtkCellPicker picker = null;
    public void run(OOGLObject o) {
        this.pd = (new OOGLtoVtkPolyData().getPolyData(o));
        this.pdm = new vtkPolyDataMapper();
        this.actor = new vtkActor();
        this.renWin = new vtkCanvas();
        this.picker = new vtkCellPicker();
        pdm.SetInput(pd);
        actor.SetPickable(1);
        actor.SetMapper(pdm);
        vtkCanvas canvas = new vtkCanvas();
        canvas.GetRenderer().AddActor(actor);
        vtkCellPicker picker = new vtkCellPicker();
        picker.SetTolerance(0.005);
        // Set up the event handler
        vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow(canvas.GetRenderWindow());
        iren.SetPicker(picker);
        picker.AddObserver("EndPickEvent", this, "annotatePick");
        iren.Initialize();
        iren.Start();
    }
    /**
     * Function to create the text for the text mapper used to display the
     * results of picking.
     */
    public void annotatePick() {
            System.err.println("Cell ID " + picker.GetCellId());
            double[] pos = picker.GetPCoords();
            System.err.print("Picker coordinates ");
            for (double d : pos)
                System.err.print(d + " ");
            System.err.println();
            double[] mpos = picker.GetSelectionPoint();
            for (double d : mpos)
                System.err.print(d + " ");
            System.err.println();
            vtkPoints p  = picker.GetPickedPositions();
            System.err.println(p.toString());
    }
cheers
alex
    
    
More information about the vtkusers
mailing list