728x90
이전 글에서 Qt에 VTK를 Widget으로 구성하는 방법을 알아봤었습니다.
일반적으로 VTK 에서 활용하는 RenderWindow와 Interactor를 제어하는 방법이 Qt 의 Widget으로 대체되어 제어되는 것인데, 이것을 구조도로 구성해봤습니다.
RenderWindow를 생성하고 interactor를 연결합니다.
방법1.
// RenderWindow 객체 생성
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
// Widget에 RenderWindow 객체 입력
ui->openGLWidget->setRenderWindow(renderWindow);
// InteractorStyle 입력
vtkNew<vtkInteractorStyleJoystickActor> interactorStyle;
ui->openGLWidget->interactor()->SetInteractorStyle(interactorStyle);
방법 2.
// RenderWindow 객체 생성
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
// Interactor 생성
vtkNew<QVTKInteractor> iren;
iren->Initialize();
// InteractorStyle 생성
vtkNew<vtkInteractorStyleJoystickActor> interactorStyle;
iren->SetInteractorStyle(interactorStyle);
// renderWindow에 interactor 입력
renderWindow->SetInteractor(iren);
// Widget에 RenderWindow 객체 입력
ui->openGLWidget->setRenderWindow(renderWindow);
Actor를 생성합니다.
// Sphere source를 생성합니다
vtkNew<vtkSphereSource> sphereSource;
sphereSource->Update();
// ShpereMapper를 생성하고 연결합니다.
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
// Actor를 만들고 Mapper을 연결합니다.
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
// Actor의 property를 제어합니다.
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
마지막으로 Actor를 Renderer에서 그릴수 있도록 추가하고, 이 renderer를 renderwindow에 추가합니다.
// Renderer를 생성하고 Actor를 입력합니다.
vtkNew<vtkRenderer> renderer;
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
// Renderer를 renderwindow에 추가합니다.
renderWindow->AddRenderer(renderer);
728x90
728x90