Создание реалистичной модели болтореза Порта в Blender, ZBrush и Marmoset Toolbag
Александр Резник рассказал о создании модели болтореза Портера, показал, как он использовал кисти для нанесения вмятин и следов износа, и объяснил, как добился эффекта металла с помощью цвета и освещения.


Введение
Привет, отважный читатель, который решил открыть эту ссылку! Меня зовут Александр Резник. Я старший художник по автомобилям из Киева. Говорят, я немного странный, но, думаю, в игровой разработке это почти требование. Я наткнулся на этот мир 10 лет назад, когда думал, что стану иллюстратором.
И нет, у меня нет формального художественного образования, я просто много рисовал с самого раннего возраста. Я очень хотел перейти из своей карьеры в сфере моды на что-то более художественное, поэтому начал искать курсы, и совершенно случайно Google предложил мне 3D-графику. Это было как удар молнии: «Чувак, вот оно!»
Ещё с детства я занимался одним делом — играл во всё, до чего мог дотянуться. От ранних компьютеров конца 80-х до пиратских (и не очень) консолей начала 90-х (Украина в 90-е была ещё тем местом), и, конечно, король игр — ПК.
Я записался на курсы (это было задолго до того, как «войти в IT» стало повсюду), работал очень усердно, и через год получил должность младшего художника по автомобилям в Wargaming. Начало было абсолютно напряжённым. Новая жизнь, наконец-то творческая карьера мечты, отзывы на этапе «выпечки», охватывающие 300 страниц Word обо всех предыдущих этапах. Да уж. Хорошие времена.
С тех пор я работал над несколькими проектами, о которых не могу говорить, но в основном над World of Tanks. Большую часть времени я работал над транспортными средствами, но было много задач и с реквизитом и материалами.

Идея болтореза
После завершения моего последнего крупного проекта (перископа) я решил немного изменить свою точку зрения. Если основная идея того проекта была: «создать как можно больше разнообразия на почти полностью раскрашенном объекте», то для этого я хотел пойти другим путём: увидеть, где лежат пределы моих способностей (как физических, так и когнитивных), когда дело доходит до деталей микроповерхностей.
Поскольку усложнение своей жизни и изобретение проблем в каждом маленьком месте было третьим, чем я занимался с детства, я решил сделать всю кисть вручную. Я имею в виду следующее: в сети полно действительно хороших кистей, альф и поверхностных шумов, которые вы можете легко объединить в почти готовую поверхность с минимальными исправлениями. (Даже если она не соответствует фотографии в точности, главное, чтобы металл был чётко виден, цель достигнута.) Но если вы действительно хотите что-то понять, вам нужно изучить это глубоко.
В случае поверхностей, чтобы научить свой мозг, как выглядит металлическая поверхность и как она формируется, мне нужно воспроизвести эти неровности своими руками. Вам не нужно лепить каждую точку кистью DamStandard, но вы должны постараться воспроизвести как можно больше.
Я выбрал инструмент в качестве своего объекта по простой причине: он хорошо умещался на экране при крупных планах. Очень длинные объекты сложно рендерить, поэтому компактные просто более практичны.
Найти ссылки на интересный объект, когда вы даже не знаете, каким он будет, непросто. Для меня Pinterest и Unsplash помогают больше всего. На первом не всегда есть изображения с высоким разрешением, но в художественном плане они часто намного лучше, чем то, что выдаёт Google. Unsplash, с другой стороны, — это сайт фотографов, с большими изображениями, но немного другим характером. Pinterest на самом деле предложил ссылки на болторез Портера, я думаю, с eBay. Вот несколько из них:



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

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

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

Просто находка, если вы можете найти ортогональную фотографию вашего объекта. Если она достаточно близка, вы можете исправить перспективу в Photoshop. Чуть больше трёх лет назад я перешёл на Blender. Вот как выглядит настройка референсов в нём. Дело в том, что у этой плоскости есть такие настройки:

И это очень удобно. Я могу перемещать референс вперёд или оставлять его на заднем плане, как мне нравится. Я могу настроить его прозрачность или сделать видимым только в перспективе или в ортогональном виде. Он автоматически масштабируется и настраивает альфа-канал.
Если вы не можете найти ортогональную фотографию и у вас есть только перспективный снимок, вот ещё один приём, который я использую. Сначала вам нужно хотя бы примерно заблокировать размеры с помощью простых коробок, основываясь на том, что у вас есть. Вы можете установить фоновое изображение для камер в настройках.
Есть даже несколько дополнительных настроек, чем на референсной плоскости, но чтобы использовать этот метод, вам нужно создать отдельное окно камеры и попытаться максимально точно сопоставить настройки и положение вашей камеры с блокировкой.
Моделирование
Я всегда начинаю моделирование с блокировки. По сути, это процесс, в котором вы пытаетесь понять пропорции и просто начинаете знакомить свой мозг с объектом. Если объект состоит из множества сложных форм, я сначала собираю всё из примитивов, двигаясь от большого к малому. Точек должно быть достаточно, чтобы геометрия не выглядела слишком низкополигональной, но и не миллионы. Только после этого я перехожу к усложнению. Обычно я начинаю либо с самой сложной формы, либо с самой крупной.
Что мне определённо нравится в Blender для моделирования, так это его гибкость. Тот факт, что модификаторы очень стабильны, позволяет мне многое настраивать практически на любом этапе. Вот пример: на ранней стадии формирования форм я обычно использую только одно лицо, применяя толщину с помощью модификатора Solidify. Таким образом, у меня всегда правильная толщина, даже когда формы меняются. Это также помогает лучше считывать форму.
Вот ещё один пример: поскольку стек модификаторов, как я уже сказал, очень стабилен, я могу установить толщину с помощью Solidify, а затем применить булевы операции, и в большинстве случаев расчёт выполняется правильно. Но вы можете пойти ещё дальше и настроить не только основную форму. Например, у меня есть этот объект-резак для булевых операций.
Сейчас он плоский с обеих сторон, но если я назначу группе вершин одну сторону и применю скос к этой группе, я получу полностью управляемый скос, который я могу настроить как угодно, пока не применю его.
Я не буду вдаваться в подробности о моделировании, потому что, честно говоря, здесь особо нечего сказать. Я думаю, что этот процесс более или менее одинаков для всех. Если вы хотите услышать что-то более интересное на эту тему, я настоятельно рекомендую ознакомиться со страницами Джордана Кейна. Он классный парень и много пишет в X. Вот разбор моделирования рукоятки:
Обычно на этом этапе у меня есть два варианта: либо бросить всё в ZBrush и полировать модель там, пока она не окажется там, где нужно, либо сначала сделать традиционную подмодель, а потом перейти в ZBrush. Не помню почему, но здесь я выбрал второй вариант.
Обычно я тоже использую шейдеры со скосами, но поскольку я люблю лепить объекты перед запеканием, я использую этот метод только тогда, когда у меня мало времени и лепка не нужна.

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


Конечно, сначала я попытался вылепить его как есть. Классический метод: сохраните морф перед началом, затем «нарисуйте и сотрите». Но, как я упоминал ранее, кисть была в три раза больше, поэтому я в итоге стёр две трети. Мой хороший друг Илья Чернобров предложил простой обходной путь: увеличьте объект в 10 раз перед экспортом. И вот результат.

И вот кисть даже чуть большего размера. То, насколько вы её увеличите, действительно может зависеть от того, насколько мелкими вы хотите сделать детали. Я довольно часто использую этот набор кистей как на ранних, так и на поздних этапах. Я также рекомендую ознакомиться с этим материалом (я использую многое из того, что там описано). К сожалению, у меня не осталось файлов WIP, но процесс примерно такой:
Когда дело доходит до надписей, первая остановка — Photoshop. Я создал альфа-версию текста, убедившись, что расстояние между буквами примерно соответствует референсу, который был моим основным ориентиром.

Перед применением букв я делаю отдельное сохранение и сбрасываю морф.
К этому моменту модель кисти уже довольно близка к завершению. Можно приступить к финальной полировке. Обычно на этом этапе я стараюсь рассмотреть разные части модели под разными углами и с разных расстояний. То, что отлично смотрится в крупных планах, может полностью потеряться с большего расстояния.
Никогда не помешает слегка усилить точки интереса. Для этого я использую две кисти: Contrast Delta и Target. Они также полезны, если, например, вам кажется, что глубине или чёткости скульптуры не помешало бы немного дополнительного усиления.
Чуть не забыл, для этого проекта мне было любопытно посмотреть, как нанесённая прямо на скульптуру грязь может повлиять на общий вид изношенных участков (обычно я добавляю её в текстуру). Поэтому я добавил грязевые основы по всей модели.
Low-Poly и UV
Обычно на этом этапе я конвертирую свою среднеполигональную модель в низкополигональную. В этом случае я начал делать то же самое. Первоначальный план состоял в том, чтобы перенести грязь и текст с помощью смещения. Но когда один элемент был готов, я протестировал на нём карту высот, и результат оказался совершенно неудовлетворительным. Поэтому я начал переносить наиболее заметные детали на саму геометрию. Цель состояла в том, чтобы сохранить все детали, обеспечив при этом хорошее затенение.

Затем мне стало лень полностью ретопологизировать модель (без особой на то необходимости), поэтому я начал искать другие способы. Один мой хороший друг предположил, что если цель проекта — только рендеры, то часто используют упрощённую скульптуру как низкополигональную. После небольшого экспериментирования я так и поступил, используя этот метод.
В конце концов, основное внимание в этом проекте было уделено двум этапам: скульптурированию и наложению текстур. Преимущество такого низкополигонального подхода заключается в том, что он поддерживает почти все детали за счёт геометрии, хотя и минимально. Я разложил UV-развёртку с помощью плоской проекции, чтобы получить как можно больше неповреждённых частей. Обычно, когда я не знаю, какая плотность текселей мне нужна, я использую высококачественную альфу или текстуру (8K) в альбедо как своего рода шашечку и останавливаюсь там, где качество выглядит правильным.
Здесь я просто масштабировал самую большую неповреждённую часть настолько, насколько позволяла карта, с небольшим буфером. В результате получилось 21 тыс. пикселей на метр, три с половиной карты 4K, всё сделано в Blender.

Запекание и наложение текстур
Для моей дневной работы я по-прежнему запекаю большинство мелких деталей в Maya (потому что мне гораздо больше нравится качество переходов), а все крупные детали помещаю в Marmoset Toolbag. Здесь же высокополигональная модель насчитывала 120 миллионов полигонов. Это было слишком много даже для Marmoset Toolbag (не говоря уже о чём-либо ещё). Она перестала сбоить только около 30 миллионов.
Итак, понемногу, используя децимацию, я искал максимально возможный предел. У каждого набора UV была своя отдельная сцена (иначе она бы вылетала). Marmoset Toolbag — настоящий зверь, когда дело доходит до скорости.

Обычно в Marmoset Toolbag я запекаю только карту нормалей. Что касается входных карт (AO, кривизны и т. д.), я предпочитаю получать их из Substance 3D Painter. Для этого я всегда веду отдельный файл проекта, где могу добавить дополнительные детали нормалей, быстро внести коррективы, а затем экспортировать все карты сетки. После этого я подключаю эти экспортированные карты в свой основной проект по наложению текстур. Таким образом, основной проект остаётся более лёгким, что важно, поскольку они обычно довольно тяжёлые. В этом проекте я впервые попробовал рабочий процесс UDIM, и он потрясающий.
Среди художников, занимающихся разработкой игр, распространено мнение, что создавать что-то с очень высокой плотностью текселей легко («просто накинь умный материал, и всё готово»), а настоящая сложность заключается в работе с низкой плотностью текселей. Я не совсем с этим согласен. Эта идея обычно рушится, когда вы на самом деле применяете умный материал и понимаете, что при высоком разрешении текселей каждый недостаток становится виден.
Более того, мазки по умолчанию (не все, но большинство) становятся очень заметными, поэтому использование трафаретов для рисования становится почти обязательным. Если нет особой логики или исключений, я обычно структурирую свои материалы примерно так же, как они существуют в реальной жизни: металл → ржавчина → краска → грязь и так далее.

Обычно я начинаю с материала, который покрывает наибольшую площадь на объекте, и работаю от крупного к мелкому. Так я не трачу время на проработку деталей, которые всё равно не будут видны. Структура почти любого материала, который я делаю, обычно делится на три части: светлая (1), средняя (2) и тёмная (3). В случае с металлом вот как я это понимаю на основе референса:

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

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

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

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

Я не большой поклонник текстур с «плоским заполнением». Даже если объект в реальной жизни окрашен монохромно, у него всё равно будут хотя бы едва заметные цветовые вариации. Поэтому в этом случае я использовал два дополнительных оттенка: более холодный, голубоватый и более тёплый, слегка фиолетовый. Для края я применил зеленоватый контур с немного более высокой шероховатостью. Вся маска была в основном раскрашена с помощью трафаретов с использованием жёсткой кисти.
Поскольку грязь оказывала следующее по величине влияние на внешний вид модели, я начал со слоя лёгкой пыли. Эта группа оказалась самой большой по объёму, но по какой-то причине она также выглядела хуже всего на рендерах. Я покажу вам на слайдах, насколько больше нюансов присутствует в текстуре в Substance 3D Painter.
Я объясняю это недостатком опыта работы с Octane (это была моя вторая крупная модель, которую я там рендерил). Итак, для пыли я начал с простого генератора, в основном используя кривизну.

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

Эта часть была одной из самых весёлых.
Я нарисовал эти слои с помощью кисти, настроенной на режим осветления (чтобы создать накопление грязи), и набором трафаретов для песка. Я не буду называть конкретные, в основном потому, что моя папка с трафаретами занимает почти 100 ГБ и организована по назначению, а не по источнику. Так что я, честно говоря, не могу сказать, какой трафарет из какого набора. Но я определённо рекомендую иметь как можно больше высококачественных трафаретов.
Как видно на референсах, в определённых местах ржавчина «выступает» или «лежит» на поверхности грязи. Поэтому я добавил два слоя ржавчины в папку с грязью. Чтобы сделать её более реалистичной, они «пропускаются» через якоря по самым крупным кускам грязи и песка.
Завершающими этапами в этой группе являются слои коррекции цвета и два контурных слоя. Коррекция цвета позволяет добавить ещё больше цветовых вариаций в нужные области без дублирования стеков или материалов. Хотя, должен признать, эти слои в режиме Pass-through становятся довольно тяжёлыми по мере добавления новых.
Контурные слои помогают различать краску между светлыми и тёмными областями. Одна странная вещь появилась с грязью, и я заметил это довольно поздно. Обратите внимание на то, как выглядит песок.
Видите, насколько он плоский, когда вы его поворачиваете? Я долго не мог понять, почему это происходит. В один день я рисую грязь, и она выглядит отлично, на следующий день я сажусь, и всё выглядит грустно. Я так и не понял причину. Мой шум применяется по высоте (так что он не должен зависеть от направления света), HDR в сцене привязан к камере, и ничто не маскируется на основе запечённого освещения. Странно, правда? Может быть, это как-то связано с UDIM и тем, что материалы инстансируются между наборами UV. Если кто-то знает, напишите мне сообщение. Я бы хотел это прочитать.

И последняя важная группа — ржавчина. Это единственный материал, который я не делал сам. Это материал с сайта Textures.com (Rust Plain). Я использовал один и тот же материал для всей модели, но настроил его через HSL и добавил два слоя по высоте. Вот разбивка на слайдах:
Рендеринг
В основном я рендерю в Octane (для Blender). Я просто поражён его гибкостью и удобством. Это не совсем просто, но невероятно удобно. Самая большая проблема — нехватка обучающих материалов в интернете (в отличие от Cycles, например), но можно провести параллели между версиями Blender и Cinema. Я всегда рекомендую делать тестовые рендеры на очень раннем этапе текстурирования.
По крайней мере, это помогает согласовать параметры текстуры со сценой рендеринга. Вы получите наилучшие результаты, если ваш HDR будет одинаковым как в Substance 3D Painter, так и в рендер-движке. Я делал тестовые рендеры почти для каждого материала, который добавил в проект.
Как только все материалы будут готовы, я перехожу к рендерингу сцены. Я никогда не тороплюсь с этим шагом, вместо этого я исследую разные углы и освещение, пока не найду что-то интересное. Вот несколько отброшенных версий.


Как видите, моя сцена рендеринга довольно проста. Для освещения я использую HDR и один или два источника света, иногда подключая текстуру альбедо студийных светильников или другой HDR. Это просто делает освещение немного более интересным. Для создания акцентов я использую простые примитивы, они отбрасывают тени и направляют взгляд зрителя на нужные мне места.
Иногда я делаю несколько рендеров с разными настройками освещения. Например, если крупный план получается немного тёмным, я могу сделать ещё один рендер с нейтральным голубоватым освещением, чтобы позже использовать его в качестве AOV для заполнения теней. Для окончательной настройки я обращаюсь к Photoshop.
Фильтр Camera Raw — невероятно полезный инструмент, который позволяет вам улучшать изображение неразрушающим способом, избегая любых искажений. Большинство художников вносят стандартные изменения, такие как резкость, яркость, контрастность и коррекция цвета. В Camera Raw они организованы в различные группы, что даёт вам гораздо больше контроля. Я настоятельно рекомендую его.
Заключение
Если вы хотите создать качественный ассет, вы должны выходить за пределы своих возможностей. Другого пути нет. Я даже не могу начать рассказывать вам, сколько раз мой мозг просто взрывался, потому что я не знал, что ещё сделать, чтобы улучшить результат. Умные люди говорят, что именно в этот момент происходит интенсивное обучение. Это момент, когда вы преодолеваете препятствия, которые ваш мозг ставит перед вами, чтобы сэкономить энергию.
Так что лучший совет, который вы можете получить, уже был сказан миллион раз: «всегда делайте несколько проектов для себя», «выбирайте сложные задачи и выкладывайтесь на полную», «исследуйте области, связанные с вашей работой, которые вы раньше не пробовали», и «ищите решения у других художников, потому что вас окружают так много талантливых людей».
После завершения этого проекта моя скорость лепки значительно улучшилась. Я также понял, что усложнял текстуры, поэтому лучше и быстрее делать их проще. Я также начал делать быстрые сцены из фотографий (обычно менее чем за 16 часов), чтобы улучшить свои навыки композиции и рендеринга. Я покажу вам только одну из них:

Я очень ценю, что вы дочитали до конца. Я знаю, это было непросто. Извините за это! Желаю вам огромного успеха в ваших творческих начинаниях. Если вы продолжите в том же духе, вы обязательно достигнете того, чего хотите.
Александр Резник, CG Artist
Интервью проведено Эммой Коллинз
Автор: Oleksandr Reznik
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.