spin() 函数未执行后的额外代码
extra code after spin() function is not executed
我正在开发一个需要结合 pcl 和 vtk 的 c++ 项目。
但是,我在使用 spin 函数更新场景时遇到问题。
我知道 spin 函数在无限循环中调用 spinOnce 来更新
pcl visualizser 中的场景..
但我正在做一个项目,我需要在使用后执行一些代码
自旋 函数。
此代码可能类似于:
void addBoundingBox()
{
// add vtkBoxWidget2 to the pcl visualizer.
m_label = new BoundingBoxLabel(m_pclViewer,
ia::annotalight::common::AnnnotationKinds::CAR);
m_label->addLabel(*m_labelingService);
m_pclViewer->spin();
// i need to execute this code to add the vtkBox to a QTreeWidget.
setAllLabels(m_labelingService);
initLabelsList();
}
tl;dr - 别无他法
如您所知,PCLVisualizer::spin()
是一种阻塞方法。如果您想在不破坏 window 的情况下执行代码,则需要立即开始使用 PCLVisualizer::spinOnce()
。如果你想保持 "scene" 刷新并处理输入事件,你需要将它保持在这种
的循环中
while (!viewer->wasStopped ())
{
viewer->spinOnce (100);
// (optional) boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
您添加或修改的所有内容都需要在该循环内或该线程外完成。只要确保避免修改渲染的内容 window 而 spinOnce()
是 运行.
我正在开发一个需要结合 pcl 和 vtk 的 c++ 项目。 但是,我在使用 spin 函数更新场景时遇到问题。 我知道 spin 函数在无限循环中调用 spinOnce 来更新 pcl visualizser 中的场景.. 但我正在做一个项目,我需要在使用后执行一些代码 自旋 函数。 此代码可能类似于:
void addBoundingBox()
{
// add vtkBoxWidget2 to the pcl visualizer.
m_label = new BoundingBoxLabel(m_pclViewer,
ia::annotalight::common::AnnnotationKinds::CAR);
m_label->addLabel(*m_labelingService);
m_pclViewer->spin();
// i need to execute this code to add the vtkBox to a QTreeWidget.
setAllLabels(m_labelingService);
initLabelsList();
}
tl;dr - 别无他法
如您所知,PCLVisualizer::spin()
是一种阻塞方法。如果您想在不破坏 window 的情况下执行代码,则需要立即开始使用 PCLVisualizer::spinOnce()
。如果你想保持 "scene" 刷新并处理输入事件,你需要将它保持在这种
while (!viewer->wasStopped ())
{
viewer->spinOnce (100);
// (optional) boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
您添加或修改的所有内容都需要在该循环内或该线程外完成。只要确保避免修改渲染的内容 window 而 spinOnce()
是 运行.