Четкое извлечение изоповерхности из вокселей

#c #voxel #marching-cubes

#c #воксель #маршевые кубы

Вопрос:

Мне нужно сгенерировать изоповерхность из фрагментов вокселей в октодереве или массиве, который поддерживает как округлую, так и четкую геометрию. Я искал алгоритмы, которые, по-видимому, способны выполнить эту задачу, и нашел несколько, в том числе двойные контуры, расширенные маршевые кубы и двойные маршевые кубы. Однако для первых двух требуются данные Hermite, которые кажутся огромной утечкой памяти. Кроме того, я не могу найти фактический алгоритм ни для одного из них, только уравнения из журналов и расплывчатые описания. Буду признателен за любую помощь в поиске алгоритма, который решит мою проблему.

Комментарии:

1. Я не понимаю: afaik, эти методы позволяют извлекать легко визуализируемые фрагменты из непрерывной математической функции. Но у вас уже есть дискретные значения. Вы действительно ищете способ заполнить пространство между этими точками точками, следующими за кривой, приближающейся к идеальной, проходящей через все точки, которые у вас уже есть?

2.Извлечение изоповерхности из вокселей выполняется тем же способом, но задает функцию из дискретных координат (вокселей). Кривая наилучшего соответствия, вероятно, будет чем-то вроде маршевых кубов и не будет поддерживать острые края. Я не уверен насчет кубов с двойным маршем, но я знаю, что расширенные маршевые кубы похожи на двойное контурирование, и есть многочисленные ссылки на извлечение изоповерхности из вокселей с ее использованием. Пример 1 Пример 2 @didierc

Ответ №1:

Те, которые вы упомянули, являются наиболее заметными. Однако имейте в виду, что у них тоже есть некоторые ограничения:

Расширенные маршевые кубы (EMC) — сохраняет четкие характеристики, принимая во внимание нормали выборки (и, следовательно, градиенты нормалей), однако этот метод все еще не является топологически согласованным (гомеоморфным), он не допускает адаптивного уточнения (упрощения сетки) и имеет зависимость между ячейками (из-запроцесс переворачивания края; что не позволит в конечном итоге ускорить GPU).

Двойной контур (DC) — сохраняет четкие черты и может быть адаптивно доработан, но зависит от межэлементной зависимости, а также создает неразличимые сетки.

Двойные маршевые кубы (DMC) — сохраняют четкие функции и создают многоуровневые сетки (для устранения неоднозначностей), также допускают адаптивную доработку, однако по-прежнему страдают от зависимости между ячейками (из-за ее двойственной природы), а также не будут такими точными из-за процесса устранения щепок, который округляетвверх по вершинам (ошибка может быть незначительной)

Я полагаю, что существуют и другие возможные комбинации этих методов, а также совершенно другие методы. Тем не менее, я предлагаю вам взглянуть на кубические маршевые квадраты (CMS). В настоящее время я пытаюсь разобраться в этом, поскольку надеялся это реализовать. В Сети не так много реализаций для этого. Однако он по-прежнему работает с данными Hermite (которые, насколько я мог судить, касались вас).