Мне нужно создать изоповерхность из кусков вокселей в октрее или массиве, который поддерживает как округлую, так и четкую геометрию. Я искал алгоритмы, которые, кажется, способны выполнить эту задачу, и нашел несколько, в том числе Dual Contouring, Extended Marching Cubes и Dual Marching Cubes. Первые два, однако, требуют данных Эрмита, которые кажутся огромной утечкой памяти. Кроме того, я не могу найти фактический алгоритм для любого из них, только уравнения из журналов и расплывчатые описания. Любая помощь, чтобы найти алгоритм, который решит мою проблему, будет очень признателен.
Те, что вы упомянули, являются наиболее выдающимися.
Однако имейте в виду, что у них есть некоторые ограничения:
Расширенные марширующие кубы (EMC) — сохраняет четкие особенности, принимая во внимание выборочные нормали (и, таким образом, градиенты нормалей), однако этот метод все еще не является топологически непротиворечивым (гомеоморфным), он не позволяет адаптивное уточнение (упрощение сетки) и имеет межклеточную зависимость (из-за процесса переворота края, который не допускает возможного ускорения графического процессора).
Двойной контур (DC) — сохраняет острые черты и может быть адаптивно улучшен, но имеет межклеточную зависимость, а также создает немногообразные сетки.
Двойные марширующие кубы (DMC) — сохраняет четкие особенности и создает многоярусные сетки (имеющие дело с неоднозначностями), также допускает адаптивное уточнение, однако все еще страдает от межклеточной зависимости (из-за его двойственной природы) и также не будет столь же точным из-за его процесса удаления осколков, который округляет вершины (ошибка может быть незначительной)
Я считаю, что есть и другие возможные комбинации этих методов, а также совершенно разные техники. Тем не менее, я предлагаю вам взглянуть на Кубические марширующие площади (CMS). Я в настоящее время пытаюсь обдумать это, поскольку я надеялся осуществить это. Для него не так много реализаций онлайн. Однако он по-прежнему работает с Hermite Data (насколько я могу судить о вас).