VTK5.10, QT4: обновить рендерер на обновленных точках - PullRequest
0 голосов
/ 28 мая 2018

Я так много пробовал, но не получаю эту работу.

Я хочу создать приложение QT4 с виджетом QVTK.К сожалению, мне нужно использовать 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() для рендеринга сцены ...

Затем у меня есть QT QLineEdit, чтобы добавить точку к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().

Но все, что я обновляю, будет старыми точками (например, цвет или размер точек ...).

Можно ли изменить точки, чтобы новые точки былитоже отображается?

...