XYZ Media

Всё про Bake (Запечку) как этап ААА-пайплайна

Научись полному циклу разработки 3D-модели для игр
Это пятая статья из цикла про ААА-пайплайн. Вот ссылки на все пять, выбирай ту, которая тебе нужна:

1. ААА-пайплайн
2. Драфт
3. Сетка
4. Развертка
5. Запечка

Эта статья поможет новичкам, которые хотят научиться делать запечку без артефактов. Ты узнаешь, что такое запечка, зачем она нужна и научишься переносить детализацию с high poly на low poly. Внимательное изучение статьи займет около 20 минут. Если возникнут вопросы — пиши в чат-бот (кнопка справа внизу). Там на связи живой менеджер :) Он поможет разобраться. Ну что, давай начнем!


Что такое запечка в 3D

Взглянем на low poly модель нашего студента.
Низкополигональная модель, созданная на этапе ретопологии
Минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.

Есть ещё high poly модель с высокой детализацией и скульпт.
High poly модели под сабдив и скульпт
При помощи запечки мы переносим детали с high poly и скульпта на low poly модель.
В итоге, в игровом движке будет легкая low poly модель с минимальным количеством полигонов, но выглядеть она будет так, будто на ней куча деталей:
Что получается, если наложить карты на low poly модель
На low poly мы добавляем запеченные карты нормала и карту затенений. Это карты, которые обманывают поведение игрового света. Свет падает под определенным углом на модель и создает блик. В итоге нам кажется, что в модели много фасок, деталей и вырезов.

На этапе запечки наша задача — запечь 3 карты:

1) Normal map — карту неровностей
2) Ambient Occlusion (AO) — карту затенения
3) Color ID — цветные маски

Если добавим Normal map и AO на low poly модель — на ней появится детализация с high poly и скульпта. Благодаря Color ID модель легче разбить по материалам и текстурировать. Эти карты создают на основе развертки, которую мы делали этапом ранее. Помни, если есть ошибки на развертке или low poly модели — будет куча проблем с артефактами.


Как запекать карты

1. Normal Map

Как выглядит Normal Map
Normal Map создает виртуальные векторы направления в каждой точке low poly модели и меняет поведение света. Если наложить запеченный нормал на модель — она будет выглядеть почти как high poly.

Пример low poly модели с включенным нормалом и без него

Новые полигоны не создаются, это лишь иллюзия формы:
Детализация это иллюзия
Чтобы создать Normal map, мы берем развертку с high poly или скульпта, загружаем в программу для запечки и нажимаем кнопку «bake».
Из чего печётся Normal map
Небольшие черные полосы на нормале — это нормально. Никто не будет разглядывать модель под микроскопом.
Пример черных полос
Из-за того, что игрок видит модель в игре на расстоянии, нам не нужно тратить несколько часов, чтобы убрать черные полоски на нормале:

Normal map создает иллюзию объема из-за трех карт в каналах текстуры: красной, зеленой, синей. Чтобы переключаться между каналами, откроем файл с нормалом в Photoshop и зайдем во вкладку Channels.
Вкладка Channels
Красный канал показывает искажение вертекс нормалей по горизонтали. Чем светлее пятно на красном канале — тем сильнее виртуальная поверхность наклонена вправо, а чем темнее — тем больше поверхность бликует влево.
Красный канал нормала
Зеленый канал работает так же, но искажает шейдинг по вертикали. Светлый блик поворачивается наверх, а темный вниз.
Зелёный канал нормала
Чтобы лучше понять разницу между этими двумя каналами, взглянем на эту часть модели:
У бочки на high poly фактура дерева
Затемнение идет только по одной из осей. Так как красный канал нормала показывает искажение вертекс нормалей по горизонтали, на нем будет много информации (скосы между досками как раз и отклоняются влево или вправо). Зеленый же канал показывает искажения по вертикали. Виртуальные плоскости не отклоняются вверх или вниз, поэтому затемнений и информации на нормале в этом канале почти нет:
Зелёный и красный канал нормала на примере бочки
Красный и зеленый каналы — основные для моделлеров. Но у нормала есть еще и синий канал. Он имитирует углубления в объекте, но в играх практически не используется. За счет изменения синего цвета на нормале создаются искажения на плоской поверхности. Если из-за синего канала на модели артефакты, мы можем просто выключить этот канал, он нам не нужен.
Синий канал нормала
Если после запечки есть артефакты, нормал нужно править руками. Иногда это делают сразу на всех трёх каналах, а иногда — на одном из них.

128х128х255 — нейтральный цвет нормала.

Если добавить полностью нейтральный нормал — особой разницы видно не будет. Модель будет шейдить так же, как обычная low poly.
В каком формате лучше хранить нормал?

После запечки часто приходится вносить изменения в нормал при помощи Фотошопа. Поэтому файл лучше сохранять в форматах Targa или TIF. При сохранении есть выбор, сохранять в 24 или 32 bit. Если есть Альфа-канал — сохраняем с 32 bit. Если Альфа-канала нет — в 24 bit.


2. Карта АО
Пример карты АО
Ambient occlusion (AO) — это карта затенения. Она показывает самые глубокие тени в объекте — в основном в углублениях и на пересечениях. Эту карту используют в игровых движках для создания корректного освещения и в текстурировании.

Например, без АО почти нереально сделать грязь. Но с картой АО мы легко сгенерируем маску углублений, чтобы забить их грязью.
Если добавить на low poly модель карту АО, на модели появятся самые глубокие тени
Так же как и нормал, карта АО печется на развертку модели из high poly и скульпта.
Карта AO создаётся из high poly и скульпта
По-умолчанию карта черно-белая, но на этапе текстурирования ее можно покрасить.


3. Карта Color ID
Пример Color ID
Наша модель молота состоит из разных материалов: металла, камня, дерева и ткани.
Во время текстурирования нам нужно быстро выделять геометрию, которую мы хотим затекстурить. Чтобы это сделать в один клик внутри Substance Painter, нужно запечь карту Color ID. Она поможет выделять большие куски модели. Это поможет легко затекстурить выбранную группу объектов.

С помощью Color ID красим модель в разные цвета

Чтобы создать карту Color ID, нужно покрасить high poly модель в разные цвета. Один цвет — это одна группа объектов разбитая по материалам. Например, все дерево на Color ID — оранжевое, вся кожа — розовая, ржавый металл — синий, шерсть — голубая, а новый металл — зеленый.

Color ID — не цвета будущей модели, эта карта нужна для разделения на разные материалы.


Дополнительные карты

Много дополнительных карт для запечки есть в Marmoset, а еще там можно печь цвета и материалы с других моделей и текстур, чтобы не переделывать с нуля. Но сейчас гораздо проще печь дополнительные карты прямо в Substance Painter.

Список карт, которые можно запечь

Дополнительные карты в Substance Painter
В Substance Painter в один клик можно из нормала и AO сделать идеальные карты для своих алгоритмов. Они откалиброваны и с ними без проблем работают генераторы и фильтры.
Если ты интересовался какой софт лучше использовать для запечки — это не важно. Принцип запечки во всех программах одинаковый. Просто выбирай, что больше нравится: Maya, Blender, 3D Max, Modo или Cinema 4D.


Как сделать самую быструю в мире запечку?

Шаг 1: Открываем Marmoset.
Шаг 2: Загружаем low poly и high poly, добавляем их в одну группу запечки (Baker).
Шаг 3: Нажимаем кнопку «Bake».

Когда карта будет готова, открываем Maya, добавляем на low poly карту нормалей.
Получается такой результат:
Самая быстрая запечка
Но посмотри сюда:
Странные пятна на картинке — артефакты. Замазать их в Photoshop не просто, потому лучше перепечь модель
Артефакты появились по целому ряду причин. Где-то low poly и high poly плохо совпадают. Где-то элементы запеклись друг на друга. Где-то кейдж недостаточно большой. Единственный способ исправить ситуацию — переделать модель.


Что делать, чтобы на модели не было артефактов

1. Правильно подготовить low poly к запечке

Для этого мы следим за шейдингом модели. Вот пример плохого и хорошего шейдинга:
Шейдинг у левой книги — плохой и никогда не запечётся. А с правой книгой всё окей.
Секрет хорошего шейдинга — в правильной работе с хардами и софтами:

  1. Если угол 90 градусов — ставим хард.
  2. Если угол меньше 90 градусов — ставим хард.
  3. Если угол больше 90 градусов — ставим софт. Даже если угол 91 градус, ставим софт.
Так выглядит софт эдж
Есть нюанс: если начал делать луп хардами, нужно продолжать хардами по всей его длине, иначе появятся артефакты:
Вся окружность из хардов
2. Убирать зазоры между геометрией

Следим, чтобы не было дырок между геометрией:

В таких местах нужно слегка притопить геометрию внутрь другой

3. Триангулировать модель

Проверив всю low poly модель, обязательно включаем функцию триангуляции.
Если не триангулировать модель перед запечкой — в разном софте она будет смотреться по-разному.

Что учитывать на high poly?

Шейдинг

Если high poly шейдит некрасиво — дорабатываем геометрию. С high poly вся детализация будет переноситься на low poly.
Нормальный шейдинг
Фаски

Следи, чтобы фаски не были тонкими, иначе они не запекутся. Вот пример хороших и тонких фасок:
Скосы

Скошенная геометрия лучше печется на плоскости. А геометрия без скосов не печется совсем.
Сделали угол скошенный, а не 90 градусов, потому что алгоритму запечки проще работать со скосами
Вот пример того, как можно скосить геометрию и повысить выразительность:
Флоатеры

Крутой лайфхак в мире моделлеров — парящая геометрия.
Такая форма шейдит как единое целое
Но вшивать эти цилиндры в крест — то ещё удовольствие. Поэтому мы их ставим поверх модели.
Геометрия висит в воздухе. Такую проще моделить, и она хорошо печется на нормал.
Проверяем, совпадают ли high poly и low poly

High poly и low poly должны максимально совпадать. Вот пример, когда они не совпадают:
Чтобы увидеть места, где high poly и low poly не совпадают, покрасим high poly в яркий контрастный цвет, а low poly — в белый:
Затем проверяем, совпадают ли фаски. Для этого назначаем на low poly бликующий материал и делаем его прозрачным.


Что делать перед тем, как начать запечку

Мы уже подготовили low poly, high poly и развертку к запечке. Но прежде чем нажимать волшебную кнопку, нужно выполнить еще три простых действия, которые помогут в дальнейшем.

Нейминг

Правильный нейминг сэкономит гору времени во время работы с группами запечки — лишний мусор не будет мешать при работе. Проверяем, совпадает ли нейминг внутри группы low poly с неймингом внутри high poly.

Например:

lowpoly -> barrel
sculpt -> zbrush_barrel
highpoly -> high_barrel

Удаляем мусор

В Maya есть полезная функция File → Optimize Scene Size, которая удаляет из сцены мусор, который нигде не используется. Лишние слои, материалы и пустые группы.

Backup

Backup похож на резервное копирование, он поможет не потерять проделанную работу. Во время запечки иногда приходится править часть геометрии. Где-то добавятся фаски, где-то поддержки, и так далее. Поэтому может начаться настоящий хаос, если не сохранить исходник модели.

Перед запечкой создаем отдельную папку «Bake» и сохраняем туда бэкап исходного файла до начала запечки — на всякий случай.


Подготовка сцены в Marmoset

Ставим более высокое разрешение

Прежде чем делать запечку, указываем какого размера будут карты. Ставим разрешение карт в 2 раза выше, чем будет у финальной модели. Так часто делают в продакшене, так как текстура в 2к уменьшенная до 1к и выглядит лучше, чем текстура, сделанная сразу в 1к.
Ставим разрешение у карт в два раза выше
Указываем, что нужно запечь Normal, AO, Material ID (=Color ID) и выбираем папку в которую программа будет сохранять карты.

Как избежать артефактов

1. Разнести модель (Explode)

Резнести модель — это перенесение элементов в разные стороны, чтобы геометрия не пересекалась.
Разносим элементы модели в разные стороны
Представь, что мы делаем Explode в Maya прямо в файле с финальной сценой. После разноса элементов и запечки, детали нужно собрать обратно. Это занимает время, потому всегда нужно хранить бэкап.

2. Использовать группы запечки

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

Разные элементы модели

Первая группа — объекты, которые не пересекаются.
Пример одной из групп запечки
Такие группы называют «группами запечки». Вот еще два примера групп запечки:
Ещё две группы запечки
Группы запечки неудобно создавать с хаотичным неймингом, поэтому еще до открытия Marmoset мы проверяем совпадают ли имена у всех групп внутри low poly и high poly. А после создаем группу запечки и просто перетаскиваем туда одинаковые элементы с low poly и high poly.

Cage

Когда мы выбираем одну из групп запечки — вокруг объектов появляется поле поиска high poly, которое называется Cage. Это полупрозрачная область, которая оборачивает элементы выбранной группы.
Полупрозрачная зона, которая слегка выходит за пределы модели — это Cage
Размер кейджа можно изменить:
Cage определяет зону модели, которая будет запекаться. Все, что не попадает в кейдж, не запечется.
В этих местах кейдж не полностью закрывал high poly и потому плохо запеклась бочка
Нюансы при работе с Cage:

1. В этом примере, если немного увеличить cage — артефакты пропадут:
2. Даже если полигоны не пересекаются, но пересекается область кейджа, будут артефакты:
В Marmoset удобный Cage и Paint Skew, так работать с запечкой проще.

Запечка карт

Наконец нажимаем на кнопку «Bake». В папке появятся готовые PSD файлы. Дальше они загружаются в Painter и начинается этап текстурирования.


Исправление косяков после запечки

Даже если сделать все, как мы написали, все равно могут появиться артефакты. Это связано со сложностью процесса запечки. У нормала есть 2 разных алгоритма работы: Geometry Normal и Surface Normal. У того и другого свои сильные и слабые стороны. Для примера мы запекли одну и ту же геометрию с помощью Geometry и Surface Normal.
Посмотрите на фаску и на то, как запеклась окружность
В первом случае у нас хорошо запеклась фаска, но окружность стала овалом.
С Surface Normal все наоборот.

  1. Geometry Normal
Перепекли и обновили UV шеллы
Особенность алгоритма: печет так, как будто везде софты.
Плюсы: хорошо печёт фаски и швы.
Минусы: окружности немного растягиваются.

2. Surface Normal

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

Для хорошей запечки мы можем использовать оба алгоритма

В Marmoset можно использовать сильные стороны обоих алгоритмов нормала с помощью функции Paint Skew.
Функция Paint Skew в Marmoset
Углубление исказилось при запечке и стало овальным. Мы используем другой алгоритм нормала, чтобы пересчитать ее. Для этого выделяем область и используем функцию Paint Skew, чтобы получить ровный вырез, как в исходной модели.
Исправляем артефакты в Photoshop

Два вида нормала — хорошо, но и они не панацея.
Иногда на модели оказываются косяки, с которыми не справиться в мармосете. В этом случае можно перезапечь кусок модели и подмешать ее на карту в фотошопе.

Мы хотим исправить артефакт:
Самый простой способ:

— Открыть модель в Maya и экспортировать только этот элемент;
— Заново запечь его;
— Затем подмазать детали в Photoshop.

Для этого используем кисточки, маски, clone stamp и пластырь. После дорабатываем руками проблемные места, если другие способы не помогают.
Если все совсем плохо — полностью переделываем геометрию.


Что делать с картами после запечки

Загружаем карты в Substance Painter:
Загрузка карт в Substance Painter
Затем запекаем дополнительные карты: World Space Normal, Curvature, Position и Thickness. Их проще запекать внутриSubstance Painter. Эти карты создаем на основе нашего нормала, АО и Color ID, поэтому их наличие обязательно.

Запекаем дополнительные текстурные карты

А запекаются они нажатием на одну кнопку.
Что дальше

Если хочешь освоить весь пайплайн и научиться моделить в 3D, присмотрись к нашему курсу Draft Punk. Ты поймешь, как устроен пайплайн разработки 3D-моделей в больших игровых студиях. Научишься создавать выразительные драфты. Разберешься с топологией, high poly, low poly, разверткой и запечкой. А в конце создашь полноценную 3D-модель по всем правилам пайплайна. Полученных знаний хватит, чтобы работать на фрилансе или джуном в студии.

Вот что получилось у наших студентов после курса Draft Punk:
Если тебе интересны другие этапы пайплайна — переходи к следующей статье. 1 статья = 1 этап пайплайна, с уроками и примерами. Выбирай тему, с которой хочешь разобраться:

1. ААА-пайплайн
2. Драфт
3. Сетка
4. Развертка
5. Запечка
ВСЕ ПРОЧИТАЛ? ПЕРЕХОДИ К ПРАКТИКЕ!
Освой пайплайн и научись создавать 3D-модели на курсе Draft Punk
СМОТРЕТЬ ПРОГРАММУ
Понравилась статья?
ХОЧЕШЬ ПОЛУЧАТЬ ЛУЧШИЕ СТАТЬИ
ОТ XYZ РАЗ В НЕДЕЛЮ?
Подпишись на рассылку XYZ
Нажимая на кнопку, вы соглашаетесь с условиями обработки данных