Гайд по бейкингу. Важная теория: часть 1

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

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

Есть несколько видов запекания: запекание текстур, запекание света и запекание анимаций или симуляций. Сперва мы кратко пройдемся по особенностям каждого типа, а затем подробно разберемся с запеканием текстур.

Запекание света

Используется преимущественно в игровых проектах. Освещение в играх бывает двух типов: статичным и динамичным.

Гайд по бейкингу. Важная теория: часть 1

Статичный свет не реагирует на все изменения в сцене: перемещение геометрии, изменения яркости, движение теней и так далее. Этот подход позволяет оптимизировать нагрузку на ПК пользователя, но требует постоянного перепросчета света и теней после изменения расположения объектов в сцене.

Статичное освещение, наоборот, не учитывает изменения в сцене, но позволяет уменьшить время просчета.

Свет обычно запекается при использовании статичной модели освещения. Так получается сцена, где все тени зафиксированы и, если мы закроем каким-то объектом висящую в комнате лампочку, освещенность сцены никак не поменяется. И движок не станет перепросчитывать тени, если мы передвинем какой-то объект.

В современных играх обычно комбинируют статичное и динамичное освещение.
В современных играх обычно комбинируют статичное и динамичное освещение.

Запекание анимаций и симуляций

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

Для современных пк это не проблема, но если таких тканей в сцене будет не одна, а десять? Или сто? А ведь всё должно просчитываться в реальном времени, пока игрок бегает вокруг и рассматривает сцену.

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

Запекание текстур

Сперва может показаться, что текстуры очень простые по своей сути. Одна карта со всей информацией, и «Вжух!» — модель стала красивой.

Но начнем с того, что текстура не одна. От проекта к проекту количество текстур и требования к ним могут значительно отличаться, но суть остается едина — для корректного отображения материала на объекте одного цвета недостаточно.

В геймдеве модели разделяют на разные типы в зависимости от уровня детализации. Объекты, геометрия которых содержит только нужные для детального силуэта полигоны, называется low poly. А геометрия, полигоны которой повторяют параметры поверхности вплоть до самых маленьких элементов, называется высокополигональной (high poly).

Техническое различие заключается в том, что игровая модель (низкополигональная модель, которая используется в играх) оптимизирована под использование в движках с рендерингом в реальном времени, потому как количество треугольников в ней ограничено. А high poly при текущих технологиях невозможно использовать для создания подобных проектов, потому что количество треугольников в одной модели может достигать нескольких миллионов, что сильно увеличивает время просчета сцены.

Для оптимизации количества вычислений и ускорения прорисовки игровых сцен используются карты нормалей. Эти карты позволяют «скопировать» детали с хайполи на лоуполи, не превышая оптимального количества треугольников

Гайд по бейкингу. Важная теория: часть 1

Иногда разработчики запекают свет, тени и блики в цветовую текстуру объекта. Например, для формирования уникального стиля игры или для оптимизации просчетов.

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

Какие бывают карты и чем они отличаются

Условно, их можно поделить на два типа:

  • Для финального использования в движке;
  • Нужные на этапе текстурирования.

К первым относятся разные типы normal map, displacement map и иногда карта ambient occlusion. Они нужны для корректного отображения модели в движке. Чтобы углы были сглажены, впадины затемнены, а в случае с картой высот — геометрия смещена с нужной интенсивностью и в нужном направлении.

Ко вторым — ID map, Curvature map, Ambient occlusion map, Position map, World Space Normal, Thickness map и некоторые другие.

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

Подробнее о каждой из них мы поговорим позже. А в следующей статье — еще больше углубимся в теорию и начнем разбираться в картах нормалей. Stay tuned.

1414
Начать дискуссию