Bug in vtkPicker
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
Hi,
The pick function in VTK is some unstable. I tried to do some programming to pick a vtkProp in a vtkAssembly. it turned out to crash after i picked several times. I tried to track the code in VTK, and found vtkPicker has some suspicious codes. in version(4.2.1) line 300 of vtkPicker.cxx: this->Prop3Ds->AddItem((vtkProp3D *)prop); I guess something is wrong there. it will collect the assembly many times. now I found it was updated with the codes in CVS : if ( ! this->Prop3Ds->IsItemPresent(prop) ) 368 { 369 this->Prop3Ds->AddItem((vtkProp3D *)prop); 370 }
I think it is better to change as: if ( ! this->Prop3Ds->IsItemPresent(propCandidate) ) 368 { 369 this->Prop3Ds->AddItem((vtkProp3D *)propCandidate); 370 }
As i read the code, I think prop is a vtkAssembly and propCandidate is a vtkProp composited in the assembly. before we add this item to Props3Ds, propCandidate's bounding box is checked for the intersection test. So i think it is rational to add propCandidate to Props3Ds.
Do we have some serious picking test with vtkAssembly involved?
I'm not sure my opinion is correct or wrong. anyway, i hope vtk has a robust picking function. any hints will be helpful.
Thanks
Dennis