A generic and efficient polygon mesh data structure

OpenMesh is a generic and efficient data structure for representing and manipulating polygonal meshes. For more information about OpenMesh and its features take a look at the Introduction page.

OpenMesh is a C++ library. Python bindings are also provided.

On top of OpenMesh we develop OpenFlipper, a flexible geometry modeling and processing framework.


OpenMesh Python Bindings Updated 1.2.1

We updated our OpenMesh Python Bindings to version 1.2.1. The release is available via PyPi.

The new version is build with Python 3.9 and available for Linux, Mac(Arm64 and x86_64), and Windows.

As we updated pybind, we require at least Python 3.6.

March 8, 2022

OpenMesh 9.0 released

This release adds several improvements.

We added predicates that can be used as smart range filters. The Smart handles now give read access to status fields. And we have CW/CCW ranges now.

The build system got some updates and we can now build the example apps with qt6.

There are some breaking changes. We dropped support for VS2015 and the tests on 32-bit architectures. OpenMesh might still compile but we don't test this anymore.

We added test builds for the M1 based Apple computers.

As usual the full change log is available on our website: Changelog

Jan. 18, 2022

OpenMesh 8.1 released

This release introduces Smart Handles.

Smart Handles know their corresponding mesh and can be used to simplify access to navigation methods ( e.g. mesh->next_halfedge_handle(HH) can be written as handle.next()). You can find further details in the smart handles section under tutorials in the Documentation.

There are also new convenience functions to simplify calculations (e.g. summing up all neighbors,...)

Double support in OM and PLY Reader/Writer has been improved.

Some bugs were also fixed in this release along with improvements to the build system.

As usual the full change log is available on our website: Changelog

April 23, 2020

OpenMesh 8.0 released

This release now relies on compilers supporting C++11 or higher. Therefore Visual Studio 2013 is no longer supported.

The major upgrade in this release is the integration of an Eigen3 wrapper providing a direct replacement of the integrated vector type (Vec3d/Vec4d). You can now use Eigen3 vectors as the basic data type inside OpenMesh.

We also improved several readers and writers. Furthermore the new SmartTagger class has been added which can be used to tag primitives in the mesh while providing an O(1) reset of the tagging.

Next to this, we removed the glut requirement from the apps.

As usual the full change log is available on our website: Changelog

Feb. 21, 2019

OpenMesh 7.1 released

This release is a minor bugfix release.

We now enforce C++-11 in cmake to make sure OpenMesh compiles without having to add CXX Flags manually with compilers requiring additional flags to enable C++11.

Furhermore a regression in the OBJ reader was fixed causing very poor performance.

As usual the full change log is available on our website: Changelog

May 29, 2018

OpenMesh 7.0 released

This release adds more C++11 support. We can't guarantee that OpenMesh compiles with non C++11 compatible compilers anymore. Furthermore we removed the Python support from the package itself and moved to a new interface available via Pypi.org. The source of the python bindings is now in our Gitlab.

Next to the Core updates for C++11 we fixed several bugs and improved handling for external vector types.

The Subdivider was updated with a midpoint subdivision scheme.

Another set of changes adds fixes and improvements to several reader and writer modules.

As usual the full change log is available on our website: Changelog

April 19, 2018
Disclaimer Home Visual Computing institute RWTH Aachen University