Back to
Projects List
Robust boolean operations library for VTK/Slicer
Key Investigators
- Mauro I. Dominguez (Independent, Argentina)
- Andras Lasso (Queen's University, Canada)
- Steve Pieper (Isomics Inc., USA)
- Jean-Christophe Fillion-Robin (Kitware Inc., USA)
Project Description
Support robust boolean operations for 2D triangle meshes inside VTK or Slicer through an external library. This would allow an alternative to current boolean operations engine, vtkbool
(from Sandbox’s extension CombineModels module), which is better than the default one of vtk but still unstable for complex meshes such as the ones used in the biomedical domain
Objective
- Expose a robust boolean operations library (e.g. Geogram) in Slicer’s logic and GUI
- Compile a robust boolean operations library (e.g. Geogram) as a vtk external module
Approach and Plan
- Add a CLI module for Slicer that encapsulates a robust boolean operation command line as part of Sandbox extension.
- Create a draft PR to the upstream repo with the code changes that incorporate the feature and documentation on how to use it from GUI and a code snippet on how to use it from the python interpreter
- If there is enough time, evaluate creating a boolean operations DynamicModeler tool
Progress and Next Steps
- Table that compares most “popular” boolean operations libraries from the awesome geometry processing projects list:
https://docs.google.com/spreadsheets/d/1tWbNuMz7vTIB2efFZE7YdT4vBmRb45DdQlqy_kda32k/edit?usp=sharing
- Tested
geogram
successfully with mesh that made vtkbool
fail
- Edited the CombineModels module to allow other boolean operations backend,
manifold
through trimesh
python module
- Discussed with the team how to expose geogram library to Slicer, mostly CMake related issues.
- Achieved creation of a CLI module to execute geogram boolean operations that will be later added to Sandbox extensions
- Next steps are to make all these alternative backends available on CombineModels module as a PRs. This will involve modifying Sandbox extension to be a superbuild extension
Illustrations
Boolean operation example


Working CLI module exposing geogram

Background and References