Создание ААА-мозаичных текстур для игр

Ayi Sanchez расскажет, как создать ААА-текстуры для современных игр, используя ZBrush, Photoshop и 3ds Max.

Данный урок был написан замечательным Ayi Sanchez и опубликован в выпуске № 94 журнала 3D Artist.

Используемые инструменты:
ZBrush
Photoshop
3ds Max
Marmoset Toolbag

Видеоигры на сегодняшний день уже обладают высокой фотореалистичностью, поэтому следующее поколение графики будет делать больший акцент на свет, рендер и материалы. Стоит учитывать, что примерно 70–80% экранного пространства в видеоиграх занимает именно окружение, где вы бродите, а оно, в свою очередь, состоит из реквизита (props), модулей и мозаичных материалов.

Следующее поколение графики будет делать больший акцент на свет, рендер и материалы

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

ШАГ 1 — Блок элементов

Учитывая, что конечная работа будет 2048*2048 цветовой модели, то стоит держать в уме масштаб и количество элементов. Нужно это во избежание потерь элементов при «выпекании» модели. По той же причине очень важно залочить элементы, провести тест «запекания», дважды проверить карты нормалей и точность деталей.

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

ШАГ 2 — Границы плиток

Красота плиток в их границах! Повторы наборов блоков не должны бросаться в глаза. С архитектурными элементами это провернуть проще, чем с органикой. Существует куча техник для этого, но чаще всего самый простой способ является самым лёгким. Расположите плитки так, чтобы повторение было только по двум границам — горизонтальной и вертикальной. Промежутки оставьте пустыми, мы вернёмся к ним после «лепки» (скульптинга) во время текстурирования.

Красота плиток в их границах!

ШАГ 3 — Подготовка к ZBrush

Для начала проверьте, что все ваши элементы расположены на плоскости; для этой цели я прибегнул к помощи 3ds Max, но Вы можете использовать любой 3D — пакет на своё усмотрение. Преимущество этого шага в том, что вы сможете работать с целым экземпляром объекта, а не с отдельными элементами.

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

ШАГ 4 — Импорт в ZBrush

Теперь настало время снова перенести все слои в ZBrush. Лучше всего скомпоновать SubTools по элементам или материалам. Чтобы не испортить результат прошлых шагов, разбиваем плитки на четыре блока. Также не забываем сделать копию плоскости для дальнейшего её превращения в цемент. Режим выделения (solo mode) очень полезен для работы с SubTools, тут вы можете сфокусироваться только на том элементе, который выбран.

ШАГ 5 — Масштабирование и вращение

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

После того, как примените маску к некоторым плиткам, используйте Инструмент вращения (Rotation tool) — просто двигайте, вращайте или масштабируйте. Главное не переусердствовать, иначе всё будет смотреться нереальным и чересчур погнутым. Для проверки ориентации наших плиток в пространстве используем Normal MatCap.

ШАГ 6 — Лепим формы

Используя Using ClayTube, TrimSmoothBorder и TrimDynamic, начинаем лепить от простой формы к более сложной. Старайтесь лепить каждую плитку с душой и индивидуальным подходом, сохраняя при этом цельным общий вид стены. Одни края плиток оставьте нетронутыми, другие сделайте с закруглёнными углами, третьи — с резкими очертаниями. Все потёртости и трещины рассказывают историю времён, которые пережили эти камни.

ШАГ 7 -Детализация текстурной кистью

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

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

ШАГ 8 — Проработка плиток

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

ШАГ 9 — Лепка цемента (соединяющего раствора)

Делаем копии всех слоев и сливаем их в один — получится слой с цементом. Затем делим его на части и, используя ClayTubes и Move brush, растягиваем и протягиваем их между плитками. Добавляем «ухабистость» — всё должно смотреться реалистично. Для достижения лучшего результата стоит использовать Surface Noise. Он незаменим для добавления зернистости, передачи разницы в масштабе и для изменения фокуса. Не бойтесь играть с кривыми, с цементом, пусть в некоторых местах он перекрывает плитки — это только добавит интереса вашей работе.

ШАГ 10 — Тест запекания карты нормалей

Как только результат начнёт Вам нравиться, стоит перейти в ZBrush для проверки необходимости внесения поправок в модель или её композицию.

Создайте новый документ 2048*2048 и переключитесь в режим Solo вместе с нашей ранее загруженной моделью. Нажав F, переведите модель в документ, удостоверившись перед этим, что Вы не в режиме перспективы.

После выхода из Solo режима документ готов. Поработайте с документом с помощью BPR рендера и карты нормалей MatCap. Затем скрин результата экспортируем через ZAppLink и тестим в игре.

ШАГ 11 — Запекаем и готовим к текстурированию

Удаляем все SubTools и экспортируем их в Вашу стандартную программу для запекания. Важно не удалить слишком много геометрии иначе мы потеряем детали. Вся модель на этом шаге содержит 50 млн. полигонов, давайте оптимизируем её до 12. После этого запекаем модель при помощи 3ds Max. Карта нормалей, ID-карта, карта окружающего мира (ambient occlusion), карта высот (height map) и карта искажений (curvature map) — этого должно хватить на стадии текстурирования.

ШАГ 12 — Создание масок и использование Photoshop

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

Работая с «запечёнными» файлами, выделим несколько масок с помощью Quixel SUITE/Substance. Затем подгружаем карту нормалей и у нас появятся готовые к работе маски. Это будет хорошей практикой в группировании слоёв и присвоении им имён, отталкиваясь от их категории или иерархии. В нашем случае все маски сгруппированы наверху, а за ними плитки и ID маски, разбитые на группы.

ШАГ 13 — Работа над светоотражением (albedo)/диффузного текстурирования

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

В данном случае воспользуемся Marmoset Toolbag. Опираясь на референс, подбираем подходящий базовый оттенок. В дальнейшем это поможет нам не слишком отдалиться от первоначального замысла. Лучше всего, когда фотореференс материала не запечатлён при каком-то особом свете, самое оптимальное — просто материал без игры света.

Мы будем пользоваться самыми простыми фото плиток. Инструмент Штамп (The Clone Stamp) пригодится при обработке деталей или частей модели, которые нас особо не интересуют. Используя несколько корректирующих слоев, добиваемся нужной похожести на референс. Также для более тонкой проработки стоит «поиграться» с настройками прозрачности.

ШАГ 14 — Добавление цветового разнообразия

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

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

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

ШАГ 15 — Приводим единому знаменателю

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

ШАГ 16 — Блеск и глянец

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

Используя уже имеющееся преимущество структурированных слоёв, наложите ч/б настройку на все слои и проработайте детали. Прелесть этой практики заключается в придании уникальности материалам, путём добавления элементов, невидимых в albedo.

ШАГ 17 — Рендер

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