After an actor were created, its geometry were changed.
In fact I just changed its polydata by splitting 1 big triangle into 3.
But I found when I picked the actor, the big triangle seemed become 1 small triangle and the other 2 small ones can’t be hitted, they became hollow!!
But the actor was displayed correctly.
That made me puzzle and I need you help.
Thank you.
What VTK version are you using?
vtk7.1.1
Perhaps, I need to tell the render that I had changed one actor.
But I don’t know how to do it.
Perhaps you could try something like this:
unstructuredGrid->GetCellData()->Modified();
The method above supposedly notifies other algorithms of changes in geometry. That potentially includes the spatial index used by VTK to enable picking.
I have done that, and the actor is displayed correctly.
The problem is only for the picker.
Sorry for the late reply. Is it possible/viable to upgrade to latest version?
I have tried it in vtk8.2. It still doesn’t work.
In fact, someone have told me to call the vtkPolyData::BuildCells(), and it does works in a simple test program.
But in a more complicated program, it still failed.
That make me confused.
Just checking: do you call that method on ALL instances? I mean, maybe you used some filter that spawned more vtkPolyData
s that your code currently manages.
As you said the call works with simple examples, another approach is to tear down scene complexity until you obtain a working version of your code. That’s what I do when I face mysterious problems like that. I comment out most of the code and uncomment them bit-by-bit until I the issue kicks in.
good idea. Carvalho. I’ll try.
sorry for my so late reply.