私のアプリケーションでは、多くの三角形メッシュを使用していますが、三角形の数を減らす必要がある場合があります (いくつかのエッジを折りたたむ)。メッシュの処理には、openmesh (openmesh.org) が最新 (C++) であるため、openmesh (openmesh.org) を使用しますが、主な理由は、膨大な量の依存関係をドラッグしないためです (c++ std のみに依存し、最新のコンパイラはそれを処理できます (クロスプラットフォームである必要があります) Linux/Windows/Mac OSX))。
ここで、いくつかのメッシュを減らす (openmesh の用語でデシメートする) 必要がありますが、境界を保持する必要があります。(問題のメッシュは元はグリッド (512x512) でしたが、それらの中心でいくつかの凹面要素が押し出され/追加されました。縮小後もグリッドの外縁が依然として長方形を形成することが重要です)
OpenMesh でそれらを間引き、ボリューム/アウトラインを保持する方法は見当たりません。すべての OpenMesh::Decimater::Mod* デシメーション モジュールは、ベースとして quadric を使用します。
GTS (GNU Triangulated Surface Library) では、Lindstrom-Turk リダクションが実装されており、私のニーズには理想的です (私は、それが私が望むものであるかどうかをテストするためにいくつかのダーティ ラッパーを実行しました)。マルチスレッド保存ではなく (複数のスレッドで多くのメッシュを削減しています)、GTS ではライブラリ内のグローバル変数を使用してメッシュを削減しながら一部のものを無効/有効にするため、GTS では不可能です :/) (また、glib 全体を依存関係としてドラッグします)
CGAL もあり、Lindstrom-Turk も実装されていますが、ブースト全体と他の依存関係をそれ自体にドラッグしています :/
ボーダー/ボリューム保存でデシメーションを行うopenmesh用のデシメーターモジュールはありますか? (私は検索しましたが、何も見つかりませんでした:/)