[vtkusers] [Resolved] How to do picking action with vtkCellPicker on multiples vtkDataSet?

Leguay Romain romain.leguay at etu.u-bordeaux1.fr
Wed Jun 15 05:16:36 EDT 2011


Hi everyone,

I resolved my problem: I put my actor in global variable.
 
I have another question for interactor button: when I am in picking mode, I'd like to have a "combination" with LeftButtonPressEvent and CtrlButton. In the Vtk User's Guide book, I don't find any clues to do this.
Has anyone got any ideas?

Regards,
Romain

Le Mercredi 15 Juin 2011 10:22 CEST, "Leguay Romain" <romain.leguay at etu.u-bordeaux1.fr> a écrit: 
 
> Thanks David,
> I think I need some glasses....
> I have again some difficulties to do the picking. My soft doesn't go inside my callback function.
> I put my code if anyone found some errors inside it:
> @Override
> 	public IZone computeOperator() {
> 		getPicker();
> 		picker.RemoveAllObservers();
> 		picker.AddObserver("EndPickEvent", this, "pickerFunction");
> 
> 		return null;
> 	}
> 
> public void pickerFunction() {
> 		if (picker.GetCellId() < 0) {
> 			Logger.log(Activator.getDefault(), IExtendedStatus.DEBUG,
> 					"Aucune zone sélectionnée");
> 		} else {
> 			
> 			vtkDataSet dataSetPicked = picker.GetDataSet();
> 			IZone currentZone = null;
> 			for (IZone zone : dataSet.getZones()) {
> 				if (dataSetPicked == zone.getVtkDataSet()) {
> 					currentZone = zone;
> 					break;
> 				}
> 			}
> 
> 			mapper = new VtkMapper(currentZone);
> 			mapper.getVtkMapper().ScalarVisibilityOff();
> 
> 			vtkActor actor = new vtkActor();
> 			actor.SetMapper(mapper.getVtkMapper());
> 			actor.GetProperty().SetColor(colorDataSetPicked.getR(),
> 					colorDataSetPicked.getG(), colorDataSetPicked.getB());
> 			actor.GetProperty().SetOpacity(colorDataSetPicked.getAlpha());
> 			setVtkProp3D(actor);
> 		}
> 	}
> 
> 
> @Override
> 	public void applyOperator(IDataSet dataSet, vtkRenderer renderer) {
>                 //Add an actor of my model. on my vtkRender
> 		MeshPlotTest meshPlot = new MeshPlotTest();
> 		Collection<IDataSet> dataSetList = new ArrayList<IDataSet>(1);
> 		dataSetList.add(dataSet);
> 		meshPlot.applyPlot(dataSetList, renderer);
> 		
>                //Add the picking
> 		IOperator operator = new PickingOperator();
> 		ColorRGBA colorPicked = new ColorRGBA(1, 0, 0, 1);
> 		((PickingOperator)operator).setDataSet(dataSet);
> 		((PickingOperator)operator).setColorDataSetPicked(colorPicked);
> 		operator.computeOperator();
> 		
> 		getCanvas().getIren().SetPicker(((PickingOperator)operator).getPicker());
> 	}
> 
> 
> 
> Does anyone know why my picking doesn't work?
> 
> Thanks,
> 
> Romain
> 
> 
> Le Mardi 14 Juin 2011 18:02 CEST, David Gobbi <david.gobbi at gmail.com> a écrit: 
>  
> > Hi Romain,
> > 
> > Have you looked at the methods that vtkCellPicker inherits from vtkPicker?
> > 
> > GetDataSet()
> > GetMapper()
> > GetProp3D()
> > GetPickPosition()
> > 
> >  - David
> > 
> > 
> > On Tue, Jun 14, 2011 at 9:38 AM, Leguay Romain
> > <romain.leguay at etu.u-bordeaux1.fr> wrote:
> > > Hello everyone!
> > > I display multiple vtkDataSet on my renderer. I try to do a picking and
> > > display witch vtkDataSet I click. I try to do this with a vtkCellPicker but
> > > I can just get the selected point and the cellId.
> > > I don't know how to proceed unless testing for each cell contains my point.
> > > Has anyone got better ideas?
> > >
> > > Thanks,
> > >
> > > Romain
>  
>  
>  
>  
 
 
 
 




More information about the vtkusers mailing list