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