We are pleased to announce version 2.0 of the Polygon Mesh Processing Library! This is a major release containing several additions and improvements as well as a few breaking changes to the API. Highlights include:
See the changelog for a full summary of changes.
The API changes in this release are relatively minor. Upgrading existing code from previous versions should be straightforward. We encourage all users to upgrade to 2.0. After this release, we will likely do some more invasive changes.
The pmp::SurfaceSimplification class has been extended to be aware of texture seams, thereby effectively allowing the same texture to be used for different resolutions of a mesh. Additional parameters control the maximum deviation allowed during simplification and a threshold to detect texture seams. Thanks to Timo Menzel from TU Dortmund for his contribution!
The pmp::SurfaceSubdivision class has a new quad/triangle subdivision scheme that allows for smooth subdivision of mixed element quad and triangle meshes. The scheme is a generalization of the Catmull-Clark and Loop subdivision algorithms. See the original paper [22] for details. Thanks to Hendrik Meyer for his contribution.
The new pmp::SurfaceFactory class provides convenience methods to generate basic shapes such as Platonic solids, spheres, planes, cylinders, cones, or torii. This comes in handy for unit testing but also for testing your algorithm against shapes with well-defined properties.
We adopted exceptions as our main mechanism for reporting errors. Specific exception types are defined in pmp/Exceptions.h
. So far, we distinguish between the following types of errors:
A simple example to check for invalid input passed to an algorithm looks like this:
We changed public functions that used to return bool
values to indicate success or failure accordingly.
SurfaceMesh::triangulate()
SurfaceSubdivision::sqrt3()
PMP_SHOW
macroVersion
class and Version.h
headerpmp::TriangleKdTree::NearestNeighbor::tests
memberGet your own copy by cloning:
Checkout the 2.0 release tag:
Configure and build:
Run the mesh processing app
If you encounter any glitches or problems please report the issue on GitHub.