TinyMesh is a light-weight mesh processing library in C/C++
Here is the list of modules and reference papers for that.
- Smoothing
- Laplacian smoothing
- Taubin smoothing [Taubin 1995]
- Implicit fairing [Desbrun 1999]
- Denoising
- Normal Gaussian filter [Ohtake et al. 2001]
- Normal bilateral filter [Zheng et al. 2011]
- L0 mesh smoothing [He and Schaefer 2013]
- Remeshing
- Uniform triangulation [Hoppe 1996]
- Simplification
- Quadric error metrics (QEM) [Garland and Heckbert 1997]
- Hole filling
- Min-area hole filling [Barequet and Sharir 1995]
- Min-dihedral angle [Liepa 2003]
The module is tested its compilation using the following compilers.
- Windows - Visual Studio 2019
- MacOS - Apple Clang 11.0 (MacOS 10.15)
- Linux - LLVM Clang 10.0, GNU C Compiler 9.4.0
You can build a shared library and all the examples by CMake
with the following commands.
git clone https://github.com/tatsy/tinymesh.git --depth 1
cd tinymesh
git submodule update --init --recursive
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=ON ..
cmake --build . --config Release --parallel 2
You can install the Python module using Pip
.
pip install git+https://github.com/tatsy/tinymesh.git
You can also use poetry
to install from source codes.
git clone https://github.com/tatsy/tinymesh
cd tinymesh
poetry install
./build/bin/example_simplify data/models/bunny.ply
python examples/python/fill_and_fair.py data/models/bunny.ply
Input | Remesh | Remesh (bottom part) |
Input | Simplify (50000 faces) | Simplify (10000 faces) |
Original | Noisy | Denoise |
The functions provided by this repo are not perfect and their process will fail for problematic meshes, e.g., with non-manifold faces. In such cases, you can fix the problem by repairing the mesh using MeshFix.
Mozilla Public License v2 (c) Tatsuya Yatagawa 2020-2021