(PCL createViewPort):多个指针在窗口中同时旋转

时间:2014-01-14 06:38:09

标签: visualization point-cloud-library

我将创建两个视口,以便可视化两个独立的点云。 这是我的代码的一部分:

PORT1 = 0; PORT2=0;

vis->createViewPort (0.5,0.0,1.0,1.0,PORT1);
vis->setBackgroundColor(0,0,0,PORT1);
vis->addPointCloud<pcl::PointXYZ>(*cloud1, "left cloud",PORT1);

vis->createViewPort (0.0,0.0,0.5,1.0,PORT2);
vis->setBackgroundColor(0.1,0.1,0.1,PORT2);
vis->addPointCloud<pcl::PointXYZ>(*cloud2, "right cloud",PORT2);

可视化工具在同一窗口中显示cloud1和cloud2。但是当我想要改变一个pointcloud(使用鼠标)的视图时,另一个同时旋转。有没有办法让不同的pointcloud可以相互独立地查看? (我在线程中创建了可视化工具,因此我无法创建两个不同的可视化工具)

谢谢大家

2 个答案:

答案 0 :(得分:1)

我已经达成答案(来自pcl用户论坛):

您不能在两个或多个线程中使用一个可视化工具。当前版本的PCL(1.7)不支持此任务。 但是你可以用不同的可视化器制作两个不同的线程。然后,您将在单独的窗口中看到每个云,并且您可以单独更改每个窗口的视图。

答案 1 :(得分:0)

您可以独立创建它们,只需为它们中的每个创建单独的凸轮。根据此建议更新的代码将以以下方式显示:

PORT1 = 0; PORT2=0;
vis->createViewPort (0.5,0.0,1.0,1.0,PORT1);
vis->setBackgroundColor(0,0,0,PORT1);
vis->addPointCloud<pcl::PointXYZ>(*cloud1, "left cloud",PORT1);
vis->createViewPortCamera(PORT1);

vis->createViewPort (0.0,0.0,0.5,1.0,PORT2);
vis->setBackgroundColor(0.1,0.1,0.1,PORT2);
vis->addPointCloud<pcl::PointXYZ>(*cloud2, "right cloud",PORT2);
vis->createViewPortCamera(PORT2);

可见,
boost :: shared_ptr vis(new pcl :: visualization :: PCLVisualizer(“ id”));