In my application I'm working with a lot of triangle meshes, and sometime I need to reduce number of triangles in them (colapse some edges). For mesh handling I use openmesh (openmesh.org) since it's modern (C++), but mainly because it does not drag enormous amount of dependencies with it (depends only on c++ std and any modern compiller can handle it (I need to be crossplatform Linux/Windows/Mac OSX)).
Now I need to reduce (decimate in openmesh terminology) some meshes, but I need to preserve borders. (the meshes in question were originaly grid (512x512), but at the center of them some convave elements were extruded/added, it's crucial that after reduction the outer edges of grid still form rectangle)
I dont see any way to decimate them in openmesh and preserve volume/outline, all the OpenMesh::Decimater::Mod* decimation modules use quadric as their base.
In GTS (GNU Triangulated Surface Library) there is implemented Lindstrom-Turk reduction with is ideal for my needs (I'v done some dirty wraper to test if it is what I want) and it works, but with GTS there are problems - it's not multithread save (I'm reducing many meshes over multiple threads) and with GTS it's not possible since it uses global variables inside library to disable/enable some stuff while reducing mesh :/) (and it's also drag whole glib as it's dependencies)
There is also CGAL and it also has Lindstrom-Turk implemented, but it's drag whole boost and other dependencies with itself :/
Is there any decimator module for openmesh that does decimation with border/volume preservation ? (I'v searched, but found none :/)