Для чего нужна карта curvature
Запечка (bake) стилизованного персонажа
Привет! Мы продолжаем цикл статей по пайплайну разработки стилизованных персонажей.
Сегодня ты узнаешь, как устроен четвёртый этап ААА-пайплайна — запечка (bake), на примере нашей модели.
Что такое запечка
Этап запекания (bake) — полностью технический этап ААА-пайплайна, цель которого заключается в переносе детализации с хайполи модели на лоуполи с помощью специальных карт.
Для запекания карты необходимо загрузить хайполи и лоуполи-модель в любую программу для 3D-моделирования или специальную программу для запечки.
Все эти карты необходимы для следующего этапа — текстурирования.
Когда мы добавим эти карты к лоуполи-модели, они перенесут дополнительную детализацию, взятую с хайполи модели.
Каждая запечённая карта содержит определённую информацию о хайполи-модели. Это может быть информация о нормалях, глубинах и высотах, цветах и других параметрах.
Наиболее полезны эти карты:
— Normal Map
— Normal (Object)
— AO (Ambient Occlusion)
— Curvature
— Vertex Color (Color ID)
Прошлая статья про запечку описывала теорию этого этапа и процесс переноса детализации. Сегодня мы сфокусируемся на практике и особенностях именно стилизованных персонажей.
Для запечки необходимо иметь:
Ключевая мысль этой статьи
Процесс «запечки» написан на очень сложных и чувствительных алгоритмах.
У этих алгоритмов есть целый ряд требований к модели. А любая ошибка приводит к артефактам, которые могут испортить всю проделанную работу.
Секрет простой и успешной запечки кроется в том, чтобы на всех предыдущих этапах пайплайна учитывать особенности этого процесса.
Зная особенности алгоритмов запечки, мы поставили персонажа в позу, при которой не пересекается геометрия, а также правильно расставили хард и софт эджи.
Если ты следовал нашим рекомендациям в прошлых статьях, этап запечки будет крайне простым. В твоих руках — готовый алгоритм по полному циклу создания стилизованных персонажей.
Подготовка хайполи под бейк
Ранее, когда мы показывали процесс скульптинга, сразу перед началом ретопологии, мы совершили два простых действия в ZBrush:
1. Прижали геометрию
Всё про Bake (Запечку) как этап ААА-пайплайна
Привет! Мы продолжаем цикл статей по пайплайну разработки стилизованных персонажей. Сегодня расскажем, что такое этап запечки, и как перенести детализацию с высокополигональной модели (high poly) на низкополигональную (low poly).
Запечка (Bake) — четвёртый этап ААА-пайплайна. На прошлом мы сделали развёртку, а сейчас будем её использовать для создания Normal Map, AO и Color ID.
Примечание: нам часто говорят, что правильнее писать «запекание», а не «запечка». Мы пишем «запечка», потому что это устоявшийся термин в индустрии.
Гугл на слово запечка показывает то, что нам нужно, а на слово запекание предлагает запечь курочку
Что такое запечка
Взглянем на low poly модель, которую сделал наш студент Leon.
Низкополигональная модель, созданная на этапе ретопологии
В ней минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.
Есть ещё high poly модель с высокой детализацией и скульпт.
Хайполи модели под сабдив и скульпт
Технология запечки позволяет нам перенести все детали с high poly и скульпта на low poly-модель.
В итоге, в игровом движке будет low poly модель с минимальным количеством полигонов, но выглядеть она будет так, как будто на ней есть все эти детали:
Для внимательных: ID Map никак не влияет на вид модели, в отличие от нормала и АО, но она пригодится при текстурировании, поэтому эту карту тоже будем печь.
Как это работает?
Мы берём low poly модель и добавляем на неё запечённые карты Нормала и АО. А эти карты обманывают поведение игрового света. Модель начинает бликовать так, как будто на ней есть все эти фаски, вырезы и прочие детали.
Для тех, кто не понимает, о чём речь: мы очень подробно писали про вертекс нормали и принцип работы нормала в статье про сетку.На этом этапе пайплайна — запечке, наша задача: запечь 3 карты.
1) Normal map — карту неровностей
2) Ambient Occlusion (AO) — карту затенения
3) Color ID — цветные маски
В Marmoset можно запечь гораздо больше карт, про это будет дальше.
Мы добавим эти карты на нашу low poly модель, на ней появится вся детализация с high poly и скульпта, а благодаря карте Color ID модель будет легче разбить по материалам и текстурировать.
Все карты создаются на основе развёртки, которую мы сделали на прошлом этапе пайплайна. Без развёртки карты не запекутся. Если есть ошибки на развёртке или low poly модели, то мы столкнёмся с кучей проблем.
Ссылки на теорию
Вот несколько наших статей, прочитав которые ты точно поймёшь, как работает «магический» трюк с обманом вертекс нормалей.
Какие карты будем печь
Нет смысла запекать карты, если не знаешь, что они делают и как работают.
1. Normal Map
Normal Map переводится как «карта нормалей»
Она изменяет направление блика на геометрии.
Карта создаёт виртуальные вертекс нормали в каждой точке low poly модели и искажает поведение света. Если наложить запечённый нормал на модель, то она будет выглядеть почти как high poly.
Вот хороший пример: low poly модель с включенным Нормалом и без него.
Модель с включенным нормалом и без него
Новые полигоны не создаются, это лишь иллюзия формы:
Приглядись, видишь low poly сетку? Все детали и затенения, которые ты видишь — иллюзия.
Чтобы создать нормал, нужно взять развёртку, которую мы делали ранее, взять high poly и скульпт, загрузить в программу для запечки и нажать кнопку «bake».
Там много нюансов, но мы обо всём расскажем.
Из чего печётся Normal map
Что нужно знать о Нормале
Небольшие чёрные полосы на нормале — это нормально.
Никто не будет разглядывать нашу модель под микроскопом.
Чёрные полоски на нормале
Почему не стоит сильно волноваться о чёрных полосах?
Игрок почти всегда видит модель в игре на расстоянии. Поэтому не нужно тратить несколько часов, чтобы убрать чёрные полоски на нормале:
Та же модель, но на расстоянии. Чёрные полосы не режут глаза, — значит, всё окей.
Из чего состоит карта нормалей
Normal map создает иллюзию объёма благодаря трем картам в каналах текстуры: красный, зелёный, синий.
Чтобы переключаться между каналами, откроем файл с нормалом в Photoshop и зайдём во вкладку Channels.
Красный канал показывает искажение вертекс нормалей по горизонтали. Чем светлее пятно на красном канале — тем сильнее виртуальная поверхность наклонена вправо, а чем темнее — тем больше «поверхность» бликует влево.
Красный канал нормала
Зелёный канал — работает так же, но искажает шейдинг по вертикали.
Светлый-блик поворачивается наверх, а тёмный — вниз.
Зелёный канал Нормала
Чтобы лучше понять разницу между этими двумя каналами, посмотрим на эту часть модели:
У бочки на high poly есть фактура дерева.
Затемнение идёт только по одной из осей.
Так как красный канал нормала показывает искажение вертекс-нормалей только по горизонтали, а скосы между досками как раз и отклоняются влево или вправо, то на нём будет много информации.
А зелёный канал — показывает искажения по вертикали. Так как виртуальные плоскости не отклоняются вверх/вниз, то затемнений почти нет, то информации на нормале в этом канале почти не будет:
Зелёный и красный канал нормала на примере бочки
Красный и зелёный каналы — основные для нас (как моделлеров).
Но у Нормала есть ещё синий канал.
Синий канал имитирует углубления в объекте.
В играх он практически не используется.
За счет изменения синего цвета на нормале создаются искажения на плоской поверхности.
Если на синем канале есть артефакты, можно просто выключить этот канал, т.е. отключить синий цвет у нормал мапа в фотошопе. Или просто их замазать артефакты кисточкой.
Синий канал нормал
Больше про три канала Нормала — в этой статье.
У каждого канала — своя функция.
При артефактах после запечки иногда нужно править нормал руками.
Иногда это делается сразу на всех трёх каналах, а иногда — на одном из них.
Если ты не разобраться в функциях этих каналов, сложно будет редактировать нормал.
Нейтральный цвет Нормала
128х128х255 — нейтральный цвет нормала.
Если добавить полностью нейтральный нормал, то особой разницы видно не будет. Модель будет шейдить так же, как обычная лоуполи.
В каком формате лучше хранить нормал
После запечки, скорее всего, придётся вносить изменения в нормал, используя фотошоп.
Поэтому файл лучше сохранять в форматах Targa или TIF.
При сохранении есть выбор, сохранять в 24 или 32 bit.
Если есть Альфа-канал — сохраняем с 32 bit.
Если Альфа-канала нет — в 24 bit.
2. Карта АО
Так выглядит запечённая карта АО
Карта Ambient occlusion (AO) — это карта затенения.
Она показывает самые глубокие тени, которые есть в объекте.
В основном это тени в углублениях и на пересечениях. Эту карта используют игровые движки для корректного освещения. Она также очень полезна в текстурировании.
Отличный пример того, что сложно сделать без АО — это грязь. Она забивается в самые глубокие места модели, — карта АО поможет легко сгенерировать маску углублений, чтобы забить их грязью.
Если добавить на low poly модель карту АО, на модели появятся самые глубокие тени
Также как и нормал, карта АО печётся на развёртку модели из high poly и скульпта.
Карта AO создаётся из highpoly и скульпта
При запекании по-умолчанию эта карта чёрно-белая, но на этапе текстурирования её можно покрасить.
С картой АО разобрались, последняя карта, которая нам нужна — Color ID
3. Карта Color ID
У наша модель состоит из разных материалов: металла, камня, дерева и ткани.
Во время текстурирования нам нужно быстро выделять геометрию, которая будет, например, металлом или деревом.
Чтобы это можно было сделать в один клик внутри Substance Painter, нам нужно запечь карту Color ID. Она позволяет быстро выделять большие куски. А в программе для текстурирования эту группу объектов можно легко затекстурить.
Вот так, с помощью этой карты мы в считанные секунды красим модель в разные цвета:
Быстро красим модель в Substance Painter, используя карту Color ID
Для того, чтобы создать карту Color ID, нам нужно покрасить high poly-модель в разные цвета. Один цвет — это одна группа объектов, как правило разбитая по материалам. Например, всё дерево на Color ID оранжевое, вся кожа —розовая, ржавый металл — синий, шерсть — голубая, а новый и чистый метал —зелёный.
Это не цвета будущей модели — здесь они могут быть любыми. Главное, чтобы они были контрастными.
Дополнительные карты
В мармосете куча карт, которые можно запечь.
Их в разных пайплайнах используют разные художники для текстурирования:
Position map с помощью градиентов помогает накладывать текстуры в разных плоскостях модели.
Сurvature выделяет все края на модели и упрощает создание затёртостей и повреждений. Очень полезная карта на ряду с АО.
Thickness запекает толщину, что необходимо для имитации подповерхностного рассеивания.
Часто для hand paint текстур пекут свет прямо на текстуру. Иногда необходимо запечь альфу — карту прозрачности.
Еще мармосет умеет печь цвета и материалы с других моделей и текстур, это иногда помогает не переделывать много текстур с нуля.
Сейчас проще печь дополнительные карты прямо в Substance Painter.
Гайд по текстурированию: проверка запекаемых карт. Часть 2: АО, Curvature, World Space Normal и Position maps
В предыдущем материале мы разобрались с типичными артефактами на normal map и пофиксили их, но на этом проверка не заканчивается. В этой статье мы исправим ошибки на остальных картах и расскажем, почему подобные проверки обязательны перед текстурингом.
На АО артефактов стало гораздо меньше, но карта по-прежнему нуждается в доработке. На изображении видны запеченые тени в местах, где их быть не должно.
Подобные проблемы возникают из-за оверлапа одинаковых островов на UV. Условно, мы используем одни координаты в UV пространстве для размещения двух похожих элементов. Но на одном из них есть объект дающий тень, а на втором — нет.
Оверлапы нужны для оптимизации текстурного пространства, но при этом теряется уровень уникальности текстуры. Есть несколько решений: разворачивать два элемента отдельно друг от друга или затирать тень на карте АО.
Еще можно попробовать переместить шел с затемнением на тайл в UV пространстве. В базовых координатах важно оставить «чистый» шелл, на котором нет элементов, создающих тень. В таком случае информация об АО при бэкинге будет перепекаться с элемента в оригинальном UV пространстве.
Внимательно нужно выбирать и алгоритмы запекания. Под некоторые проекты требуют больше лайтмапы, чем АО, на других же достаточно пропекать только затенения на стыках. Этот вопрос уточняется у клиента.
Если работаешь над личным проектом — отталкивайся от собственных предпочтений. Но не забывай, что АО будет использоваться в работе генераторов, и грязь или пыль появится именно там, где на карте пропеклись темные области.
Curvature
Теперь нужно обратить внимание на черные пиксельные линии на стыке UV шеллов. На курватуре могут возникать и другие проблемы, но чаще всего они чинятся таким же образом, как и на прошлых картах.
Темные линии на стыках — классическая проблема запекания Curvature в Substance Painter. Если они появились, попробуй использовать другую программу — Marmoset, Substance Designer и тд.
Курватуру можно всегда создать вручную прямо в Substance Designer, используя уже запеченную normal map.
Выглядит эта полоска не критично, но проблем вызывает много. Особенно, если в будущем придется использовать генератор для создания поцарапанных углов.
Other maps
Карты типа Position, World Space Normal и ID обычно пекутся без особых проблем при условии, что на предыдущих этапах все артефакты были исправлены. Еще могут быть баги на Position map, но зачастую они вызваны использованием оверлапов. Принцип починки такой же, как в ситуации с АО.
Зачем уделять проверке так много времени
Substance Painter построен на работе генераторов, которые используют запеченные карты в качестве вводных данных.
Это своеобразное объяснение системе, где у модели находятся углы, впадины и выпуклости, какое положение она занимает в пространстве и какие дополнительные элементы мы хотим на ней отобразить с помощью карты нормалей.
Получив эту информацию, Substance Painter помогает рисовать сколы на углах, грязь на стыках, потеки на верхней части объекта и запыленность — на нижней.
Всё будет работать хорошо до тех пор, пока мы рассказываем правду. Если где-то пришлось приврать насчет каких-то деталей и оставить, к примеру, лишнюю тень на АО — не стоит удивляться, если там появится грязь.
Смотрим на карты в последний раз, чтобы удостовериться, что все проблемы устранены.
Кажется, пофиксили мы не все..
Да, это серьезный косяк, но иногда нет возможности исправить тот или иной артефакт/баг. Как минимум, ты можешь заметить его слишком поздно, и времени на переделки уже не будет.
На такой случай есть несколько универсальных решений — их мы соберем в следующей статье о «неудобных моментах» на текстурах, расскажем, в каких случаях их можно «скрыть» или минимизировать, и как это сделать. Stay tuned.
5 лайфхаков с использованием генераторов в Substance Painter
Мы уже успели поговорить об основных ошибках при текстурировании, про разнообразие и контрасты, про износ и точки интереса. В этой статье разберем несколько подходов, которые упрощают создание текстур в Substance Painter.
Curvature в канале Base Color
На некоторых объектах, в качестве финального штриха, можно добавлять запеченную карту Curvature в цветовой канал верхнего Fill layer. Режим смешивания в таком случае нужно выставить «Overlay».
Курватура в таком режиме высветлит углы и грани, которые запеклись на ней белым цветом — это добавит объема.
Если нужно подредактировать яркость или тоновый баланс карты — используй Levels или крути прозрачность слоя.
AO в канале Base Color
Также можно добавить карту АО в цветовой канал для создания объемных затенений на объекте. Тогда режим смешивания используй «Multiply», а для корректировки — все те же изменения прозрачности или Levels.
Внимание! Описанные способы могут нарушить работу PBR: по его правилам, в карте Albedo не должно быть информации о запеченном свете. Поэтому пользуйся ими аккуратно и осознанно.
Position generator
Генератор position можно использовать для создания загрязненности/запыленности на частях объекта, которые стоят на земле. Это может быть какой-то забор, столб, ящик, или даже автомобиль.
Генератор использует Position map и World Space Normal, чтобы определить, где у модели низ, а где — верх. И если на этих картах остались какие-то артефакты — они проявятся.
Создаем Fill layer с грязью/пылью/ржавчиной, накладываем маску и добавляем в неё ячейку Generators. В списке generators выбираем «Position».
Дальше крутим контраст/баланс/размытие, настраиваем нужную интенсивность.
В конце можно добавить несколько гранжей с помощью заливочного слоя в режиме multiply внутри маски, чтобы разнообразить монотонный градиент.
Использование гранжей дает творческую свободу. Можно добавить потеки на верхней части шкафа или хлопья ржавчины на нижней части автомобиля. Все, на что фантазии хватит.
Художник из Naughty Dog, работавший над The Last of Us 2, в своем ArtStation[a] показал решение проблемы с генеративным загрязнением машин. Для этого они использовали специальный шейдер, работающий на Position и World Space Normal картах. Конечно, он устроен сложнее, чем в Substance Painter, но принцип работы тот же.
Curvature generator
Помимо добавления Curvature map напрямую в цвет объекта, можно использовать генератор для создания маски на углах. Это отлично работает с деревянными и кожаными объектами, если нужно высветлить стертые грани.
Создание и рандомизация маски выглядят следующим образом:
Сначала в маску добавляем генератор курватуры и редактируем в нем контрастность/размытие/баланс:
В генераторе можно настроить контрастность линий и разбить их гранж картой, но если тебе нужно сделать линии шире — используй хитрость. Добавляй слой Blur, размывай немного маску и добавляй Levels поверх. Levels в комбинации с Blur позволяет расширять/сужать пятна и линии.
В конце добавляем заливочный слой в маску с настроенным Multiply смешиванием.
Light generator
Ещё один достойный внимания генератор — Light generator. Он использует Position и World Space Normal maps, чтобы симулировать освещение.
Этим инструментом можно создавать направленную запыленность. К примеру, если у вас есть воздухозаборник и нужно прорисовать скопившуюся пыль на открытых участках — Light generator незаменим. Он также удобен для создания запыленности на тканях со множеством складок.
В работе со шлемом он не применялся, но все же рассмотрим принцип использования.
Назначаем его в маску, настраиваем с помощью двух ползунков «Horizontal Angle» и «Vertical Angle» направленность света.
Настраиваем контрастность и интенсивность с помощью стандартных ползунков или дополнительных слоев с Levels и Blur.
В конце, как обычно, можно добавить гранж-карту для разнообразия. Готово!
Мы описали основные подходы чтобы показать тебе, что генераторы не такие страшные и непонятные, какими кажутся на первый взгляд. Существует еще много хитростей, которые можно использовать для решения специфичных задач. Мы расскажем о них в будущем. Stay tuned.
PBR для новичков — материалы, пайплайны и текстурные карты
Всё о работе с физически корректной визуализацией от преподавателя курса «Процедурный трип» Антона Агеева.
В июне на нашем YouTube-канале прошёл стрим с Антоном Агеевым, который уже больше семи лет занимается текстурами в игровой индустрии и успел поработать с Nival, Playrix и Game Insight. Антон рассказал, что такое PBR, разобрал параметры материалов, основные пайплайны работы и дополнительные текстуры.
На стриме он работал в Substance Painter и Marmoset Toolbag, но все принципы применимы и в других утилитах. Ниже пересказываем самые важные моменты стрима.
PBR расшифровывается как Physically Based Rendering — физически корректная визуализация. То есть, рендеринг материалов происходит с учётом законов физики. Основное преимущество материалов с этой технологией в том, что их можно использовать и в программах для рендеринга, и в игровых и неигровых движках — от одной утилиты к другой пайплайн материала не меняется.
Применяя одни и те же текстуры [PBR] в разных движках, вы будете получать немного разный результат, но если они правильно откалиброваны, то их суть будет оставаться неизменной и они будут выглядеть хорошо и в Unity, и в Unreal Engine, и в любом не-real time рендере с трассировкой.Антон Агеев
Существует два основных типа материалов: диэлектрики и металлы. Их отличие во взаимодействии с освещением состоит в том, что металлы не пропускают внутрь себя свет.
У диэлектриков есть диффузное отражение, то есть лучи света проходят внутрь материала, рассеиваются, и после этого часть света поглощается, а часть выходит наружу. А ещё у диэлектриков белый блик.
Металлы не пропускают свет, а отражают его, частично или полностью, в результате чего получается цветной блик. Диэлектрики тоже отражают свет, но в гораздо меньшем количестве, чем металлы.
При падении света на материалы обоих типов действует эффект Френеля. Согласно ему степень отражений зависит от угла падения света на поверхность. Чем острее угол — тем больше света отразится. Отражающая же способность диэлектриков равна количеству света, которое отражает материал при освещении под прямым углом.
В реальности по закону сохранения энергии количество отражённого света не может превысить количество поглощённого. В Marmoset Toolbag есть специальный чекбокс Conserve Energy, который «следит» за выполнением этого закона. Если он включён и сумма зеркальных и диффузных отражений равна 1 или больше, то диффузные отражения начинают затухать. А если зеркальные отражения равны 1, то диффузные отражения вообще перестают на что-то влиять. То есть сохраняется «реалистичность» материала.
Такая ситуация, то есть высокий показатель зеркальных отражений и отсутствие диффузных, характерна для металлов.
Когда вы настраиваете металлы, цвет диффузных отражений нужно убирать.
Albedo (диффузный цвет). Это сила и цвет диффузных отражений. У металлов их нет, поэтому Albedo у них чёрный. В текстуре Albedo в PBR, в отличие от пастгена, не должно быть запечённого освещения, бликов и теней. Цвет должен выглядеть так, будто взят с поверхности, которая обращена к камере под прямым углом и освещена 100% белым рассеянным светом. В Albedo лучше избегать ахроматических и «открытых» цветов, корректный диапазон для этого параметра — 50-245 в sRGB.
Reflectivity (отражающая способность). Это определяющий параметр при достижения достоверности любого материала, лучше всего брать его из готовых источников (например, в Substance Painter есть заготовки металлов).
Диапазон корректных значений для диэлектриков — 2-14%. 8-14% отражают редкие материалы вроде рубина или алмаза, а у большинства других показатель находится в диапазоне 4-6%. Диапазон металлов — 60-100%. 100% отражают некоторые чистые металлы, но они встречаются редко, так что лучше держаться в пределах 96%.
Как только Reflectivity падает ниже 60%, тут же должен подключаться цвет Albedo, потому что материалов, которые просто поглощают столько света и ничего не отдают назад, не существует.
Чистых материалов с коэффициентом отражений 14-60% почти не бывает. Такое значение может получиться только при сильном загрязнении или окислении. Также Reflectivity металлов в большинстве случаев никогда не меняется.
Microsurface (шероховатость/микрорельеф/глянцевость поверхности). Этот параметр указывает, насколько гладкой или шероховатой является поверхность вашего материала.
Очень часто новички путают Reflectivity и Microsurface, потому что им кажется, что если отражения чёткие, то материал отражает хорошо, а если размытые, то материал отражает плохо, хотя процент отражений никак не меняется. Гладкие поверхности просто отражают свет под правильными углами, а матовые — с большим количеством искажений.
Пример влияния рельефа на отражения
В работе с Microsurface тоже лучше избегать крайних значений. Для большинства материалов корректным диапазоном будет 0,1-0,9.
Существует два основных пайплайна, которые основаны на базовых параметрах: Specular/Gloss и Metallic/Roughness. Под пайплайном здесь имеется в виду не порядок действий при работе, а набор текстур материала.
Specular/Gloss. В этом пайплайне используется три основных текстуры: Diffuse, Specular и Glossiness.
С одной стороны, это простой для понимания пайплайн, с другой — сложный для настройки.
Параметр Diffuse отвечает за силу и цвет диффузных отражений. Specular — за силу и цвет зеркальных. Проверить правильность этого параметра относительно материала можно с помощью специальных таблиц, где за Specular отвечает цвет напротив буквы S. А параметр Glossiness отвечает за то насколько гладкая и шероховатая поверхность материала.
Калибровочная таблица от Quixel
Metallic/Roughness. Этот пайплайн, по словам Антона, сложнее для понимания, но проще для применения. За параметр Albedo в нём отвечает текстура BaseColor, за Reflectivity отвечает Metallic, а за Microsurface — текстура Roughness. Условно, Roughness и Glossiness — это инвертированные текстуры, то есть низкое значение первой соответствует высокому значению второй и наоборот.
Когда параметр Metallic равен 1, то текстура BaseColor отвечает за отражающую способность материала и работает аналогично параметру Specular из Specular/Gloss. Если же он равен 0, то BaseColor отвечает за силу и цвет диффузных отражений, то есть материал отражает свет как диэлектрик.
В данной системе мы не можем настроить числовое значение отражающей способности для диэлектриков, потому что, когда BaseColor отвечает за диффузное отражение, нет «крутилки», которая отвечает за процент отражения. Но на глаз отличить разницу этого показателя у диэлектрика сложно, поэтому в пайплайне отказались от этой настройки в угоду оптимизации — отражающая сила в нём заблокирована на 4% и её нельзя изменить.
Также, по словам Антона, многие считают, что Metallic не может быть равен промежуточному значению, но на самом деле «лок» на 0 или 1 обычно продиктован техническими ограничениями.
Правильность выставленных параметров в Substance Painter можно отследить с помощью фильтра PBR Validate. Его нужно применить поверх всего, что есть в документе — тогда некорректные с физической точки зрения зоны будут окрашены в красный цвет.
Пример использования PBR Validate
У Specular/Gloss несколько минусов. Во-первых, он сложнее для новичков, потому что в работе с ним нужно постоянно сверяться с таблицами и следить за значением Specular. Во-вторых, он более ресурсоёмкий, потому что использует две цветные текстуры — цвет есть и у Diffuse, и у Specular.
Но в нём можно настроить числовое значение отражающей способности диэлектриков. Таким образом, если в одной текстуре используются несколько типов диэлектриков, можно более тонко настроить отражения для каждого из них.
В обоих пайплайнах в местах перехода одного материала в другой появляется «окантовка» шириной в один полупрозрачный пиксель, но в Specular/Gloss она не так заметна, потому что окрашена в чёрный, а в Metallic/Roughness у неё белый цвет.
«Окантовка» в Metallic/Roughness
Избежать этого можно, если повысить разрешение текстуры, или с помощью эффектов. Сначала нужно размыть текстуру Metallic, а затем с помощью фильтра Histogram Scan уменьшить или увеличить радиус размытия.
Помимо основных Albedo, Reflectivity и Microsurface существуют и необязательные вспомогательные текстуры, которые делают процесс работы удобнее или дополняют материал.
Curvature Map — это «карта кривизны», чёрно-белая текстура, на которой яркость пикселя показывает изменение кривизны поверхности. С помощью Curvature Map можно получить маски внутренних (Cavity) и внешних (Concavity) углов, а получить эту текстуру можно из Normal Map через конвертацию. О том, что такое Normal Map, мы подробно писали здесь.
Пример Curvature Map и зависимости цвета и кривизны
Для создания текстуры Антон сначала добавил на модель пустую маску, а затем добавил на неё карту Curvature. После этого он применил эффект Levels, который позволил специальным ползунком регулировать значение текстуры.
Ambient Occlusion — это текстура «самозатенения», которая может использоваться и как дополнительная, и как одна из основных текстур материала. В Marmoset Toolbag для неё есть отдельный слот, в котором её можно дополнить текстурой Cavity.
[Она показывает] тени, которые возникают в условиях полностью рассеянного освещения, то есть когда нет направленного источника, а есть просто среднее освещение вокруг, и есть места на модели, куда свет попадает меньше или больше.
На основе инвертированной AO с Curvature Map можно создать, например, текстуру загрязнения. Антон объяснил, как это работает, на примере модели канистры — грязь скапливается сильнее в труднодоступных местах, как и свет.
Position Map — эта текстура содержит несколько градиентов, которые проходят вдоль одной из осей модели. Она используется для создания различных эффектов вроде того же загрязнения.
World Space Normal — это текстура нормалей в мировых координатах. Она используется для создания базовых масок по схожему с Position Map принципу, но вместо однородного градиента World Space Normal учитывает топологию модели.
Её можно даже использовать в качестве Normal Map до тех пор, пока объект не поворачивается, так как в WSN сохранены данные мировых координат нормалей.
Color ID — это цветная текстура. Она содержит цветные маски, которые можно в любой программе конвертировать в чёрно-белые. Чаще всего её используют в двух случаях: при большом количестве деталей, которые не поддержаны геометрией, и моделировании однотипных ассетов с похожими материалами.
При работе на большом проекте вы можете договориться и выработать гайдлайн, по которому, например, материалу дерева в Color ID будет соответствовать красный цвет, а материалу резины — синий.
Пример Color ID на той же канистре
Thickness — «текстура толщины», на которой обозначается толщина поверхности в конкретном месте. Чем темнее пиксель — тем тоньше. Она запекается похожим с Ambient Occlusion образом. Если инвертировать нормали Ambient Occlusion, то получится текстура Thickness.
Она используется в основном для материалов с эффектом поверхностного рассеивания. Например, для человеческой кожи, некоторых камней и фруктов.