我已经尝试了很多,但我没有得到这个工作。
我想用 QVTK Widget 构建一个 QT4 应用程序。可悲的是,我需要使用 QT4,因此需要使用 VTK 5.10。
有一个vtkActor
处理一些vtkPoints
应该呈现的内容(没什么花哨的,或多或少来自 VTK 的示例)。这是管道初始化:
m_pdata = vtkSmartPointer<vtkPolyData>::New();
m_pdata->SetPoints(m_points);
m_vfilter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
m_vfilter->SetInputConnection(m_pdata->GetProducerPort());
m_vfilter->Update();
m_vdata = vtkSmartPointer<vtkPolyData>::New();
m_vdata->ShallowCopy(m_vfilter->GetOutput());
m_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
m_mapper->SetInputConnection(m_vdata->GetProducerPort());
m_pactor = vtkSmartPointer<vtkActor>::New();
m_pactor->SetMapper(m_mapper);
m_pactor->GetProperty()->SetPointSize(2);
m_renderer->AddActor(m_pactor);
在此之后,应用程序调用m_rwindow->Render()
来渲染场景......
然后我有一个 QTQLineEdit
向 中添加一个点vtkPoints
,如下所示:
m_points->InsertNextPoint(point[0], point[1], point[2]);
我想刷新视图,这样新的点也会被渲染。但这不会发生......
我试图像这样更新管道(在每个星座中或多或少):
m_pdata->Modified();
m_pdata->Update();
m_vfilter->Modified();
m_vfilter->Update();
m_vdata->Modified();
m_vdata->Update();
m_mapper->Modified();
m_mapper->Update();
m_pactor->Modified();
在此更新过程之后,我再次致电m_rwindow->Render()
。
但是我更新的所有内容都将是旧点(例如点的颜色或大小......)。
是否可以重新渲染点以便也显示新点?