项目场景:
使用VTK库
联合PCL库
显示点云文件。
问题描述
需要在窗口右下角显示方向指示器。类似CloudCompare
的效果,如下图。
解决方案:
-
看到了作者茶不思~的文章!【pcl学习记录】QVtkWidget中添加左下角坐标轴实现了添加方向指示器,但是我也不想让这个指示器可以移动。
-
过了一段时间,在GitHub上发现了一位大佬的开源软件cloudtool。发现他实现了固定的方向指示器。下面放上相关的代码。
CloudView::CloudView(QWidget* parent)
: QVTKOpenGLNativeWidget(parent),
m_show_id(true),
m_info_level(0),
m_last_id(""),
m_render(vtkSmartPointer<vtkRenderer>::New()),
m_renderwindow(vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New()),
m_axes(vtkSmartPointer<vtkOrientationMarkerWidget>::New())
{
m_renderwindow->AddRenderer(m_render);
m_viewer.reset(new pcl::visualization::PCLVisualizer(m_render, m_renderwindow, "viewer", false));
this->SetRenderWindow(m_viewer->getRenderWindow());
m_viewer->setupInteractor(this->GetInteractor(), this->GetRenderWindow());
m_viewer->setBackgroundColor((double)150.0 / 255.0, (double)150.0 / 255.0, (double)150.0 / 255.0);
vtkSmartPointer<vtkAxesActor> actor = vtkSmartPointer<vtkAxesActor>::New();
m_axes->SetOutlineColor(0.9300, 0.5700, 0.1300);
m_axes->SetOrientationMarker(actor);
m_axes->SetInteractor(m_viewer->getRenderWindow()->GetInteractor());
m_axes->SetViewport(0.9, 0, 1, 0.15);
m_axes->SetEnabled(true);
m_axes->InteractiveOn();
m_axes->InteractiveOff();
m_viewer->getRenderWindow()->Render();
}