/tinymesh

TinyMesh is a light-weight mesh processing library in C/C++.

Primary LanguageC++Mozilla Public License 2.0MPL-2.0

TinyMesh

Codacy Badge Windows CI MacOS CI Ubuntu CI License: MPL 2.0

TinyMesh is a light-weight mesh processing library in C/C++.

"Buy Me A Coffee"

Modules

Here is the list of modules and reference papers for that.

Install

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)

Library and examples (C++)

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

Python module

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

Run examples

C++

./build/bin/example_simplify data/models/bunny.ply

Python

# Run "poetry shell" to enable virtualenv if you test with poetry.
python examples/python/fill_and_fair.py data/models/bunny.ply

Gallery

Remeshing

Input Remesh Remesh (bottom part)

Simplification

Input Simplify (50000 faces) Simplify (10000 faces)

Denoising (L0 mesh smoothing)

Original Noisy Denoise

Hole filling

Original Hole filled (minimum dihedral angles) Hole filled (advancing front)

Notice

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.

License

Mozilla Public License v2 (c) Tatsuya Yatagawa 2020-2021