Запечка (bake) стилизованного персонажа ч. 1
Автор: Юрий Порубов
Привет! Мы продолжаем цикл статей по пайплайну разработки стилизованных персонажей.
Сегодня ты узнаешь, как устроен четвёртый этап ААА-пайплайна — запечка (bake), на примере нашей модели.
Что такое запечка
Этап запекания (bake) — полностью технический этап ААА-пайплайна, цель которого заключается в переносе детализации с хайполи модели на лоуполи с помощью специальных карт.
Для запекания карты необходимо загрузить хайполи и лоуполи-модель в любую программу для 3D-моделирования или специальную программу для запечки.
Все эти карты необходимы для следующего этапа — текстурирования.
Когда мы добавим эти карты к лоуполи-модели, они перенесут дополнительную детализацию, взятую с хайполи модели.
Каждая запечённая карта содержит определённую информацию о хайполи-модели. Это может быть информация о нормалях, глубинах и высотах, цветах и других параметрах.
Наиболее полезны эти карты:
— Normal Map
— Normal (Object)
— AO (Ambient Occlusion)
— Curvature
— Vertex Color (Color ID)
Для запечки необходимо иметь:
1.Хайполи модель (в нашем случае, это скульпт)
С неё алгоритмы запечки будут снимать детализацию.
2.Лоуполи модель, созданную на этапе ретопологии
К ней мы добавим запечённые карты и тем самым перенесём информацию с хайполи модели.
3.Готовую развёртку,
Все карты пекутся именно на неё.
4.Программу для «запечки»
Marmoset/Substance Painter/Maya/3Ds Max или любую другую.
После этого этапа, в следующей статье, мы перейдём к текстурированию, — то есть к покраске нашей модели.
----------
Ключевая мысль этой статьи
Процесс «запечки» написан на очень сложных и чувствительных алгоритмах.
У этих алгоритмов есть целый ряд требований к модели. А любая ошибка приводит к артефактам, которые могут испортить всю проделанную работу.
Секрет простой и успешной запечки кроется в том, чтобы на всех предыдущих этапах пайплайна учитывать особенности этого процесса.
Зная особенности алгоритмов запечки, мы поставили персонажа в позу, при которой не пересекается геометрия, а также правильно расставили хард и софт эджи.
Если ты следовал нашим рекомендациям в прошлых статьях, этап запечки будет крайне простым. В твоих руках — готовый алгоритм по полному циклу создания стилизованных персонажей.
Подготовка хайполи под бейк
Ранее, когда мы показывали процесс скульптинга, сразу перед началом ретопологии, мы совершили два простых действия в ZBrush:
1.Прижали геометрию
Потому что в таких местах часто появляются артефакты.
2. Покрасили хайполи для карты Color ID
Мы покрасили разные материалы в разные цвета и сохранили в отдельный файл. Из него сегодня мы запечём карту Color ID, — она необходима для текстурирования.
----------
Подготовка лоуполи под бейк
В процессе подготовки к запечке наша лоуполи будет изменяться. Удалятся оверлапнутые элементы, добавится триангуляция и так далее.
Всё это будет сделано для того, чтобы запечка прошла без артефактов.
Нам крайне важно не потерять исходный файл.
Сделаем копию исходного файла: это будет отдельный файл лоуполи для запечки. Далее мы будем работать именно с ним.
Первый шаг
Объединяем всю топологию в один объект. Чтобы при нажатии на любую часть модели выделилась вся модель, а не конкретный элемент.
В конце именно эту версию модели мы отправим аниматору.
Все остальные версии лоуполи-модели — технические.
Удаляем все элементы, на которых есть оверлапы
На прошлом этапе пайплайна мы сделали оверлапы, чтобы сэкономить место на UV. Но в процессе запечки лишние одинаковые элементы не нужны.
Оставляем только по одному оверлапнутому элементу на модели, остальные удаляем.
В нашем случае это элементы на броне и перчатках.
Слева — финальная модель. Справа — модель для запечки. Удалены объекты с оверлапами
Разбиваем модель на несколько объектов
В местах, где геометрия пересекается или находится близко друг другу, могут появиться артефакты при запечке.
Чтобы этого избежать, нужно разделить модель на несколько объектов.
Внутри каждого объекта все элементы должны находиться на расстоянии друг от друга.
Распределяем элементы по разным объектам. Это выглядит так:
Внутри каждого объекта элементы находятся на расстоянии друг от друга.
Если между элементами маленькое расстояние, у них будет пересекаться Cage (зона поиска). И снова появятся артефакты. Так делать не надо:
Объекты слишком близко друг к другу, так делать нельзя
Что делать? Если видим, что два элемента геометрии лежат рядом, кладём их в разные группы:
Эти два элемента клади в разные группы, так как они пересекаются.
Тело нашего стилизованного персонажа с парой тряпок на руках и ботинками у нас лежит в одной топологии, — поэтому под тело создаём отдельный объект.
Триангулируем модель
Теперь у нас есть две версии нашей лоуполи-модели.
Первый — модель для запечки, в которой объекты разбиты по группам.
Второй — финальная модель, где вся геометрия сшита в один объект.
Слева — модель для запечки. Справа — финальная модель.
Пока что обе модели сделаны в квадах.
Алгоритмы запечки лучше всего работают с треугольными полигонами.
Поэтому у версии лоуполи для запечки нам нужно сделать ещё одну копию и триангулировать.
Затем берём триангулированные группы и выгружаем в формат .obj.
Каждый триангулированный объект = отдельный файл в формате .obj
Каждый файл .obj состоит из одного объекта. А в этом объекте геометрия не пересекается и лежит на расстоянии.
Далее полученные файлы нужно загрузить в Marmoset для запечки.
Можно использовать любую программу, но Marmoset на данный момент — самый удобный вариант.
---------
Открываем Marmoset
Первым делом создаём новые группы в бейкере:
В каждую группу бейкера загружаем файлы лоуполи и хайполи.
1 группа в бейкере = 1 файл .obj с хайполи и триангулированным объектом лоуполи модели.
Получилась такая структура внутри бейкера:
Затем выбираем, какие карты будем запекать.
Для стилизованного персонажа я рекомендую создать именно эти карты:
— Normal Map
— Normal (Object)
— AO (Ambient Occlusion)
— Curvature
— Convexity
— Concavity
— Vertex Color (Color ID)
Затем указываем расширение (размер) карт:
Указывать нужно значение в два раза больше, чем будет в игре.
Например, если нужны 2К текстуры для проекта, то запекаем в 4К.
Готовую карту мы в дальнейшем уменьшим в фотошопе, зато детализация запечётся гораздо лучше.
Другие настройки:
Формат: .psd (или другой, как удобнее)
Samples (уровень сглаживания): 16x (если поставить мало, то появятся «лесенки» на переходах от материала к материалу)
Format: 8 Bits/Channel (зависит от ТЗ проекта)
Padding Size: указываем размер паддинга равный паддингу на нашей UV.
В нашем случае настройки такие:
Дальше нажимаем кнопку со знаком «Р»:
Эта функция привязывает все карты к одному конкретному материалу.
Так как материал у нас один, то ничего больше делать не нужно.
А один материал у нас потому, что развёртка всего персонажа сделана на одной UV.
Дальше мы, наконец-то, нажимаем кнопку Bake.
Когда всё готово, в папке появятся psd файлы со всеми картами:
--------
Описание карт
Изначально, до запечки, модель выглядит вот так:
Сейчас я расскажу, как выглядят запечённые нами карты, и какую информацию о хайполи модели они переносят.
Normal Map
Содержит информацию о поверхности.
Карта создаёт виртуальные вертекс-нормали в каждой точке low poly модели и искажает поведение света. Если наложить запечённый нормал на модель, то она будет выглядеть почти как high poly.
Это одна из самых важных карт, которая запекается почти для каждой модели.
Normal (Object)
Информация о поверхности относительно окружающей среды.
По сути, эта карта учитывает то, что у модели есть верхняя и нижняя часть.
Главное визуальное отличие от Normal Map состоит в том, что на этой карте есть градиенты.
Карта Ambient Occlusion (AO)
Это карта затенения. Она показывает самые глубокие тени в объекте. В основном это тени в углублениях и на пересечениях.
Эту карту используют в игровых движках для создания корректного освещения, а также она очень полезна в текстурировании.