Твёрдые поверхности в Maya и не только
Опыт создателя пропов для Call of Duty: Infinite Warfare.
Моделирование жёстких поверхностей иногда кажется простым, но если не использовать специальные приёмы и не подходить к работе творчески — её результат будет выглядеть, будто его сгенерировала машина.
3D-художник аутсорс-студии Elite3D, Бой Зихтерман (Boy Sichterman), рассказал порталу 80.lv, как сделать так, чтобы техника выглядела естественно. Прежде всего речь шла о работе с материалами в Maya.
DTF публикует перевод статьи.
Ещё до того, как узнать что-либо о 3D-арте, я много рисовал. Каждый дюйм свободного пространства в моей школьной тетради был покрыт воображаемым оружием, окружением и техникой. Добравшись до компьютеров, я начал изучать Photoshop, Gimp и After Effects и провёл значительную часть детства, создавая глупые видео. В средней школе мой учитель рисования рассказал мне о Maya. Дома я установил пробную версию, и всё завертелось.
Закончив среднюю школу в 2012 году, я поступил на четырёхлетние 3D-курсы в IGAD-NHTV в моём родном городе Бреда, в Голландии. Главное, что я узнал — не так много зависит от ПО и техники, как от взгляда на вещи. Мы с друзьями постоянно соревновались, кто сумеет сделать наилучшую работу, и единственным путём к победе была ежедневная и еженощная практика.
На третий год учёбы я получил предложение о работе от Elite3D, так что я договорился со своим учебным заведением, что буду проходить стажировку в этой компании, с тем чтобы остаться там работать, когда закончу обучение в 2016 году. Так и стал полноправным сотрудником Elite3D. Первой игрой, над пропами к которой мне посчастливилось поработать стала Call of Duty: Infinite Warfare.
Моделирование твёрдых поверхностей
Все мои личные проекты выполнены в Maya, кроме концептов окружения, созданных в Modo с использованием скруглённых шейдеров (rounded-edge shaders).
Моделируя в Maya, я использую поверхности с иерархическим разбиением (subdivision surfaces). Сначала я убеждаюсь в том, что базовая модель (blockout) хорошо выглядит со всех сторон. После я создаю все основные формы без мелких деталей и поддерживающих граней. Затем перехожу к стадии SubDiv и добавляю поддерживающие грани, чтобы убедиться, что всё сглаживается без зазоров (pinching). Узнать, где нужно добавлять эти грани можно только на опыте. Через некоторое время это входит в привычку и ты запоминаешь все трюки, чтобы избегать зазоров в разных ситуациях.
В самом начале пути мне помогли видеоролики «Hard Surface Essentials» от Гранта Уорвика (Grant Warwick).
Он использует 3ds MAX, но те же принципы работают и в других программах. Новички часто совершают ошибку, думая, что n-гоны (n-gons) плохи при SubDiv-моделировании, но в реальности можно использовать их столько, сколько нужно, до тех пор, пока всё нормально сглаживается. Следует только помнить, что они могут прерывать рёберные петли (edge-loops), так что впоследствии их будет сложнее удалять или редактировать.
Поскольку мои высокополигональные модели впоследствии будут «запекаться» в низкополигональные, можно использовать много так называемых «поплавков» (floaters). Это небольшие детали, которые «плавают» на поверхности базовой геометрии с контурами граней и лицевыми нормалями (face normal), аналогичными геометрии под ними. При «запекании» швы не видны и они будто смешиваются с поверхностью.
Такие «поплавки» значительно ускоряют высокополигональное моделирование, поскольку не нужно подгонять миллиарды рёберных петель в основной модели. Вместо этого вы можете просто продублировать их, добавив все мелкие детали. Сейчас с программами вроде Substance Painter и NDo можно даже добавлять детали этого типа во время процесса текстурирования, а не моделирования.
Я также стараюсь использовать горячие клавиши для всех инструментов и создавать простые маленькие скрипты, чтобы ускорить процесс моделирования. Попользовавшись таким методом год или два, сейчас я уже кликаю на интерфейс только чтобы использовать крайне специфические функции, что бывает не чаще раза в месяц.
Иногда функции нет в редакторе горячих клавиш, так что приходится копировать действие из истории команд в редактор скриптов. Для этого не нужно знать скрипты и можно создавать простые действия или макросы.
Вдобавок я также использую много инструментов Аднана Шометта (Adnan Chaumette) вроде «quickpipe», Maya Bonus Tools и скрипт, который превращает выделение лицевых нормалей в выделение одной стороны модели.
Совет: при создании цилиндров постарайтесь, чтобы у высокополигональной модели было столько же или вдвое больше частей (divisions) по сравнению с низкополигональной — это поможет при создании последней.
Механические элементы
Я всегда начинаю с того, что убеждаюсь в функциональности базовой модели. Тогда её можно детализировать, не боясь нарушить функциональность. Если я знаю, что какая-то часть должна быть подвижной, то нахожу референсы из реальной жизни, которые двигаются схожим образом.
Думаю, референсы — одна из самых важных вещей для художника. Для их поиска около года назад я начал использовать Pinterest. Просматриваю ленту каждый день, вдохновляясь и выстраивая в голове «библиотеку» форм.
Используя систему «constraints and parenting» в Maya можно легко создавать простые пробные риги (rigs) и проверять, работает ли конкретный механический элемент. Если вы знаете людей, любящих риггинг, возможно, стоит попросить их создать более сложные пробные риги — интересный вызов для них, польза для вас.
Во время создания моей высокополигональной модели я также собираю подробную библиотеку элементов для повторного использования (китбаш). Поскольку теперь в Maya работает копирование и вставка между файлами, в будущем я соберу их в отдельную сцену, чтобы было легче использовать сложные механические формы.
Также стоит упомянуть, что Maya 2016 и 2017 гораздо стабильнее выполняет булевы операции (booleans), так что не бойтесь ими пользоваться. Это значительно более творческий и экспериментальный процесс, чем стандартное моделирование «коробками». Очень весело вырезать различные формы друг из друга, создавая новые, которые иными способами получать дольше.
Функциональность
Главная причина, почему я слежу за функциональностью — это правило «форма следует за функцией». Попытка представить, как и что должно двигаться, отлично помогает с интересными дизайнами.
Например, машину в итоге подвергнут риггингу, так что я должен убедиться в функциональности подвески и в том, что колёса могут вращаться и направляться рулём. У водителя должна быть возможность сесть в неё, неважно, будет ли она играбельным элементом, так что я создаю механизм для открывания кабины. Позиция приборной панели меняется, её можно сдвинуть, чтобы освободить пространство для водителя.
Меньшие детали (вроде внутренностей двигателя, осей и так далее) игрок никогда не видит, но я стараюсь как минимум предложить видимую функциональность, основанную на опыте пользователя. Это помогает сделать всю картинку убедительнее.
Материалы
Для текстурирования финальных низкополигональных моделей я использую Substance Painter 2. Материалы всегда создаю с нуля, чтобы лучше контролировать результат. Работая над окружением, часто использую предварительно заготовленные материалы, — так сцена выглядит, как единое целое.
— Каждый материал начинаю с заполняющего слоя (fill layer). Я понимаю, что главное — создать основу материала, и исходя из этого корректирую базовый цвет, «металличность» и шероховатость (roughness).
— Если у материала есть очевидный паттерн или цветовая разница, я накладываю их на заполняющий слой поверх. Например, это могут быть выступы рифлёного металла. Substance painter предлагает набор процедурных масок, позволяющий создать практически любой рисунок, плюс можно импортировать собственное изображение маски.
— Возможно, самый важный шаг. Я накладываю карту, добавляя вариации шероховатостей (rougness variation). Чаще всего это можно сделать, используя grunge-карты. Я создаю заполняющий слой (fill layer) и применяю grunge-карту к маске, как заполнение. После по-прежнему можно менять контраст и цветовой баланс grunge-карты.
Я всегда стараюсь использовать grunge-карты, «рассказывающие» историю, — с потёками, царапинами, точными деталями и так далее. Это помогает пользователю определить материал. Порой мне также нравится накладывать их поверх базового цвета, чтобы разница была заметна даже без блеска.
— После потёртостей я обращаюсь к каналу высот (height channel). Это тоже очень мощный инструмент для создания небольших деталей, помогающий сделать материал узнаваемым без «лепки». Он делает поверхность неровной, меняет отражения и создаёт интересные небольшие детали. Опять же, это делается с помощью заполняющего слоя и маски с grunge-картой.
Создав все отдельные материалы — металл, краску, ржавчину и масло, я начинаю смешивать их, используя маски с генераторами и раскрашенные вручную слои.
Это происходит так. Все разные материалы — краска, ржавчина, грязь и металл — сгруппированы с их собственными масками. Изменяя маску, я контролирую, где материал показывается. До того, как начать текстурирование, проверяю, чтобы на AO (ambient occlusion) и нормалях не было артефактов, после — «запекаю» оставшееся пространство, место в мире, thickness- и curvature-карты, используя инструменты Substance, так что генераторы отвечают максимально точно.
Материалы накладываются, как в жизни — металл, потом ржавчина, краска, возможно, слой потёков и дальше — грязь и масло. Таким образом я могу сохранять контролируемый и реалистичный вид.
Сначала я использую генератор масок, чтобы создать базовый износ. Генератор масок также позволяет добавлять grunge-карты, так что я разбавляю единообразие и создаю отдельные уникальные детали. Использование генерации экономит много времени и даёт хорошую основу для старта, но я всегда прорисовываю части поверх её результата вручную, чтобы не допускать ощущения процедурности окружения.
Обычно я использую как минимум два слоя грязи. Один из них, тёмный и «подкопчёный», добавляю в щели, которые собирали бы пыль и в реальной жизни. Это создаёт контраст и акцентирует формы объектов.
Небольшой совет: как и в Photoshop, клик на маске с зажатым Alt отображает её на модели.
Опять же, во время этого процесса нет ничего важнее, чем постоянно сравнивать модели с референсами из реального мира. Когда меня просят оценить чью-то работу, я обычно прошу показать референсы, на которых она основана — могу ли я их различить.
Даже если материала нет в реальном мире, референсы по-прежнему можно использовать, чтобы посмотреть, где собирается грязь и как материалы ведут себя в разном окружении.
Презентация
Чтобы продемонстрировать мои итоговые текстурированные ассеты, я использую Marmoset Toolbag. Не хочу вдаваться в подробности о его работе, дам только несколько советов.
— Marmoset Toolbag позволяет повысить разрешение и качество сэмплирования финального рендеринга в настройках захвата. Это не влияет на выводящуюся картинку — только на результат рендеринга. Я всегда делаю рендеринг на очень высоких разрешениях, — потом их можно понизить в Photoshop. Посколько рендер происходит очень быстро, я также «выкручиваю» сэмплы на максимум.
— Корректируйте свет для каждого «снимка». Не используйте одно и то же расположение источников для разных точек камеры. Убедитесь в том, что для каждого угла есть правильные ключевые и дополнительные источники освещения, подчёркивающие детали модели.
— Глобальное освещение. В реальном времени эту функцию можно использовать со времён Marmoset Toolbag 3. Она добавляет глубины свету, ассет выглядит менее плоским, в нём становятся видны тонкости.
— Безопасный кадр (safe frame). В камере рендера есть включаемая опция «Safe Frame». Она показывает границы финального рендера — становится проще кадрировать изображение.
— Постобработка в Photoshop. Я никогда не публикую результат рендера напрямую из Marmoset, а пытаюсь улучшить его: добавляю несколько настраиваемых слоёв, чтобы подправить контраст, насыщенность, добавить логотип и имя.
— Мне также нравится делать изображение более чётким (sharpen), для акцентирования деталей, но вместо того, чтобы применять фильтр ко всей картинке, я делаю это только на отдельных интересных участках. Это происходит так:
1. Переношу изображение на новый слой.
2. Делаю его чёрно-белым.
3. Применяю фильтр «high pass» и пробую разные настройки, чтобы меньшие детали появлялись на предварительном просмотре.
4. Накладываю ещё один слой, к которому применяю чёрную маску.
5. «Маскирую» акцентированные зоны.
Советы
Если вы хотите попасть в игровой 3D-продакшн, есть много туториалов. Вот неплохой список самых известных сайтов с платным и бесплатным обучением.