TinyMesh is a light-weight mesh processing library in C/C++.
Here is the list of modules and reference papers for that.
- Geometric properties
- Principal curvatures [Rusinkiewicz 2004]
- Heat kernel signatures [Sun et al. 2009]
- 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]
- Advancing front [Zhao et al. 2007]
The module is tested its compilation using the following compilers.
- Windows - Visual Studio 2022 (Microsoft Windows Server 2022)
- MacOS - Apple Clang 11.0 (MacOS 11.7)
- Linux - LLVM Clang 11.0, GNU C Compiler 9.4.0 (Ubuntu 22.04 LTS)
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
# Run "poetry shell" to enable virtualenv if you test with poetry.
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 |
Original | Hole filled (minimum dihedral angles) | Hole filled (advancing front) |
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