想实现一个使用VTK来进行模型分割的功能。主要用到了VTK的vtkClipPolyData和vtkPlane两个类。
在实现这个分割功能之前,先看下怎么样实现多个窗口显示的功能。
1. 多窗口显示
- Qt与VTK的渲染结合
在配置好了VTK的运行环境之后,我们就可以直接在QtDedigner的界面里面,将任意一个QWidget类提升为QVTKOpenGLWidget类型。这样,我们首先要提升两个QWidget提升。
- 初始化显示窗口
我们先在Qt的一个界面类的头文件里面声明一些需要的子类
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor;
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindowLeft;
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindowRight;
vtkSmartPointer<vtkRenderer> leftRenderer;
vtkSmartPointer<vtkRenderer> rightRender;
之后再进行初始化,下面是初始化函数的内容:
renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
leftRenderer = vtkSmartPointer<vtkRenderer>::New();
rightRender = vtkSmartPointer<vtkRenderer>::New();
renderWindowLeft = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindowRight = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindowLeft->AddRenderer(leftRenderer);
renderWindowRight->AddRenderer(rightRender);
ui->leftRender->SetRenderWindow(rend