从渲染窗口成员

时间:2016-07-06 00:38:54

标签: c++ qt io vtk

我正在开发围绕MainWindow构建的Qt程序,其中包含qvtkWidget

我在qvtkWidget内显示各种VTK对象,目的是在加载和渲染后改变它们。然后应将更改的数据集写入文件以供以后重用。

例如,我在生成前者并将其传递给vtkPointSource的实例后显示vtkPolyDataMapper的实例,它本身传递给vtkActor的实例,它本身传递给vtkRenderer的实例。然后将渲染器添加到qvtkWidget并正确显示。

让我们假设现在希望将点云保存为.vtp文件。

一旦提供了表示正在显示的点云的vtkPolyData对象,

vtkXMLPolyDataWriter就可以做到这一点。

我以为我可以通过在MainWindow :: save()中执行以下操作来检索基础点云数据:

vtkRenderWindow * renderWindow = this->qvtkWidget->GetRenderWindow();
vtkRendererCollection * renderers = renderWindow-> GetRenderers();
vtkRenderer * renderer = renderers->GetFirstRenderer();
vtkActorCollection * actors = renderer->GetActors();
vtkActor * actor = actors->GetLastActor();
vtkPolyDataMapper * mapper = actor->GetMapper();
vtkSmartPointer<vtkPolyData> * polydata = mapper->GetInput()

vtkPolyDataMapper * mapper = actor->GetMapper();发生了投射错误,考虑到vtkPolyDataMappervtkMapper之间的继承关系,这完全合理。

我想我可以改为将最后两行重写为

vtkMapper * mapper = actor->GetMapper();
vtkSmartPointer<vtkDataSet> * polydata = mapper->GetInput() 

避免播放错误,但我完全不确定上述代码段是否符合VTK I / O标准。

这是一种正确的方法,用于在点云数据被更改后保存到文件中(即,以呈现的方式从渲染窗口转移到基础数据集)?

0 个答案:

没有答案