MeshLib — an SDK that supercharges your 3D data processing efficiency
Geometry algorithms engineered to revolutionize. We help software engineers process, repair, measure and optimize 3D data with next-generation algorithms, reducing development time and costs — mesh boolean, mesh repair, decimation, offset, point cloud triangulation, ICP registration and voxel processing, in C++, C, C#, Python, JavaScript, Rust and Java.
▶ Try it live · Website · Documentation · Quick start · Examples · Benchmarks · Discussions
Install
pip install meshlib # Python
dotnet add package MeshLib # C#
npm install @meshinspector/meshlib # JavaScript / WebAssembly
cargo add meshlib@<version> # Rust, the exact version from crates.io
For C++ and C, see the Installation Guide;
for Rust, the Rust setup guide;
for Java, com.meshinspector:meshlib from Maven Central, see the
Java setup guide.
60 seconds to your first result
Turn a scan into a triangle mesh:
from meshlib import mrmeshpy as mm
pc = mm.loadPoints("scan.ply") # point cloud from any scanner
mesh = mm.triangulatePointCloud(pc) # point cloud -> triangle mesh
mm.saveMesh(mesh, "model.stl")
Boolean operations that just work, with no non-manifold surprises:
from meshlib import mrmeshpy as mm
a = mm.makeUVSphere(1.0, 64, 64)
b = mm.copyMesh(a)
b.transform(mm.AffineXf3f.translation(mm.Vector3f(0.7, 0.0, 0.0)))
res = mm.boolean(a, b, mm.BooleanOperation.Union)
if not res.valid():
raise RuntimeError(res.errorString)
mm.saveMesh(res.mesh, "out_boolean.stl")
Heal a broken scan into a watertight, printable model. Voxel-based repair rebuilds the surface through a signed distance field, so holes, self-intersections and non-manifold edges disappear in a single pass:
from meshlib import mrmeshpy as mm
mesh = mm.loadMesh("broken.stl")
params = mm.GeneralOffsetParameters()
params.voxelSize = mesh.computeBoundingBox().diagonal() / 200
params.signDetectionMode = mm.SignDetectionMode.HoleWindingRule
params.closeHolesInHoleWindingNumber = True
fixed = mm.generalOffsetMesh(mm.MeshPart(mesh), 0.0, params) # watertight
mm.saveMesh(fixed, "fixed.stl")
Voxel repair resamples the surface, so the result is denser than the input —
add decimateMesh to bring the
triangle count back down within a tolerance you set. Lighter, topological repair
(fixMeshDegeneracies, fillHole, fixSelfIntersections) is available when you
need to preserve the original vertices.
More in Tutorials and the
examples/ folder —
including complete, runnable programs for repair, boolean, offset, ICP and triangulation
in C++, C, C#, Python and JavaScript, and for boolean, decimation and loading/saving in Rust and Java.
What MeshLib does
| 3D Boolean | Fast, exact mesh booleans (union, intersection, difference) plus a voxel-based mode for messy input. |
| Mesh repair | Fix self-intersections, degeneracies, tunnels, multiple edges and undercuts; fill and stitch holes on flat and curved surfaces. |
| Point cloud to mesh | Triangulation with accurate normal estimation, uniform and grid sampling, outlier removal. |
| Simplification | Decimation within a set tolerance, remeshing and subdivision that keep the details you care about. |
| Offset | Shell, partial and weighted offsets for 3D printing, machining and hollowing. |
| Registration | Point-to-point and point-to-plane ICP, plus global registration of multiple scans. |
| Distance & SDF | Mesh to signed distance field and back by marching cubes, distance maps, iso-lines, projection and ray intersection. |
| Voxels & CT | DICOM import/export, voxel-grid processing and 3D volume rendering. |
| Deformation | Laplacian, freeform and relaxation smoothing, noise reduction. |
| Segmentation | Semi-automatic mesh segmentation guided by a curvature metric; graph-cut segmentation of voxel volumes. |
| Collision detection | Exact and precise self- and pairwise intersection tests. |
| Viewer | An embeddable OpenGL/ImGui viewer with UI components, or run the algorithms fully headless. |
| File formats | Meshes, point clouds, CT scans, polylines, distance maps and G-code — full list. |
Full feature reference: meshlib.io/features.
Why teams pick MeshLib
Measured, not claimed. Our boolean benchmark compares MeshLib across nine libraries on 2M-triangle models — method, data and input meshes. The simplification benchmark does the same for decimation across 11 libraries. Both are public and reproducible.
Manifold by construction. Meshes use a half-edge data structure, in which most non-manifold situations are simply not representable — a non-manifold edge, or a vertex with two closed rings of triangles around it. Broken topology is caught where it happens, not three pipeline stages later.
One engine, seven languages. A native C++ core with official APIs for C, C#, Python, JavaScript/WebAssembly, Rust and Java. The same algorithms, the same results — on the desktop, on a server, or in a browser tab.
Built for real workloads. Core algorithms are multithreaded; a CUDA module accelerates distance maps, signed distance fields, offsets and swept volumes on NVIDIA GPUs.
We use it ourselves. MeshInspector, our desktop and web application, and SmileInspector, our FDA-cleared clear-aligner platform, are both built entirely on this SDK, so it is exercised every day on real production data.
Supported, not abandoned. Backed by a full-time team with commercial support, regular releases and a responsive issue tracker.
Platforms
Windows · macOS · Linux (Ubuntu/Debian, Fedora/RHEL) · WebAssembly
Built with MeshLib
| Project | Field | What it does |
|---|---|---|
| Polyga | 3D scanning | PointKit scanning platform, built on MeshLib |
| Verisurf | Metrology | 3D measurement, inspection and reverse engineering |
| Brius Technologies | Orthodontics | Customized lingual orthodontic appliances |
| Axial3D | Medical imaging | Scan-to-3D-model services for surgical planning |
| customed.ai | Medical devices | AI-driven patient-specific surgical instruments |
| Relu | Digital dentistry | AI segmentation for dental CAD workflows |
| spherene | Generative design | Adaptive density minimal surfaces for AM |
| ToffeeX | Generative design | Physics-driven design optimization |
| Enhatch | Medical devices | Intelligent surgery platform |
| CIMsystem | CAM / machining | CAD/CAM software for dental and industrial milling |
| 3DONS | Digital dentistry | Dental treatment planning software |
| Henning Larsen | Architecture / AEC | Computational design and terrain modelling |
| MeshInspector | 3D printing / QA | STL editor, viewer and mesh repair application |
| SmileInspector | Clear aligners | FDA-cleared aligner treatment planning platform |
Shipping something built on MeshLib? Open a PR and add it here — we like showing what people build.
Getting started
- Try the live demo — booleans, repair, decimation and ICP in the browser. No install, no sign-up.
- Evaluate locally.
pip install meshlib, then work through the tutorials. Free for non-commercial and educational use under our licence. - See it in an application. MeshInspector is the GUI built on MeshLib — desktop and web, 30-day trial.
- Book a call. Integration guidance, architecture questions and commercial licensing tailored to your project.
Licence
MeshLib is source-available: read the code, fork it, and use it free for non-commercial and educational work. Commercial use requires a licence — see the full terms and the licence page.
Citing MeshLib
If MeshLib supports your research, please cite the exact version you used — find it with pip show meshlib.
@software{meshlib,
author = {{MeshLib Development Team}},
title = {{MeshLib}: 3D Mesh Processing Library},
organization = {AMV Consulting LLC},
year = {2026},
version = {3.1.3.429},
url = {https://meshlib.io},
note = {Please cite the exact version used in your work}
}
Other styles (APA, IEEE, Chicago) and guidance on citing a specific algorithm: meshlib.io/citation-guide. Published something that uses MeshLib? Tell us in Discussions — we keep a list.
Community and support
- Bugs and feature requests → GitHub Issues
- Questions, ideas, show-and-tell → GitHub Discussions
- Commercial support → meshlib.io/book-a-call
If MeshLib saves you time, a ⭐ helps other engineers find it.
Metadata
Release files for meshlib 3.2.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| meshlib-3.2.0.3-cp38-abi3-win_arm64.whl | CPython 3.8 | abi3 | Windows ARM64 | Details for meshlib-3.2.0.3-cp38-abi3-win_arm64.whl |
| meshlib-3.2.0.3-cp38-abi3-win_amd64.whl | CPython 3.8 | abi3 | Windows x86-64 | Details for meshlib-3.2.0.3-cp38-abi3-win_amd64.whl |
| meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_x86_64.whl | CPython 3.8 | abi3 | Linux glibc 2.28+ x86-64 | Details for meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_x86_64.whl |
| meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_aarch64.whl | CPython 3.8 | abi3 | Linux glibc 2.28+ ARM64 | Details for meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_aarch64.whl |
| meshlib-3.2.0.3-cp38-abi3-macosx_12_0_x86_64.whl | CPython 3.8 | abi3 | macOS 12.0+ x86-64 | Details for meshlib-3.2.0.3-cp38-abi3-macosx_12_0_x86_64.whl |
| meshlib-3.2.0.3-cp38-abi3-macosx_12_0_arm64.whl | CPython 3.8 | abi3 | macOS 12.0+ ARM64 | Details for meshlib-3.2.0.3-cp38-abi3-macosx_12_0_arm64.whl |
Total release size: 124.3 MB
Release files / meshlib-3.2.0.3-cp38-abi3-win_arm64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-win_arm64.whl |
|---|---|
| Size | 18.9 MB |
| Tags | CPython 3.8 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
270466fa6aa6ed40b9a2818d65b300021f7db31c7b0f2b80bb0c38ff9d1616d6
|
|
BLAKE2b-256 checksum How to use checksums |
2d761e0c52cde49b1796403c1e957a03b565e87e432ee916a9e930417caf405d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / meshlib-3.2.0.3-cp38-abi3-win_amd64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-win_amd64.whl |
|---|---|
| Size | 19.1 MB |
| Tags | CPython 3.8 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0f07812e4350e76e01eb8f73781021f5e93901b005aa66148a428faa28325d8a
|
|
BLAKE2b-256 checksum How to use checksums |
e44b99f0b2f80eb841925ebeb41351c129b086c07998b5633337ebc8fabacea9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_x86_64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.8 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3c4ce0b074094e67deca3653f19ce76e9f515cee74fca1609dd9cf13b7e6386d
|
|
BLAKE2b-256 checksum How to use checksums |
9390531d5cc7dc95df561923e2f00ac0f8415a08e363a50d8c0eb397936c8725
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_aarch64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 21.2 MB |
| Tags | CPython 3.8 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
658626bb87a6df93a50d64cae734b766ff81e5a1df7b1723c7b21602bb150031
|
|
BLAKE2b-256 checksum How to use checksums |
ae473b46a3512b07f488a020b8369fd6566819e8d3fcf19507b9ffb10ea713aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / meshlib-3.2.0.3-cp38-abi3-macosx_12_0_x86_64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-macosx_12_0_x86_64.whl |
|---|---|
| Size | 21.8 MB |
| Tags | CPython 3.8 abi3 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
5398703b73bca6ce9a5cfafcf0415f50f31e7f0f4b905babc605a918701f257e
|
|
BLAKE2b-256 checksum How to use checksums |
4f6b45ae2e1cc048bde6f43e76961373f90fa888923d4babf53dd6d6ff708ea6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / meshlib-3.2.0.3-cp38-abi3-macosx_12_0_arm64.whl
| Download URL | meshlib-3.2.0.3-cp38-abi3-macosx_12_0_arm64.whl |
|---|---|
| Size | 21.7 MB |
| Tags | CPython 3.8 abi3 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4478ee4550225b571f8960db802b01c57e9d0bccd115730fc53ff98dcd208aca
|
|
BLAKE2b-256 checksum How to use checksums |
988d376dedd76a3f111765aa3c87d6137c9188f3d2f0a4a648eaa4e025ed3600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for meshlib 3.2.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.