最近在研究基于vtk实现点云模型的切片制作,目标是想在场景中显示切割平面与模型,通过人机交互的方式拖动切割平面,从而实现对模型的实时切割。
切平面的实现主要用到vtkPlaneWidget实现,代码如下:
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPlaneWidget.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
int main(int, char*[]) {
vtkNew<vtkNamedColors> colors;
vtkNew<vtkRenderer> renderer;
renderer->SetBackground(colors->GetColor3d("SlateGray").GetData()); vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("PlaneWidget");
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(renderWindow);
vtkNew<vtkPlaneWidget> planeWidget;
planeWidget->SetInteractor(renderWindowInteractor);
planeWidget->On();
renderWindowInteractor->Initialize();
renderer->ResetCamera();
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
添加键盘事件,最终实现效果如下