The core of the library is a simple and efficient halfedge mesh data structure for storing and processing polygon surface meshes. It has been carefully designed and implemented with a focus on ease of use and performance while maintaining high flexibility.
On top of the core data structure the library provides implementations of canonical geometry processing algorithms such as mesh simplification based on error quadrics, curvature adaptive remeshing, subdivision, smoothing, or parametrization.
To support rapid prototyping the library provides mesh viewers and visualization utilities based on OpenGL®. In addition, the library can be compiled into JavaScript thereby allowing to run mesh processing applications directly in a browser, see here for a demo.
10 May 2020: Version 1.2.1 Released!
15 Mar 2020: Version 1.2 Released!
02 Jun 2019: Showcase: Interactive HTML Slides
The User Guide describes how to quickly get started using the pmp-library, provides an overview of the library and its capabilities, a tutorial as well as guidelines for contributing patches or new code.
The API Reference provides detailed information on the modules, classes, and functions provided by the pmp-library.
Checkout the GitHub Project to browse the source, get the latest development version, or to report any issues.
Fetch the repository:
$ git clone --recursive https://github.com/pmp-library/pmp-library.git
Configure and build:
$ cd pmp-library && mkdir build && cd build && cmake .. && make
Run the mesh processing app:
$ ./mpview ../external/pmp-data/off/bunny.off
The pmp-library is provided under a simple and flexible MIT-style license, thereby allowing for both open-source and commercial usage.
If you found the library to be useful for your projects, please drop us a line at info@pmp-library.org and let us know what you are using it for.
If you are using the pmp-library for research projects, please acknowledge its use by referencing
@misc{pmp-library, title = {The Polygon Mesh Processing Library}, author = {Daniel Sieger and Mario Botsch}, note = {http://www.pmp-library.org}, year = {2020}, }
For references to specific algorithms implemented in the library check out the bibliography.
The pmp-library evolved from the Surface_mesh
data structure developed by
the Bielefeld Graphics & Geometry Group
which in turn was originally derived from OpenMesh.