Создание современного игрового 3D окружения от White Noise Team. (Часть-2)
Читайте первую часть тут! (https://pikabu.ru/story/sozdanie_sovremennogo_igrovogo_3d_ok...)
Создание материалов.
Теперь, когда мы знаем как работают современные материалы, можно рассказать о том, как они создаются. Для этого вновь вернемся к разговору о SP2.
Программа предназначена для работы с PBR и по аналогии с Marvelous Designer широко распространена среди игровых разработчиков. В базе SP2 имеется библиотека уже готовых процедурных материалов. При наличии прямых рук и художественного вкуса, можно быстро “разукрасить” большинство простых объектов, не прибегая к использованию сторонних ресурсов.
В качестве примера “затекстурим” старый чайник, и для начала сгенерируем все необходимое для дальнейшей работы карты.
Путем манипуляций с Curvature map (карта кривизны) и наложением стандартных материалов можно получить стальной чайник с эффектами стертой краски по краям.
Конечно, такой результат нас не устроит. Это пока еще набросок, попытка понять, что мы желаем получить и как нам следует настроить материал. Всегда стоит держать перед собой референсный пример, а если подобный чайник находится у нашего художника прямо на плите, то он быстро переезжает поближе к компьютеру, для более внимательно изучения деталей.
После первых проб задается основа для объекта. В данном случае мы использовали “сталь” из стандартных материалов. На этом этапе важно выбрать правильно панорамное изображение, чтобы лучше видеть и понимать, как будут играть на нем свет и отражения. Настойка панорамы и освещения рабочей сцены особенно важны для работы с металлами, так как их внешний вид сильно зависит от отражений.
Подобно Adobe Photoshop, программа имеет функционал работы со слоями и масками. С помощью слоев, поверх базового металла, мы добавим новые материалы, полностью скрывшие базовый. В данном случаи мы покрыли чайник эмалью, а с помощью масок основа чайника и его ручка окрашены в разные цвета.
Фактически чайник уже готов, но его внешний вид не подходит под определение “старый”. Как правило, для эффекта состаривания добавляются грязь, царапины, цветовые вариации и пр. На данном этапе работа по большей части идет на уровне Roughness maps (карты шероховатости). Естественно, карты шероховатости уже содержаться в базовых материалах, но ничто не мешает добавить новые поверх них. Для тела чайника мы добавим карту, имитирующую потертости, а для ручки - еще и следы от пальцев.
Каким бы не был крутой софт, он не сможет все грамотно нарисовать за вас путем лишь манипуляций с настройками. Финальная доводка и добавление деталей не обходится без ручного режима рисования. Для подобной работы обязательно нужен графический планшет.
Из дополнительных приемов можно отметить использование старых добрых фото-текстур.
Для подобного чайника, как и для другой утвари из советского периода, характерны декоративные изображения цветов. Найдем в гугле подходящую картинку и с помощью фотошопа подготовим для дальнейшей работы. Cамая большая сложность - найти изображение хорошего качества, без засветов, теней, перспективы. Готовую текстуру импортируем в SP2 и проецируем на поверхность чайника.
В качестве экономии времени незначительные детали можно не отмоделивать в HP. SP2 содержит в себе набор заготовок, или же можно найти найти на просторах гугла заготовки в виде карт высот. Например, мы добавим болты-крепежи на ручках.
В итоге чайник готов. В качестве результата, мы экспортируем набор карт (альбедо, нормалка, рафнес, металик) для дальнейшей работы с ними в игровом движке.
Работа с контентом в UE4.
“Нарисовать” объект - это пол работы, требуется произвести с ним еще много различных манипуляций, сделать лоды и коллизию, лайтмап развертки, произвести батчинг, настроить пивоты… Но рассмотреть все аспекты пайплайна тяжело в рамках ознакомительной статьи, поэтому сконцентрируемся только на сборке визуальной составляющей.
Одна из основ оптимизации современной графики - сокращение количества текстурных карт, материалов и упрощение последних. Тем самым мы уменьшаем количество обращений к видеокарте для отрисовки элементов. К сожалению, текстурных карт даже в простом чайнике выходит не мало, и они требуют дополнительной оптимизации. Если внимательно взглянуть на AO, Roughness и Metalic, можно заметить что все три карты черно-белые, а почти любые цифровые изображения стоят из RGB каналов, каждый из которых является градацией серого. Проще говоря, один цветовой канал позволяет хранить одну черно-белую текстуру. В результате мы сливаем все три вышеуказанные карты в одну текстуру.
Различные дополнительные карты, к примеру для светящихся материалов или материалов с прозрачностью, мы дополнительно запаковываем в Alpha канал альбедо текстуры (некоторые форматы изображений имеют помимо RGB дополнительный канал для прозрачностей).
Касательно сокращения количества материалов - существует понятие атласов. Атласы это особый вид текстурных карт, который содержит в себе развертки сразу нескольких объектов. Некоторые разработчики производят атласинг уже готового контента, мы же по большей части проводим атласинг еще на этапе моделирования. К сожалению, в один атлас нельзя запихать все подряд, нужно учитывать максимально возможное расширение приемлемое для движка и платформы для которой разрабатывается проект, группировать по типу материалов.
Помимо всего мы руководствуемся логикой. Допустим сделали набор инструментов. Естественно все объекты пакуются в один атлас, а значит и один материал, что здорово экономит ресурс производительности. Но если мы захотим использовать на сцене один конкретный инструмент, то он забьет видео-память большими атласами, из которых используется лишь маленькая часть, что делает использование одной модели из сета не целесообразным.
В Unreal Engine 4 встроен шикарный редактор материалов рассчитанный на дизайнеров, с помощью графов в нем можно реализовать любую свою фантазию. К примеру, таким образом у нас реализован процедурный шум для телевизора и переключатель светящейся панели электронных часов.
Не смотря на такое технологическое изобилие, мы предпочитаем создавать простые материалы. Ниже пример материала, использующий уже знакомые текстурные карты:
Но и тут не без подводных камней. То что в Unreal Engine 4 называется материалом и редактором материалов, является полноценным шейдером и редактором шейдеров. Здорово что шейдер может теперь создавать рядовой художник, пользователи Unity или CryEngine, к примеру, лишены такого удобства в стандартной коробке, но любая работа созданная таким образом генерирует полноценный C++ код и, к сожалению, не самый оптимизированный.
Раньше материал представлял собой экземпляр конкретного шейдера с изменением параметров или текстурных карт, но неизменным кодом. Граница понятий и терминов во многих 3Д редакторах со временем размылась, но возможность создавать традиционные “материалы” в UE4 осталась, и в подобном виде у нас хранятся материалы для большинства объектов.
Послесловие.
Надеемся, нам удалось максимально понятно и на простых примерах рассказать о том, как создаются современные игровые модели. Если такое большое колличество букв найдет своего читателя, мы со временем расскажем о других пайплайнах, не обязательно касающихся игровой графики, на примере нашего инди-проекта.
В качестве помощи вы можете дать нам фидбек, распространить статью, либо поддержать наш патреон (http://patreon.com/twinsoul), или просто подписаться на наши социалки:
https://www.youtube.com/c/WhiteNoiseTeam
Лига Разработчиков Видеоигр
7.3K пост22.4K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"