有時候生成的隧道會有缺失(有洞),需要修復填補這些洞。有洞的話嚴重影響後續的布爾操作。
方式一 :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 補洞效果好。