Проблема с рендерингом VTKImageData в VTKImageViewer2 и VTKLineWidget2. ⇐ C++
-
Гость
Проблема с рендерингом VTKImageData в VTKImageViewer2 и VTKLineWidget2.
Я работаю над проектом, который включает загрузку данных медицинских изображений в VTK (Visualization Toolkit), QT, CPP и их рендеринг с помощью VTKImageViewer2. Кроме того, мне нужно нарисовать линию на отображаемом изображении с помощью VTKLineWidget2. Я добился определенного прогресса, но столкнулся с проблемой: линия, которую я рисую с помощью VTKLineWidget2, появляется позади изображения, и ее трудно увидеть.
Вот краткое описание моего кода:
QVTKOpenGLWidget *m_pvtkWidget = новый QVTKOpenGLWidget; m_pvtkWidget->setStyleSheet("цвет фона: черный"); vtkNew m_openGlRenWin; m_pvtkWidget->SetRenderWindow(m_openGlRenWin); vtkNew m_pvtkImageViewer; m_pvtkImageViewer->OffScreenRenderingOn(); vtkSmartPointer читатель = vtkSmartPointer::New(); QString filep="путь к файлу dicom"; читатель->SetFileName(filep.toUtf8().constData()); читатель->Обновить(); vtkSmartPointer imageData = Reader->GetOutput(); m_pvtkImageViewer->SetInputData(imageData); m_pvtkImageViewer->SetRenderWindow(m_pvtkWidget->GetRenderWindow()); m_pvtkImageViewer->SetupInteractor(m_pvtkWidget->GetInteractor()); m_pvtkImageViewer->GetRenderer()->ResetCamera(); m_pvtkImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0,1,0); m_pvtkImageViewer->Render(); m_pvtkWidget->GetInteractor()->ReInitialize(); qDebug()GetLineRepresentation()->SetLineColor(255, 0,0); m_objvtkLineWidget2->GetLineRepresentation()->GetLineProperty()->SetLineWidth(.25); m_objvtkLineWidget2->GetLineRepresentation()->SetPoint1WorldPosition(pointPos1); m_objvtkLineWidget2->GetLineRepresentation()->SetPoint2WorldPosition(pointPos2); m_objvtkLineWidget2->GetRepresentation()->SetHandleSize(0); m_objvtkLineWidget2->GetEventTranslator()->ClearEvents(); m_objvtkLineWidget2->SetInteractor(m_pvtkWidget->GetRenderWindow()->GetInteractor()); m_objvtkLineWidget2->Вкл(); m_pvtkImageViewer->GetRenderer()->ResetCamera(); m_pvtkImageViewer->Render(); m_pvtkWidget->GetInteractor()->ReInitialize(); Проблема в том, что линия, нарисованная с помощью VTKLineWidget2, появляется позади загруженного изображения, что затрудняет ее просмотр. Я хочу, чтобы линия отображалась поверх изображения.
Есть ли способ управлять порядком рендеринга в VTKImageViewer2 или другом решении, чтобы гарантировать, что строка отображается перед изображением?
Будем очень признательны за любую помощь или рекомендации по решению этой проблемы.
Я работаю над проектом, который включает загрузку данных медицинских изображений в VTK (Visualization Toolkit), QT, CPP и их рендеринг с помощью VTKImageViewer2. Кроме того, мне нужно нарисовать линию на отображаемом изображении с помощью VTKLineWidget2. Я добился определенного прогресса, но столкнулся с проблемой: линия, которую я рисую с помощью VTKLineWidget2, появляется позади изображения, и ее трудно увидеть.
Вот краткое описание моего кода:
QVTKOpenGLWidget *m_pvtkWidget = новый QVTKOpenGLWidget; m_pvtkWidget->setStyleSheet("цвет фона: черный"); vtkNew m_openGlRenWin; m_pvtkWidget->SetRenderWindow(m_openGlRenWin); vtkNew m_pvtkImageViewer; m_pvtkImageViewer->OffScreenRenderingOn(); vtkSmartPointer читатель = vtkSmartPointer::New(); QString filep="путь к файлу dicom"; читатель->SetFileName(filep.toUtf8().constData()); читатель->Обновить(); vtkSmartPointer imageData = Reader->GetOutput(); m_pvtkImageViewer->SetInputData(imageData); m_pvtkImageViewer->SetRenderWindow(m_pvtkWidget->GetRenderWindow()); m_pvtkImageViewer->SetupInteractor(m_pvtkWidget->GetInteractor()); m_pvtkImageViewer->GetRenderer()->ResetCamera(); m_pvtkImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0,1,0); m_pvtkImageViewer->Render(); m_pvtkWidget->GetInteractor()->ReInitialize(); qDebug()GetLineRepresentation()->SetLineColor(255, 0,0); m_objvtkLineWidget2->GetLineRepresentation()->GetLineProperty()->SetLineWidth(.25); m_objvtkLineWidget2->GetLineRepresentation()->SetPoint1WorldPosition(pointPos1); m_objvtkLineWidget2->GetLineRepresentation()->SetPoint2WorldPosition(pointPos2); m_objvtkLineWidget2->GetRepresentation()->SetHandleSize(0); m_objvtkLineWidget2->GetEventTranslator()->ClearEvents(); m_objvtkLineWidget2->SetInteractor(m_pvtkWidget->GetRenderWindow()->GetInteractor()); m_objvtkLineWidget2->Вкл(); m_pvtkImageViewer->GetRenderer()->ResetCamera(); m_pvtkImageViewer->Render(); m_pvtkWidget->GetInteractor()->ReInitialize(); Проблема в том, что линия, нарисованная с помощью VTKLineWidget2, появляется позади загруженного изображения, что затрудняет ее просмотр. Я хочу, чтобы линия отображалась поверх изображения.
Есть ли способ управлять порядком рендеринга в VTKImageViewer2 или другом решении, чтобы гарантировать, что строка отображается перед изображением?
Будем очень признательны за любую помощь или рекомендации по решению этой проблемы.
Мобильная версия