vtk9.0后怎么展示点云到qt窗口
时间: 2023-09-03 12:03:59 浏览: 283
在VTK 9.0中展示点云到Qt窗口可以通过以下步骤实现:
1. 创建一个Qt窗口,并添加一个vtkRenderWindowQTWidget小部件来显示VTK渲染窗口。
2. 在Qt窗口的构造函数中初始化VTK渲染器和渲染窗口。代码示例如下:
```
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindowQt = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindowQt->SetRenderWindow(renderWindow);
ui->vtkWidget->SetRenderWindow(renderWindowQt);
```
其中,ui->vtkWidget是Qt设计器中添加vtkRenderWindowQTWidget小部件的名称。
3. 加载点云数据并创建vtkPolyData数据对象来表示点云。
4. 创建vtkPoints和vtkUnsignedCharArray来保存点坐标和点颜色。
5. 将点坐标和点颜色添加到vtkPolyData数据对象中。代码示例如下:
```
vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
polyData->SetPoints(points);
polyData->GetPointData()->SetScalars(colors);
```
其中,points是vtkPoints对象,colors是vtkUnsignedCharArray对象。
6. 创建vtkPolyDataMapper将vtkPolyData数据对象转换为vtkActor对象。
7. 创建vtkActor对象来呈现点云。
8. 将vtkActor对象添加到vtkRenderer中。代码示例如下:
```
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(polyData);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
renderer->AddActor(actor);
```
9. 更新渲染窗口并显示点云。代码示例如下:
```
renderWindow->Render();
```
通过以上步骤,你可以将点云展示到Qt窗口中。需要注意的是,以上代码仅涉及到展示点云,如果你想对点云进行交互或其他操作,你可能还需要其他的VTK代码来实现。
阅读全文