GitHub link
Polygon Mesh Processing Library

build Coverage Status

The Polygon Mesh Processing Library is a modern C++ open-source library for processing and visualizing polygon surface meshes. Its main features are:

  • An efficient and easy-to-use mesh data structure
  • Canonical mesh processing algorithms
  • Ready-to-use visualization tools
  • Seamless cross-compilation to JavaScript (demo)

Getting Started

Clone the repository:

git clone --recursive

Configure and build:

cd pmp-library && mkdir build && cd build && cmake .. && make

Run the mesh processing app:

./mpview ../external/pmp-data/off/

Build your own tool:

#include <pmp/SurfaceMesh.h>
int main(void)
// .. do awesome things with your mesh
A halfedge data structure for polygonal meshes.
Definition: SurfaceMesh.h:220
void write(const std::string &filename, const IOFlags &flags=IOFlags()) const
Write mesh to file filename controlled by flags.
Definition: SurfaceMesh.cpp:122
void read(const std::string &filename, const IOFlags &flags=IOFlags())
Read mesh from file filename controlled by flags.
Definition: SurfaceMesh.cpp:116


Contributions to the pmp-library are welcome. See the contributing section of the user guide.


If you are using the pmp-library for research projects, please acknowledge its use by referencing

title = {The Polygon Mesh Processing Library},
author = {Daniel Sieger and Mario Botsch},
note = {},
year = {2020},


The pmp-library is provided under a simple and flexible MIT-style license, thereby allowing for both open-source and commercial usage.