pick
pick actor
对于actor和actor2D有区别
// actor
int* clickPos = m_viewer->getRenderer()->GetRenderWindow()->GetInteractor()->GetEventPosition(); // 鼠标点击位置(像素)
auto m_picker = vtkSmartPointer<vtkCellPicker>::New();
m_picker->SetTolerance(0.005);
m_picker->Pick(clickPos[0], clickPos[1], 0, m_viewer->getRenderer());
auto actor = m_picker->GetActor();
if(actor && actor == m_lineActor) {
}
//actor2D + actor(用来捕获actor时得很准确才能点到,不好用)
int* clickPos = m_viewer->getRenderer()->GetRenderWindow()->GetInteractor()->GetEventPosition(); // 鼠标点击位置(像素)
auto m_picker = vtkSmartPointer<vtkPropPicker>::New();
m_picker->Pick(clickPos[0], clickPos[1], 0, m_viewer->getRenderer());
auto actor = m_picker->GetViewProp();
if(actor && actor == m_textActor.Get()) {
}
//这种方式根据获取的屏幕坐标,相当于转化为世界坐标了,实测
Double3 pickedPos;
auto eventPos = m_interactor[panelType]->GetEventPosition();
m_interactor[panelType]->GetPicker()->Pick(eventPos[0], eventPos[1], eventPos[2], imageViewer[panelType]->GetRenderer());
m_interactor[panelType]->GetPicker()->GetPickPosition(pickedPos.data());