Я пытаюсь понять, почему сетки, сглаженные в 3D-студии (модификаторы / сглаживатели), имеют одинаковое количество вершин / граней до или после этого процесса, а также точно такую же геометрию.
В следующем примере обе сетки имеют 32 вершины и 60 граней.
Хотя у меня есть опыт работы с программированием (c ++ и c #), я довольно новичок в компьютерной графике. Таким образом, я ожидал, что сглаженный вид сглаженной сетки потребует дополнительных вершин, то есть подразделения треугольников, чтобы в итоге получить более детальную конечную сетку. Однако, похоже, что это не так.
Поэтому я спрашиваю:
1) как возможно сглаживание без увеличения детализации геометрии сетки?
2) Увеличивает ли сглаживание память, выделенную / использованную для хранения новой сетки, по сравнению с исходной?
Объяснения очень приветствуются, но ссылки (академические или нет) также приветствуются.
Ответы:
Сглаживание в этом случае просто приводит к тому, что нормали поверхности в вершинах указывают одинаково, при интерполяции это выглядит гладко. Meshsmooth добавил бы вершины.
1) как возможно сглаживание без увеличения детализации геометрии сетки?
Человеческие глаза не могут видеть кривизну, кроме как на краях предметов. Все, что они могут сделать, это приблизить плавность и обработать наклон градиента. Таким образом, наличие непрерывного поля создает ощущение гладкости. Однако глаз чрезвычайно чувствителен к резким изменениям цвета и воспринимает это как жесткую складку.
Путем интерполяции вершинных нормалей ваша поверхность приобретет вид плавного потока. Так как эта нормаль используется для вычисления окончательного отраженного цвета, вы получите гладкое поле цвета.
Изображение 1 : плоско заштрихованная норма против нормалей гладкой интерполяции. Черная нормаль лежит на вершине. Цветные интерполируются.
Ничто не говорит о том, что нам нужно делать линейную интерполяцию. Фактически, возмущая нормали, мы можем заставить плоскую поверхность менять внешний вид. Вот как работает рельефное и нормальное отображение. Эффект может быть убедительным, если только край поверхности не играет слишком большую роль, в которой иллюзия разрушается.
Изображение 2 : плоская затененная поверхность (задняя часть), гладкая затененная (средняя) и отображенная гладкая нормаль. Иллюзия волнистой поверхности ломается, потому что край играет настолько заметную роль в изображении, что вы могли бы вместо этого увеличить нормали
2) сглаживание хотя бы увеличивает выделенную память
Трудно сказать определенные вещи о базовом графическом движке. В любом случае, нормали должны передаваться на видеокарту, скорее всего, эти данные кэшируются, но могут быть рассчитаны на лету (в обоих случаях).
Поскольку Макс использует группы сглаживания, мне кажется, что использование памяти постоянно независимо. Трудно сказать, даже если он не кэшируется, это не будет иметь большого значения. Это делает крошечный шейдер немного более сложным, но только скорее всего эта сложность присутствует, используйте ее или нет.
источник