PCL: Как я могу обновить облако нормалей в pcl :: visualizer?

У меня есть поток, который визуализирует pointcloud, пока я над ним работаю.
Мне нужно также визуализировать нормали, как их обновить?

Я не могу найти ничего, как updateClouds для обычных облаков.

void pclVisualizerThread::operator()()
{
// prepare visualizer named "viewer"while (!viewer_->wasStopped ())
{
viewer_->spinOnce (100);

// Get lock on the boolean update and check if cloud was updated
boost::mutex::scoped_lock updateLock(*(updateModelMutex_.get()));
if((*update_))
{
// I NEED ALSO TO UPDATE THE NORMALS
if(!viewer_->updatePointCloud(cloud_, "Triangulated points"))
{
viewer_->addPointCloud<pcl::PointXYZRGB>(cloud_, *rgb_, "Triangulated points");
viewer_->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "Triangulated points");
}

(*update_) = false;
}
updateLock.unlock();

}
}

Заранее спасибо.

3

Решение

Способ сделать это — удалить облако нормалей и добавить его снова:

void pclVisualizerThread::operator()()
{
// prepare visualizer named "viewer"while (!viewer_->wasStopped ())
{
viewer_->spinOnce (100);

// Get lock on the boolean update and check if cloud was updated
boost::mutex::scoped_lock updateLock(*(updateModelMutex_.get()));
if((*update_))
{
if(!viewer_->updatePointCloud(cloud_, "Triangulated points"))
{
viewer_->addPointCloud<pcl::PointXYZRGB>(cloud_, *rgb_, "Triangulated points");
viewer_->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "Triangulated points");
}
viewer_->removePointCloud("normals", 0);
viewer_->addPointCloudNormals<pcl::PointXYZRGB, pcl::Normal> (cloud_, normals_, 150, 0.35, "normals");
(*update_) = false;
}
updateLock.unlock();

}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]