VTK: включить разделение экрана в окне рендеринга

Я новичок в ITK / VTK и в процессе обучения, в VTK, как мы называем несколько выходных окон визуализации одновременно (разделитель экрана с различными функциями для разных выходных окон).
Я пытался реализовать вышеизложенное с использованием нескольких потоков, но я не смог достичь желаемого выше ..

// output window function 1
std::string inputFilename="E:\\DICOM_work\\CE53E85F";
vtkSmartPointer<vtkDICOMImageReader> reader =vtkSmartPointer<vtkDICOMImageReader>::New();
reader->SetFileName(inputFilename.c_str());
reader->Update();

// Visualize
vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =  vtkSmartPointer<vtkRenderWindowInteractor>::New();
imageViewer->SetupInteractor(renderWindowInteractor);
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
imageViewer->Render();
renderWindowInteractor->Start();
}
// output window function 2
void display1(void *)
{
std::string inputFilename="E:\\DICOM_work\\CE53E85Fg2";
vtkSmartPointer<vtkDICOMImageReader> reader1 = vtkSmartPointer<vtkDICOMImageReader>::New();
reader1->SetFileName(inputFilename.c_str());
reader1->Update();

// Visualize
vtkSmartPointer<vtkImageViewer2> imageViewer2 = vtkSmartPointer<vtkImageViewer2>::New();
imageViewer2->SetInputConnection(reader1->GetOutputPort());
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor1 = vtkSmartPointer<vtkRenderWindowInteractor>::New();
imageViewer2->SetupInteractor(renderWindowInteractor1);
imageViewer2->Render();
imageViewer2->GetRenderer()->ResetCamera();
imageViewer2->Render();
renderWindowInteractor1->Start();
}

когда я пытаюсь его выполнить .. код выполняется до …
renderWindowInteractor-> Start ();

затем код завершается без выполнения другой функции. Пожалуйста, помогите!

2

Решение

В официальной вики ВТК есть пример приложения, которое открывает несколько vtkRenderWindows. Вы смотрели на это? По сути, эта программа создает вектор vtkRenderWindowInteractor:

std::vector<vtkSmartPointer<vtkRenderWindowInteractor> > interactors;

и, в конце, он вызывает метод Start () для последнего его элемента:

interactors[3]->Start();

(«3», потому что он открывает 4 окна). Может быть, вы можете адаптировать эту логику к вашим приложениям …

В качестве заключительного замечания, учтите, что — если вам нравится — вы также можете иметь не замужем vtkRenderWindow с несколькими окнами просмотра.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]