{"id":3881,"url":"\/distributions\/3881\/click?bit=1&hash=e456b64697230d93edcda0dd20f3c8aa5d4abd88effca1a7571a12fa6564c38a","title":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432-\u043a\u043e\u043d\u043a\u0443\u0440\u0441, \u0433\u0434\u0435 \u043f\u0440\u0438\u0437\u044b: \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435","buttonText":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c","imageUuid":"a410dbd1-804c-54dc-84ea-e6227d71d9b4","isPaidAndBannersEnabled":false}
ArtCraft School

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0
Комментарии
Читать все 0 комментариев
null