3D Mesh Fusion, Voxelization and Evaluation

This page presents a few repositories allowing efficient mesh fusion, mesh voxelization into occupancy grids and mesh-to-mesh distance evaluation in C++ and Python.

Watertight Meshes by Mesh Fusion

Figure 1: Example of the mesh fusion approach to obtain watertight meshes. As the chosen chair is more or less watertight this example illustrates that fine structures can be retained at high quality.

Automatically obtaining watertight meshes in order to obtain well-defined occupancy grids or signed distance functions is a common problem in 3D computer vision and deep learning. This repository contains Python code for a mesh fusion approach for obtaining watertight meshes. The code is based on work by Gernot Riegler, specifically pyrender and pyfusion. Additionally it uses the marching cubes implementation of PyMCubes.

Also see this blog article.

Mesh Fusion on GitHub

Mesh Voxelization

Figure 2: Visualizations of the derived signed distance function and occupancy grid for a sofa.

Mesh voxelization is another common problem in 3D vision as triangular meshes are not a suitable shape representation for many learning algorithms. In deep learning, for example, occupancy grids and signed distance functions are commonly preferred. This repository includes an efficient C++ tool for voxelizing watertight meshes into occupancy grids or signed distance functions:

Also see this blog article.

Mesh Voxelization on GitHub

The repository also includes Python tools for running marching cubes and several utilities to convert the involved file formats — namely HDF5 files for storing voxelized meshes, and OFF or OBJ files for storing triangular meshes. The code is based on christopherbatty/SDFGen, the triangle-box/ray intersection tests by Thomas Möller, and PyMCubes.

Mesh-to-Mesh Distance Evaluation

Performance in many 3D reconstruction applications is reported in terms of accuracy and completeness. Accuracy is the distance of the reconstructed shape to the reference shape; and completeness is defined as the distance from the reference shape to the reconstructed shape. This repository includes a C++ tool, using the point-to-triangle distance from christopherbatty/SDFGen, to compute both accuracy and completeness to compare meshes::

Also see this blog article.

Mesh Evaluation on GitHub