Главные ошибки при запекании карт нормалей

Мы уже разобрались с теорией и терминологией, поговорили о типах карт нормалей и их различиях. Сегодня ты узнаешь, как подготовить модель к запеканию normal map, избегая типичных ошибок.

Хард-софт эджи

Hard Edge — жесткая грань между двумя плоскостями. В 3ds Max используется подход Smoothing Groups. Для создания жесткого эджа достаточно назначить на плоскости разные группы сглаживания.

Главные ошибки при запекании карт нормалей

Soft edge — гладкая грань. Чтобы создать ее в 3ds Max, на плоскости нужно назначить одинаковые группы сглаживания.

Главные ошибки при запекании карт нормалей

Чтобы грани запеклись как надо, пользуйся правилом «Hard edge — UV seam»: для каждой жесткой грани лоуполи модели нужно создавать шов на UV. Иначе детали и грани запекутся некорректно.

На выделенной грани расположен hard edge, но не сделан разрез на UV. В результате — артефакт.
На выделенной грани расположен hard edge, но не сделан разрез на UV. В результате — артефакт.
На выделенной грани расположен hard edge и сделан разрез на UV — угол запекся корректно.
На выделенной грани расположен hard edge и сделан разрез на UV — угол запекся корректно.

Важно! Это не значит, что UV швы нельзя делать и в других местах. Технически, их можно расположить где угодно, лишь бы на финальном ассете они не были заметны.

Главные ошибки при запекании карт нормалей
На маленьком цилиндре правило «Hard edge — UV seam» нарушено, поэтому там появился артефакт. На большом цилиндре все правильно.
На маленьком цилиндре правило «Hard edge — UV seam» нарушено, поэтому там появился артефакт. На большом цилиндре все правильно.

Градиенты

Градиенты на normal map возникают, потому что карта нормалей пытается выровнять градиент на шейдинге объекта. Простыми словами, если на Low Poly во вьюпорте видно градиенты, а на High Poly их нет — они появятся на карте нормалей.

Карта нормалей таким образом пытается привести вид Low poly объекта к виду High poly.

Это редко ведет к серьезным проблемам, но иногда градиент лучше исправлять заранее.
Это редко ведет к серьезным проблемам, но иногда градиент лучше исправлять заранее.

Это может вызвать сложности, если для модели нужно создавать лоды (LODs — Level of details, несколько вариаций одной и той же модели с постепенным уменьшением детализации и снижением количества треугольников). В таком случае, после удаления некоторых граней, градиент может появиться на LOD01 и создать визуальные артефакты.

Главные ошибки при запекании карт нормалей

Потяжки

Потяжки можно отнести к градиентам, но разберемся с ними отдельно.

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

Зеленым выделены места, где длинные треугольники создают потяжки.
Зеленым выделены места, где длинные треугольники создают потяжки.

В таких случаях лучше пренебречь оптимизацией и сделать сетку чуть тяжелее, но избежать появления артефактов.

Немного утяжелили сетку, зато пропали проблемы шейдинга.
Немного утяжелили сетку, зато пропали проблемы шейдинга.

Совпадение High Poly и Low Poly моделей

При запекании карты нормалей, вся информация о деталях на поверхности и сглаженности граней полностью переносится с High poly модели. Если угол High poly в пространстве расположен не в том же месте, где и у Low poly, — на карте нормалей появится пробел.

Главные ошибки при запекании карт нормалей

Если что-то подобное появилось на твоем объекте — в первую очередь проверяй соответствие хайполи и лоуполи. Иногда хайполи перед сглаживанием нужно немного сдвинуть / увеличить относительно лоуполи, чтобы после сабдивайда / турбосмуза они оказались в одинаковых координатах. Это костыль, но в некоторых ситуациях он может помочь.

Главные ошибки при запекании карт нормалей

Сечения на цилиндрах

Проблема с выбором количества сечений на цилиндрах косвенно относится к теме сопоставления хайполи и лоуполи моделей. Если у Low poly слишком мало сечений, то после запекания появятся пробелы на верхней и нижней плоскости. Причина та же — несоответствие Low и High poly версий объекта.

Главные ошибки при запекании карт нормалей
Сравнение запекания цилиндров с разным количеством сечений.
Сравнение запекания цилиндров с разным количеством сечений.

Летающая геометрия

Летающая геометрия (Float geometry) — это техника создания «парящих» над поверхностью элементов хайполи.

Главные ошибки при запекании карт нормалей

Она нужна для быстрого добавления вшитых деталей в объекты. Это намного проще, чем вшивать каждый элемент по-настоящему, а результат на карте нормалей выглядит так же.

Average normal

В настройках запекания всегда можно найти функцию уравнивания нормалей. Она усредняет нормали для запекания — так можно сделать углы более плавными.

Но есть у этой настройки и обратная сторона: из-за выравнивания нормалей на углах, детали на ровных поверхностях могут начать «плыть». И чем ближе деталь к углу — тем сильнее.

В разных программах с этим эффектом можно бороться по разному. Мы поговорим подробнее на эту тему в следующей статье цикла.

Ложная перспектива

Ложная перспектива, или Fake perspective, используется художниками при создании дополнительных элементов на high poly — деталей, которые не поддерживаются сеткой Low poly объекта. Например, любая летающая геометрия.

Суть ложной перспективы в том, чтобы немного сужать вершины элементов по отношению к их основе. Основа — место, в котором элемент «вшивается» в тело объекта.

Главные ошибки при запекании карт нормалей

Это нужно, чтобы элемент было видно на карте нормалей после запекания. Если не следовать этому правилу, геометрия может полностью или частично скрываться на normal map.

Главные ошибки при запекании карт нормалей

Размер элементов и разрешение текстуры

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

Чем меньше разрешение, тем хуже видно маленькие элементы и тонкие фаски.
Чем меньше разрешение, тем хуже видно маленькие элементы и тонкие фаски.
Главные ошибки при запекании карт нормалей

Если на твоем проекте используется низкий тексель, старайся делать фаски толще, а запекаемые элементы — больше. Таким образом, они не будут теряться после запекания.

(Texel density — количество пикселей на единицу площади объекта. Texel density 1024px/m означает, что на один квадратный метр объекта должно выделяться 1024 пикселя)

Отверстия в High Poly

Если в финальной версии объекта планируется запечь отверстия, но нет возможности промоделировать их геометрией — обязательно зашивай все эти дыры на High poly. Иначе на карте нормалей появятся странные артефакты.

Главные ошибки при запекании карт нормалей

В такой ситуации для создания отверстий лучше промоделить экструды, зашить их, а потом — закрасить черным цветом в карте Albedo.

Пример правильного запекания отверстий.
Пример правильного запекания отверстий.

Плотность High Poly

«Чем плотнее сетка — тем лучше результат на карте нормалей» — хороший аргумент, но до определенного момента.

Если взять текстуру с разрешением 2048х2048 и развертку, которая занимает 100% UV пространства — максимальное количество доступных нам пикселей равняется 4 194 304. И это фантастическая ситуация. В реальной жизни развертка может быть заполнена на 70% плюс оверлапы и паддинг. В результате эта цифра уменьшается на 30-40% процентов.

Так как в один пиксель можно запечь информацию об одной плоскости — нет никакого смысла создавать хайполи модели на 20-30 млн треугольников.

Можно возразить: «Но ведь ничего плохого в большом количестве полигонов нет. Лучше перестраховаться и сделать чуть больше нужного». Отчасти это верно, но такой подход создаст две проблемы.

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

Во-вторых, тяжелая геометрия тормозит работу программ и экспорт/импорт геометрии из софта в софт.

Вывод: хайполи должна выглядеть красиво и сглажено, но не стоит перегружать геометрию лишними треугольниками.

Количество доступных пикселей, в зависимости от разрешения текстуры
Количество доступных пикселей, в зависимости от разрешения текстуры

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

В следующей статье подойдем к вопросу запекания normal map с практической стороны и поговорим о кнопках в разных программах. Stay tuned!

4747
4 комментария

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

5
Ответить

Комментарий недоступен

Ответить

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

Ответить

по моему 512 на 512 никак не 500к...

Ответить