有时候生成的隧道会有缺失(有洞),需要修复填补这些洞。有洞的话严重影响后续的布尔操作。
方式一 :vtkFillHolesFilter
vtkSmartPointer<vtkFillHolesFilter> fillHolesFilter =
vtkSmartPointer<vtkFillHolesFilter>::New();
fillHolesFilter->SetInputData(input);
fillHolesFilter->SetHoleSize(0.5);
fillHolesFilter->Update();
// Make the triangle winding order consistent
vtkSmartPointer<vtkPolyDataNormals> normals =
vtkSmartPointer<vtkPolyDataNormals>::New();
normals->SetInputData(fillHolesFilter->GetOutput());
normals->ConsistencyOn();
normals->SplittingOff();
normals->Update();
缺点:不能完全补上。
方式二:CGAL补洞
综上,CGAL 补洞效果好。