In computer graphics, a watertight mesh refers to a triangular mesh consisting of one closed surface. This loose definition rules out the following two cases which frequently cause problems when voxelizing meshes into occupancy grids or signed distance functions:
- The mesh has holes which prevent a clear definition of inside and outside;
- or the mesh contains structure within the main surface, hindering signed distance function computation.
However, automatically obtaining watertight meshes is difficult. First of all, it is non-trivial to fix larger holes; and second, irrelevant inner structures are difficult to identify. In this article, I want to present a mesh fusion approach for obtaining watertight meshes. This Python tool is based on work by Gernot Riegler, specifically pyrender and pyfusion. Additionally it uses the marching cubes implementation of PyMCubes. The assembled tool is available on GitHub, including examples and documentation:Mesh Fusion on GitHub
Note that the tool is self-contained — all dependencies including pyrender, pyfusion and PyMCubes are included. I also want to refer to  and , where this setup has been used in practice. Also see Figure 1 for an example; MeshLab was used for visualization and simplification.
Figure 1 (click to enlarge): Example of the mesh fusion approach to obtain watertight meshes. In this case, the chosen chair is more or less watertight to begin with; however, the example illustrates that fine structures can be retained at high quality. From left to right: original mesh, fused mesh, and simplified mesh.
-  Gernot Riegler, Ali Osman Ulusoy, Horst Bischof, Andreas Geiger: OctNetFusion: Learning Depth Fusion from Data. CoRR abs/1704.01047 (2017).
-  Gernot Riegler: Deep Learning for 2.5D and 3D. PhD thesis, Graz University of Technology, 2017.