В моем приложении я работаю с множеством треугольных сеток, и иногда мне нужно уменьшить количество треугольников в них (разбить несколько ребер). Для работы с сеткой я использую openmesh (openmesh.org), поскольку он является современным (C++), но главным образом потому, что он не перетаскивает огромное количество зависимостей с ним (зависит только от C++ std и любого современного компилятора может справиться с ним (мне нужно быть кроссплатформенным Linux/Windows/Mac OSX)).OpenMesh, прореживание, Lindstrom-Turk
Теперь мне нужно уменьшить (decimate в терминологии openmesh) некоторые сетки, но мне нужно сохранить границы. (рассматриваемые сетки были оригинальной сеткой (512x512), но в центре их были экструдированы/добавлены некоторые конвективные элементы, важно, чтобы после восстановления внешние края сетки по-прежнему образовывали прямоугольник)
Я не вижу никакого способа чтобы декомпрессировать их в openmesh и сохранить объем/схему, все модули декомпрессии OpenMesh :: Decimater :: Mod * используют квадрику в качестве своей базы.
В GTS (GNU Triangulated Surface Library) реализовано сокращение Lindstrom-Turk, которое идеально подходит для моих нужд (я сделал какой-то грязный wraper для проверки, если это то, что я хочу), и он работает, , но с GTS есть проблемы - это не многопоточное сохранение (я сокращаю много сеток по нескольким потокам), а с помощью GTS это невозможно, так как он использует глобальные переменные внутри библиотеки, чтобы отключить/включить некоторые вещи при уменьшении сетки: /) (и это также перетащить вся бойкий, как это зависимости)
Существует также CG и он также имеет Линдстр-Turk реализован, но это перетащить весь импульс и другие зависимости с самими собой:/
Есть ли какой-нибудь дециматорный модуль для openmesh, который выполняет прореживание с сохранением границы/объема? (Я искал, но не нашел ни одного: /)
Обратите внимание, что с последней версией CGAL (4.5) вы можете напрямую применить алгоритм упрощения на OpenMesh HDS без необходимости конвертировать его в CGAL HDS. Единственными зависимостями, требуемыми CGAL, являются повышение и GMP. – sloriot
«only» boost:] - вот почему я прошу ... Я пытаюсь избежать зависимости от перенапряжения ... – user2441788
К любопытству, почему повышение в качестве зависимости является такой проблемой? – sloriot