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 10.0 released

This release adds some improvements and fixes several bugs.

We added edge-halfedge, edge-vertex, and edge-face circulators. The build system got some cleanup to improve speed.

Several bugs have been fixed in the readers and writers. Furthermore the previous halfedges are now optional again.

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

Nov. 14, 2023

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
Disclaimer Home Visual Computing institute RWTH Aachen University