Как сгладить сетку, генерируемую Marching Cubes в режиме реального времени? - PullRequest
2 голосов
/ 20 июля 2010

Я сейчас использую алгоритм марширующих кубов для проекта (рендеринг человеческих зубов в режиме реального времени по КТ-изображениям).Вот результат рендеринга:

http://www.freeimagehosting.net/uploads/4c2e2c94be.jpg

Вы можете видеть, что сетка, сгенерированная MC, не такая гладкая.Ребята, вы знаете какой-нибудь алгоритм сглаживания в реальном времени, который можно применить к выходу MC?Или есть какая-нибудь улучшенная версия MC, которая может генерировать гладкую поверхность?

Обратите внимание, что алгоритм сглаживания должен быть быстрым, потому что позже мне придется использовать MC с частотой около 30 Гц для пересчетаизоповерхность при интерактивной деформации.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

Подразделение Catmull-Clark - хороший алгоритм, который дает довольно хорошие результаты для сглаживания. Вы можете применить его несколько раз.

Алгоритм довольно прост в реализации.

О том, что это в режиме реального времени, пока что я реализовал его только статически, но - AFAIK - абсолютно возможно реализовать его как геометрический шейдер.

В Blender также используется алгоритм сглаживания . Это не основано на подразделении (это не изменяет вершину или число лиц); он просто перемещает вершины, чтобы уменьшить углы между соседними вершинами. Опять же, должна быть возможность быть реализованной в GLSL, четко в режиме реального времени.

Эти два можно использовать вместе.

0 голосов
/ 14 мая 2014

Просто чек. Если у вас есть дублированные вершины, пересчет нормалей не будет иметь сглаживающего эффекта. Поэтому убедитесь, что у вас не было дублированных вершин после алгоритма марширующего куба. У меня была такая же проблема, а затем я удалил дубликаты, теперь у меня гладкая сетка

...