Перейти к содержимому

Запекание текстур что это

  • автор:

Большая идея: «Запекание»

baking

«Запекание» представляет собой часто используемый термин в компьютерной графике (CG) когда речь идет о разработке компьютерных игр и традиционном рендеринге, не в режиме реального времени (Cycles или Blender Render). Но «запекание» приносит с собой определенные коннотации в реальный мир, которые вводят в заблуждение. Моя цель в этой статье состоит в том, чтобы согласовать этот термин и уточнить, что на самом деле означает запекание.

Различные типы запекания

Существует несколько различных видов запекания. Но прежде чем я начну перечислять и обсуждать их, хочу предложить общее резюме термина, то как оно относится к CG. Думайте о запекании, как о консолидации системы данных в упрощенной, более постоянной форме. Эта концепция обычно применяется тремя способами:

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

Наиболее распространенным способом является запекание текстур (или карта запекания). Преимущество запекания текстуры заключается в способности перенести характеристики 3D-геометрии на 2D-изображение.

Существует много признаков, которые могут быть запеченны, от изолированных атрибутов (Ambient Occlusion, нормали, цвета вершин, и т.д.) до их комбинаций, включая материалы, текстуры и освещение запеченные в одну текстуру. На изображенный ниже приведен пример последнего:

baking-2

И это очень здорово! Сложные материалы и комплексное освещение могут быть объединены в одной текстуре и это является отличным трюком. Вы, наверное, можете себе представить насколько полезным является этот метод для игр и других приложений реального времени. Но важно понимать, что это ограниченная статичная текстура, не динамическая. Другими словами, если вы переместите голову обезьянки, то тень от нее останется в том же месте, где и была, вместо того, чтобы обновляться в режиме реального времени, как это происходит во время рендеринга в окне 3D-вида с помощью движка рендеринга Cycles. Таким образом, данная методика ограничена, хотя и чрезвычайно полезна при грамотном использовании.

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

baking-4

Наконец, запекание некоторых атрибутов может помочь в процессе разукрашивания текстуры. Например, вместо того, чтобы вручную рисовать темные области в щелях объекта, вы можете запечь текстуру окружающей окклюзии (AO) и она все сделает за вас. Точно также, если вы хотите создать эффект потертости на краях объекта, можно запечь текстуру цветов вершин (dirty vertex colors). И таких примеров еще можно привести огромное количество.

2. Запекание анимации / симуляции

Та же идея консолидации системы данных в упрощенной форме продолжается в анимации и симуляции. Если подумать о ключевых кадрах анимации персонажа, то существует огромное количество работы, которую должен выполнить компьютер, чтобы мы в итоге могли увидеть результат. Риг персонажа со всей своей иерархией, ограничителями и деформациями мешей вместе с сотнями или даже тысячами ключевых кадров, каждый из которых имеет собственный тип интерполяции. Это очень много работы.

Существует несколько способов упростить все это с помощью запекания. Во-первых, в Blender вы можете выполнить операцию под названием «Bake Action». Это просто добавляет ключевой кадр для всех преобразований каждой кости для каждого кадра анимации. Хотя это может показаться «не особо то и проще», это, на самом деле, упрощает анимацию, так как она больше не зависит от ограничителей костей и других реляционных зависимостей. Bake Action также служит своеобразным «блокировщиком» анимации, что позволяет сохранить ее целостность.

Если пойти еще дальше, то анимация может быть запечена в геометрическую последовательность или «кэш», что окончательно избавляет нас от рига персонажа. Итак, представьте, что вы на 100% довольны своей анимацией и готовы перейти к следующей стадии, а именно стадии рендеринга. Очень удобно избавиться от ненужных расчетов комплексного рига в обмен на чистую последовательность геометрии. Таким образом, ваша сцена не загромождена тоннами ключевых кадров, которые никогда не будут изменены — потому что вы на 100% довольны результатом, не забывайте об этом. Вы можете просто сосредоточитесь на освещении и рендеринге анимированной геометрии, которая еще и будет немного быстрее проигрываться, так как компьютер не должен рассчитать все тонкости рига. В Blender это стало возможным с помощью экспорта кэша в формат .MDD и модификатора Mesh Cache.

baking-7

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

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

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

Целью в данном случае является сохранение ресурсов, поэтому игра должна работать настолько эффективно, насколько это возможно. Существует два типа освещения, которые могут использоваться для создания игр: статичное и динамическое. Динамическое освещение реагирует на все изменения в сцене, такие как смещение тени и информация о материале, на который они падают. Статичное освещение является стационарным и может быть исключено из расчетов динамического освещения для экономии ресурсов.

Мобильные и веб-игры часто используют запеченные карты света, которые предоставляют информацию об освещении всей сцены или конкретного уровня игры. Это означает, что вы можете создать хорошо освещенные места лишь за незначительную часть стоимости (ресурсов) динамического освещения. При запекании карт света, как статичное, так и динамическое освещения могут быть использованы одновременно, чтобы создать более реалистичную среду.

Unity использует систему светового зонда которая позволяет не статичному (анимированный или динамический) объекту получать информацию из запеченных карт света, что позволяет сэкономить ресурсы с их помощью при симуляции динамического освещения.

Можете просто и доходчиво объяснить, что такое UV, карты нормалей, запекание?

В общем, моделирую в blender, столкнулся с такими понятиями как «UV, карта нормалей, запекание текстур и т. п.» С UV-развёрткой ещё более менее понятно, UV-развёртку можно «разукрасить», а затем наложить на модель. С этим я работал. Но эти понятия «карты нормалей, какие-то ещё карты, запекание и т. п.» — они мне непонятны. Вообще сколько их этих карт? В одних источниках эти названия карт на английском, в других на русском из-за этого у меня создалось впечатление, что этих карт бессчётное количество. И отличаются ли эти карты в зависимости от 3D пакета? Может в 3D MAX свои карты, а в Blender свои? Но мне нужна информация именно про Blender.

Пожалуйста, максимально развёрнуто и понятно))))))

  • Вопрос задан более трёх лет назад
  • 31386 просмотров

Простой 5 комментариев

  • Facebook
  • Вконтакте
  • Twitter

Если знаете ответ — напишите))
А, так, да, я искал ответы, но говорю же везде какая-то несогласованность в названиях этих карт. Ну. если у вас совсем нет времени, напишите мне сколько всего этих карт существует и как их нужно называть, если вас не затруднит.

p. s. Я отблагодарю вас, когда стану миллиардером.

Для какого игрового движка контент создавать будешь? (Или не под движок?)
(для игр одно — это рендеринг в реальном времени и тут одни требования, для др. систем рендеринга другие требования)

Тебе надо разобраться с основными понятиями комп. графики. (модель\меш, полигон, вертекс, edge, топология, ретопология, нормали, RGBA, каналы, маски, альфа и др)
А вот когда с ними разберешься, можно посмотреть в сторону PBR (Physically-Based Rendering)(скорее всего контент «под него» будешь пилить)

«UV-развёртку можно «разукрасить», а затем наложить на модель.»
Всё не так, нужно разукрасить не UV-развёртку, а подготовить набор текстурных карт для наложения на модель.
Никому ведь модель только с одной диффузной текстурой не нужна

UV-map это проекция всех поверхностей 3d модели на плоскость (ведь сами текстуры то плоские)
Вспомни бумажные модели (например куба)
Вот такая развертка нужна чтобы построить куб из бумаги

eea39eb602f327149c839ec5d56302b4.jpg

А чтобы получить UV-развёртку куба, нужно не собрать куб, а разрезать и развернуть.

Запекание (запекать можно много какие карты — Normal Map, AO и др)

Normal Map Baking
Вот есть у тебя модель ботинка (полигонов очень много) и тебе нужно перенести детализацию подошвы с этой самой модели ботинка, на более простую модель ботинка. (кто у персонажа подошвы ботинок разглядывает? Там ведь много полигонов не нужно)
Ты запекаешь карту нормалей (Normal Map) и на ней создается изображение подошвы. (Информация перешла с высокополигональной модели на карту нормалей) затем ты накладываешь её на простую модель ботинка и вуаля!
На почти плоской подошве появился псевдо рельеф
Освещение в движке реагирует на эту самую Normal Map и создает видимость рельефа, для наблюдателя. Смотришь и кажется что подошва богата на детали!
И так поступают со всей моделью.

«И отличаются ли эти карты в зависимости от 3D пакета? Может в 3D MAX свои карты, а в Blender свои?» — нет ничем не отличаются. Все подобные крупные 3d пакеты похожи и не уступают друг другу.
Но ты должен понимать что существуют специальное ПО для работы с текстурами. (MARI, Substance Painter и мн. д)
(обойтись естественно можно и без них, но новичку будет одинаково сложно что с ними, что без них)

«В одних источниках эти названия карт на английском, в других на русском» (там всё намного веселей!)
Введи в поисковик «Texture map terminology confusion»

Ищи статьи на русском где используется не перевод, а написание английских слов русскими буквами или просто где названия карт не переводятся.
Ни в коем случае не русифицируй свои программы (так ты всё только испортишь)

В зависимости от модели, от игрового движка или системы рендеринга тебе будут нужны разные «наборы» текстурных карт.
В движках есть редактор материалов и он может намекнуть какие текстурки он «кушает»

5a0ed3d153d39855990575.png

(именно в этом редакторе там где написано Bump map пихают Normal map)

Вот карты для «старого метода» (Для PBR используются некоторые другие карты и «парочка» карт отсюда — например Normal map)

Diffuse maps — это просто текстура цвета объекта (без бликов и проч)
Normal map — уже написал про неё (псевдо рельеф)
Specular map – влияет на способность отражения материала (карта бликов)
Glossiness\gloss map — эта текстура отвечает насколько размыты будут отражения
Ambient occlusion map\AO map — эта текстура создаёт мягкое затенение модели (прямо на неё не направлен источник света)

5a0e671082a59675942102.jpeg

— определяет где расположены «светяшки» на модели (собственно сама маска и есть Emissive map) — если у тебя святяшек нет на модели, то и карта эта не нужна.
Displacement map — одна из многочисленных карт высот (выдавливает реальный рельеф на модели) — например морщины на лице можно «выдавить»

Текстурных карт очень много и про остальные нет смысла писать. (Про PBR тем более)

«Но мне нужна информация именно про Blender»
Тысячи видео на многих языках мира, сотни страниц из статей и книг к твоим услугам!
(Чтобы видео смотреть и понимать логику работы в программе, не нужно знать английский\японский\хинди — я например смотрел уроки на итальянском! И иногда слышал знакомые слова)
Это касается не только блендера.

p.s
Помни о правиле 80\20 (80% практика, 20% теория) если наоборот значит всё будет плохо. Утонешь в теории (ты не знаешь как к ней правильно подступиться)

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

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

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

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

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

Взглянем на low poly модель нашего студента.

Минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.

Есть ещё high 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 модели — будет куча проблем с артефактами.

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

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

Из-за того, что игрок видит модель в игре на расстоянии, нам не нужно тратить несколько часов, чтобы убрать черные полоски на нормале:

Normal map создает иллюзию объема из-за трех карт в каналах текстуры: красной, зеленой, синей. Чтобы переключаться между каналами, откроем файл с нормалом в Photoshop и зайдем во вкладку Channels.

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

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

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

В каком формате лучше хранить нормал?

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

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

Например, без АО почти нереально сделать грязь. Но с картой АО мы легко сгенерируем маску углублений, чтобы забить их грязью.

По-умолчанию карта черно-белая, но на этапе текстурирования ее можно покрасить.

3. Карта Color ID

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

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

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

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

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

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

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

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

Когда карта будет готова, открываем Maya, добавляем на low poly карту нормалей.
Получается такой результат:

Артефакты появились по целому ряду причин. Где-то 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.

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

Скошенная геометрия лучше печется на плоскости. А геометрия без скосов не печется совсем.

Крутой лайфхак в мире моделлеров — парящая геометрия.

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

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

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

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

Прежде чем делать запечку, указываем какого размера будут карты. Ставим разрешение карт в 2 раза выше, чем будет у финальной модели. Так часто делают в продакшене, так как текстура в 2к уменьшенная до 1к и выглядит лучше, чем текстура, сделанная сразу в 1к.

Что такое запекание текстур

Разбираем одно из ключевых понятий в 3D-моделировании и все основные операции, связанные с ним.

Скриншот: Damon Woods / ArtStation / Skillbox Media

Леон Балбери

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

Почему процесс называют запеканием

Термин «запекание» или «запечка» — буквальный перевод с английского слова baking. В контексте 3D-моделирования под этим подразумевается перенос комплексных данных в статичную форму. В данном случае — в текстурные карты. Эти текстуры формируют поверхность будущего материала.

Причины, по которым запекают текстуры

1. Создание уникальных материалов. В качестве основы может быть как фото, так и изображение, нарисованное вручную или созданное процедурным методом с помощью нодов. Художник запекает набор текстурных карт, свойства которых зависят от того, как должен выглядеть итоговый материал после экспорта в игровые движки или системы рендеринга. Также в процессе запекания текстуры можно спроецировать на готовую UV-развёртку модели.

2. Запекание упрощает рендеринг в реальном времени, так как игровой движок должен просчитать все тени, освещение и полигоны в каждом кадре. Запечённые текстуры уже содержат в себе информацию об отражении, освещении, объёме и прочих свойствах объекта, которые создают ощущение реализма.

3. Когда художник продаёт или делает на заказ модель с использованием PBR-материалов , загруженных с какого-либо ресурса, он рискует нарушить авторское право. Например, на большинство бесплатных материалов портала BlenderKit распространена лицензия Royalty Free, согласно которой пользователь может использовать загруженный контент в своих работах в коммерческих целях, но не в первозданном виде. И в этом случае запекание текстур помогает художнику избежать неприятностей при использовании лицензированного контента: у будущего покупателя не будет доступа к исходникам. Вместо этого он получит наборы текстур, содержащие лишь фрагменты сторонних материалов.

4. В игровые движки и системы рендеринга нерационально загружать модели, содержащие несколько миллионов полигонов. В целях оптимизации и экономии ресурсов создаётся low-poly-версия high-poly-модели, а все мелкие детали переносятся в виде текстурных карт.

Какие текстуры запекают

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

Текстуры, которые чаще всего используют в работе

Diffuse Map / BaseColor Map (Albedo/Color Map) — основная карта, которая определяет цвет и изображение поверхности меша. Исходя из названия, несложно сделать вывод, что у этой текстуры множество названий. Пользователи часто считают их синонимами, ведь данный тип карт обычно подключают в один и тот же слот шейдеров. Однако диффуз-карта и карта альбедо отличаются друг от друга как визуально, так и по свойствам. Поэтому начинающие 3D-художники часто путают понятия, когда речь заходит о создании базовой текстуры. В чём же отличие?

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

В последние годы художники часто используют PBR-материалы с картой альбедо в качестве основы. По сравнению с диффуз-текстурой она достаточно блёклая: на изображении отсутствуют затенения и яркие участки, но остаётся информация о цвете будущего материала. Все расчёты по освещению выполняет движок или система рендеринга в сочетании с картой Ambient Occlusion, речь о которой пойдёт ниже. Из-за этого поверхность объекта выглядит более яркой и естественной.

Normal Map — карта нормалей с информацией о направлении каждого пикселя. Визуально она выглядит как цветная текстура с RGB-каналами. Красный отвечает за направление по оси X, зелёный — за ось Y и, соответственно, синий — за ось Z («выдавливает» нормали из поверхности). В зависимости от направления света в сцене карта нормалей придаёт объекту рельеф, создавая иллюзию высокополигональной модели. Форму рельефа можно отрегулировать, настроив RGB-каналы вручную.

Примечание

Bump Map — более ранняя версия карты нормалей. Это 8-битная карта, поддерживающая оттенки белой, чёрной и серой гаммы. При сером пространстве поверхность остается неизменной. Белый цвет создает имитацию выпуклых деталей, а чёрный, наоборот, «вдавливает» их внутрь. Тем не менее в некоторых системах шейдеров всё ещё существует поддержка Bump Map, и вместо неё можно подключить современную Normal Map.

Displacement Map — карта смещения, которая добавляет поверхности объём и эффект глубины. В отличие от Normal Map и Bump Map она не просто создает иллюзию объёма от освещения, но и смещает геометрию объекта, в результате чего он приобретает видимый объём.

Примечание

Height/Parallax Map — карта высот/параллакса — аналог Displacement Map. Она тоже создаёт эффект рельефа, выходящего за пределы меша. Карту высот часто используют для текстурирования ландшафта, так как её свойства изменяют высоту вершин. За счёт этого некоторые участки меша визуально кажутся выше, чем другие, в зависимости от того, с какого ракурса зритель или игрок смотрит на текстурированную поверхность.

AO (Ambient Occlusion) Map — текстура, придающая мягкое затенение поверхности объекта, как при рассеянном освещении в облачную погоду. Она содержит данные о том, какие участки текстуры будут меньше или больше освещаться. Ambient Occlusion влияет только на диффузные (не зеркальные) отражения поверхности и зависит от общего света окружения, а не от отдельных источников.

Примечание

Сейчас многие игровые движки поддерживают эффект Ambient Occlusion в реальном времени. Эта техника известна как SSAO (Screen-Space Ambient Occlusion).

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

Glossiness Map — карта глянцевитости (не блеска), которая используется в сочетании с картой Specular. Она определяет, какие области поверхности дают больше глянца, а какие — меньше, в зависимости от интенсивности цветов карты. Чёрные области текстуры создают полный глянец, белые убирают его, а серые дают промежуточное значение свойства.

Metallic Map — альтернатива карте Specular, указанной выше. Эта чёрно-белая текстура работает как маска основной карты и сообщает системе рендеринга, какие участки поверхности объекта металлические, а какие — нет.

Roughness Map — карта шероховатости, которая идёт в сочетании с Metallic Map. Прямая противоположность карты глянцевитости, поэтому текстура инвертирована.

Примечание

Существует два подхода к текстурированию металлов PBR-материалами — Diffuse/Specular/Glossiness и Albedo/Metallic/Roughness.

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

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

Если все условия соблюдены, итоговый результат обоих подходов будет практически неотличим. Но стоит учитывать, что в этом случае Specular-подход потребует больше производительности из-за наличия цвета в карте отражений, и художнику придётся больше работать над покраской текстур, чтобы достичь нужного эффекта реализма.

Подробное объяснение различий подходов Specular и Metallic

В отличие от реалистичной графики стилизация не так требовательна к реализму. Поэтому в рамках стилизованных проектов набор текстур зависит от специфики общего визуала. Часто встречаются случаи, когда художнику не требуется ни одна из карт, озвученных выше, кроме Diffuse, так как материалам не нужно ни отражение, ни рельеф, ни тени — все эти свойства уже присутствуют в базовой текстуре за счёт ручной рисовки или других художественных техник.

Текстуры с побочными свойствами

Emissive/Emission Map — цветная карта для имитации излучения света материалом. Цветные участки соответствуют цвету излучения. В зависимости от настроек шейдеров в ПО, поверхность объекта может просто светиться изнутри или стать полноценным источником света.

Curvature/Concavity/Convexity Map — карта кривизны в серых тонах, которая содержит информацию о выпуклых (белый цвет) и вогнутых (тёмно-серый цвет) участках. Нейтральные области отмечены серым цветом. Чаще всего используется в качестве маски, когда нужно подчеркнуть мелкие трещины, изношенность, щели и швы, в которых скопилась грязь.

Opacity/Transparency/Alpha Map — чёрно-белая карта (иногда с оттенками серого), определяющая непрозрачность текстуры. Чёрный цвет — прозрачные участки, белый — непрозрачные. Чаще всего используется для текстурирования решёток, растительности и волос.

Transfluency Map — цветная карта прозрачности. Внешне похожа на диффуз-карту, но её оттенок более яркий. Свойство прозрачности позволяет источникам света пропускать сквозь материал часть лучей. Transfluency Map используют в работе, когда нужно подчеркнуть реализм в сценах, где лучи солнца или яркого фонаря просвечивают листья деревьев, лепестки цветов, ткани и другие тонкие меши. Цветную карту прозрачности сочетают с картой Opacity для определения границ эффекта от текстуры.

Визуализация кленового листа со свойством прозрачности

Color (ID) Map — техническая цветовая карта (не путать с Color Map / Albedo Map), которая упрощает дальнейшую работу по раскраске или наложению текстур сложных объектов. Для этого модель разделяют на логические части и за каждой закрепляют материал с определённым цветом. Например, бежевый — для тела, коричневый — для одежды и так далее. Подобная разметка помогает быстро распределить все необходимые материалы по текстурному пространству и подготовить основную карту.

Пример запекания цветовой карты в Blender

Примечание

Как и прочие ситуативные карты, перечисленные выше, текстуру Color ID запекать необязательно. Тем не менее она значительно упрощает процесс текстурирования в Substance Painter и аналогичных программах.

На что обращать внимание при запекании текстур

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

Перед запечкой необходимо подготовить так называемый кейдж (от англ. cage) — продублированный меш low-poly-объекта. Кейдж должен максимально плотно прилегать к high-poly- и low-poly-моделям, но не пересекаться с их геометрией. Таким образом исходящие лучи при запекании будут отскакивать от кейджа и получать информацию о том, как преобразовывать мелкие детали high-poly-объекта в карту нормалей для low-poly.

Пример переноса деталей в Blender с использованием кейджа

Примечание

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

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

Чаще всего после запекания текстур на поверхности низкополигонального объекта образуются артефакты из-за отсутствия шва в местах жёстких рёбер, о которых мы упоминали в материале про UV-развёртку. В этом случае придётся либо переделать развёртку и отметить недостающие швы, либо смягчить углы с помощью специальных инструментов в программе для 3D-моделирования. Например, использование Фаски (Bevel) в Blender на краях высокополигональной модели помогает улучшить качество запекания.

Примечание

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

Ещё одна частая проблема — некорректное отображение нормалей в результате запекания. Полученный рельеф кажется либо слишком вдавленным, либо нечётким, либо его вообще нет. Это связано с тем, что лучи, исходящие от low-poly-объекта, не могут правильно считать информацию о рельефе high-poly-объекта из-за того, что его меш расположен слишком близко или слишком далеко. Эту проблему может исправить корректировка расстояния во время запекания.

С более подробным списком проблем, связанных с запеканием карт нормалей и их решением, можно ознакомиться в четвёртой части туториала This is normal от художника Карлоса Лемонса на ArtStation. На Habr размещён неофициальный перевод этой главы на русский язык.

Примечание

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

Презентация набора sci-fi альфа-кистей от художника Йонаса Роннегарда и их наложение на поверхность объекта

Полезные ссылки на материалы о запекании текстур

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

3ds Max:

    ; (канал Autodesk 3ds Max Learning Channel).

Maya:

    по компоновке UV-развёртки персонажа и запеканию текстур (канал TutorCG); по переносу деталей с high-poly на low-poly (канал Figura).

Blender:

    по UV-развёртке и запеканию текстур (сайт Brandon’s Drawings 2D/3D-художника Брэндона Стокинга); по запеканию нормалей с высокополигонального объекта на низкополигональный (канал Blender Guru); по запеканию разных деталей на одну карту (канал Ryan King Art).

Substance Painter:

    ; (канал Flipped Normals Marketplace).

Marmoset Toolbag:

    по запеканию деталей высокополигональной модели на низкополигональную; .

3DCoat:

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

Окончательный вид текстуры формируют технические карты — Normal, Specular, Ambient Occlusion и многие другие.

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

При переносе деталей high-poly-модели на low-poly необходимо проверить наличие швов на жёстких рёбрах, настроить правильную дистанцию между проецируемыми мешами и использовать кейдж.

Запекание текстур доступно во всех программах для 3D-моделирования, но сам процесс в каждой из них происходит по-разному. Выберите для себя самый оптимальный и понятный инструмент, внимательно изучите его и приступайте к освоению «кулинарных» навыков в 3D.

Материалы, обеспечивающие физически корректный рендеринг в соответствии с тем, как они взаимодействуют со светом (что зависит от их свойств).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *