Skip to content

Wildmeshing Toolkit

Robust, parallel triangle and tetrahedral mesh generation and editing.

The Octocat: the input surface on the left, and the tet mesh TetWild makes of it, cut open and colored by element quality, on the right

The toolkit writes mesh algorithms as local operations — split, collapse, swap, smooth — together with the invariants every operation must keep and the rules that update attributes. It schedules the operations in parallel, checks the invariants, and rolls back any operation that would break them. On this foundation it implements TetWild, TriWild, QSlim, isotropic remeshing, multi-region meshing, topological offsets and more, each callable from the command line, Python and C++ with the same JSON options.

python -m pip install wildmeshing
import wildmeshing as wm

bunny = wm.read_mesh(str(DATA / "bunny.obj"))
outputs, report = wm.tetwild({"input": ["bunny"], "num_threads": 4}, {"bunny": bunny})
print(report["#t"], "tets, max energy", report["max_energy"])
wm.write_mesh("bunny_tets.vtu", outputs["mesh"])

Where to go

  • Getting started: install, run a first component, and learn the two ways to call one.
  • Tutorials: each component, its key settings, with examples in JSON, Python and C++.
  • Gallery: the components' results, interactive.
  • Reference: every option of every component, the Python API, the C++ API.
  • Concepts: local operations, scheduling, robust geometry, quality.
  • Developer guide: the code, and how to add an operation or a component.

The toolkit is described in Declarative Specification for Unstructured Mesh Editing Algorithms (ACM Transactions on Graphics, SIGGRAPH Asia 2022): see Citing. It is MIT licensed.