Making Of "Rocket Launcher".

Всем привет! Меня зовут Ратибор Мянгли/ Ratibor Myangli. В этой статье я расскажу о создании своей работы “Rocket Launcher” по вселенной игр UnrealTournament, и пройдусь по самым интересным моментам производства. С 3-х мерной графикой познакомился в 2018, последний год плотно занимаюсь совершенствованием своих навыков. Создание заняло чуть менее месяца в комфортном, спокойном темпе работы. Целью стала реализация модели по концепту с творческим подходом. Основными инструментами выступили 3dsMax, ZBrush и SubstancePainter.Постараюсь разбавлять монотонный текст картинками и небольшими отступлениями, чтобы было не так скучно.

image001.jpg

Интро.

Немного расскажу о том, как я пришёл к идее создания этого культового орудия смерти. После окончания очередного туториала, захотелось взять на реализацию какой-нибудь интересный концепт для персональной работы. Полезная привычка – регулярно закреплять новые знания на практике.По итогу я склонился в сторону моделей в духе Doom,Quake и SeriousSam – выглядят внушительно, мощно, цепляют интересными формами и принципами работы, ну и не без приятной ностальгии в процессе, естественно. Тем более почти все они выполнены в футуристичном стиле, в котором я до этого не работал, что также склонило чашу весов в эту сторону. После некоторых поисков информации я остановился на вселенной игр UnrealTournament, уж очень тёплые воспоминания об десятках часов проведённых в UT 2004.

Концепт и референсы.

Имея направление я отправился на поиски интересного концепта. Примерно час поисков привёл меня к замечательной работе Адама Вуда (Adam Wood) созданной для так и не вышедшей из пре-альфы “UnrealTournament4”.

image002.png

Мне хотелось вдохнуть немного ретро-каноничного духа в будущую модель, повысить её узнаваемость, где я вновь обратился к игре 2004 года, откуда подсобрал немного референсов (отмечу, что пополнение папки с референсами происходит зачастую вплоть до визуализации и пост-обработки, это очень помогает держать курс на протяжении всего производства, чтобы не уйти далеко от изначальной задумки и повысить качество итоговой модели). Для работы я использую PureRef – простая и приятная программа для хранения референсов, думаю многие с ней знакомы.

image003.jpg

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

image004.jpg

(куда же без культовых полосок на дулах). Работая с концептом, я заранее прикидывал объём необходимых работ, количество уникальных частей и примерное разделение на UV–сеты (в этой работе было решено использовать 2 сета). Собрав достаточное количество материала и вдохновения я приступил к делу.

Моделинг.

Весьма интересный этап, учитывая конструкцию ракетницы. Моделю я в 3dsMax. Работа началась с моделирования болванок самих стволов, а точнее дульных отверстий, взяв их за отправную точку для основных габаритов оружия. Важным нюансом было сохранение пропорций составляющих ракетницы, чтобы ничего не выделялось из общей картины и выглядело как рабочий и слаженный механизм (почему оружие перевешивает владельца – другой вопрос). Поскольку работа создавалась исключительно для портфолио, я не ставил для себя жёстких рамок по полигонажу, только рациональная оптимизация. Так как модель не подразумевала риг и анимацию, отпала надобность в моделировании интерьера, что в свою очередь сохранило львиную долю ценного UV-пространства и позволило увеличить количество уникальных элементов на текстуринге.

image005.jpg

Пришлось немного подумать над конструкцией центрального блока, откуда подаются ракеты, в остальном же формы достаточно простые. Деталь за деталью, словно конструктор, собирались части будущего оружия. По итогу я разделил все составляющие модели на две группы: первые будут экспортированы в ZBrush под dynamesh, вторые пойдут под максовский turbosmooth. Конкретно для этой работы я детализировал все меши под подобие mid-poly – точная передача всех форм без фанатизма в полигонаже, чтобы потом не составило большого труда подготовить геометрию для low-poly (говоря о пайплайне, я стараюсь для каждой работы подбирать оптимальное решение, где-то начинаю с блокаута, выстраивая силуэт, а где-то с хайпольки, всё индивидуально).

image006.jpg

Пару слов о работе с модификатором Turbosmooth в 3dsMax. Не всегда на первый взгляд правильная топология даёт приличный результат после сглаживания, об этом стоит помнить при построении модели под эти нужды дабы избежать перестраивания сетки. Нужно стараться придерживаться примерно одного размера полигонов, добавлять суппорт эджи по необходимости (supportedges). Особенно на резких углах и перепадах. Также модификатор не любит отдельные треугольники и перегруженные вертексы. Достаточно простые вещи, главное не забывать.

image007.jpg

Обычно накидываю два модификатора, первый учитывает группы сглаживания. Делается для того, чтобы сохранить видимыми углы и переходы. В таком стиле обработал все шланги, трубки, крепления (болты, гайки и т.п.), которые без проблем съедает turbosmooth. На оставшиеся детали накинул развёртку через UVWUnwrap (просто сформировал uvостровки по группам сглаживания) и импортировал в ZBrush.

image008.jpg

Развёртка необходима, чтобы разделить полигоны на группы (PolyGroups), которые будут совпадать с максовскими группами сглаживания. Дальнейшая работа достаточно однотипная: увеличиваю поликаунт через Dynamesh Master, сглаживаю полигоны по полученным группам через ползунки сглаживания, при помощи масок и кистей делаю кастомное сглаживание там, где не справились ползунки. В конце добавил нарезы на ствол через Boolean. Из кистей активно использую Morph, TrimDynamic и стандартные Move, Standart.

image009.jpg

В этот раз я решил пропустить полноценный скульпт повреждений, хотя и отмечу этот творческий процесс весьма приятным и безмятежным. Лишь сбил некоторые фаски, которые были отражены на концепте. Царапины и прочее оставил для SubstancePainter. Перед экспортом прогнал все меши через DecimationMaster, убрав лишнюю геометрию и облегчив модель.

image010.jpg

После того, как все составляющие были собраны, я приступил к созданию низкополигональной версии (хотя правильнее было бы назвать low-midpoly, уж больно высокий полигонаж вышел по итогу, что в этом случае было допустимо). Убрал всё лишнее, избавился от н-полигонов (n-gons) и сделал лёгкую ретопологию. Для большей простоты использую плагин rapid Tools, в частности инструмент cleanup и старую добрую симметрию, чтобы не повторять работу дважды. После того как дело было сделано пришло время для создания развёртки.

Развёртка.

Разворачивал модель в максе, при помощи модификатора UVWUnwrap и плагина Tex Tools. Прошёлся по всем отдельным деталям, после чего разделил меши на 2 части и упаковал. Дело достаточно рутинное и однообразное, главное по возможности избегать растяжек (особенно в тех местах, где в будущем появятся надписи и логотипы), не допускать пересекающихся шелов и выпрямлять как можно больше эджей.

image011.jpg

По итогу после автораскладки и ручной доводки получились 2 достаточно плотные развёртки. Под текстуры 4096x4096 паддинга хватило, однако для использования с более низкими разрешениями, пожалуй укладка тесновата. В конце работы присвоил группы сглаживания на основании делений на развёртке с помощью Tex Tools (в идеале, границы UVshell-ов должны совпадать хардэджами групп сглаживания, в таком случае минимален риск появления возможных артефактов).

image012.jpg

Перед экспортом в Substance Painter, я назначил для каждого UV-set’aсвой материал, через Tools–Rename Objects добавил суффиксы “_low”и “_high”лоуполи и хайполи мешам соответственно и создал “взрыв схему” модели чтобы при текстуринге получить доступ к каждому элементу c разных сторон.

image013.jpg

После пробного запекания карт в Substance Painter остался недоволен шейдингом на прикладе, после чего в максе через модификатор Edit Normals изменил значение некоторых нормалей на проблемном участке (одно из удобств запекания в Marmoset Toolbag 3 – возможность на месте редактировать нормали, я же решил сделать это в максе). Вкратце о работе с модификатором: 1. Выделяешь нормаль с подходящим значением 2. Сохраняешь её значение “CopyValue” 3. Выделяешь проблемные нормали, дающие артефакты на шейдинге. 4. Присваиваешь им новое значение “PasteValue”.

image014.jpg

Также сделал кастомный кейдж (cage) для мешей каждого текстур сета, для этого накинул Push модификатор на разделённые части модели и вручную поправил сетку в проблемных местах, чтобы не было пересечений.

Текстуринг.

Загрузив low-poly в SubstancePainter для начала запекал Normal, AO и Curvature в низком разрешении. Убедившись в отсутствии артефактов, запек все карты уже в 4096x4096 со сглаживанием и прочими атрибутами. Уже после того как текстуры были готовы, перепёк AO и Thickness, немного увеличив значение “SecondaryRays”.Деление по цветам через IDMap в этой работе использовать не пришлось.

image015.jpg

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

image016.jpg

Текстуринг обычно начинаю с создания базовых материалов, которые в последствии обрастают индивидуальными деталями (цветовые вариации, царапины, масляные пятна, пыль и т.д.). Иногда использую якоря (Anchers), они позволяют создавать в сабстансе реалистичные повреждения многослойных поверхностей. Для хорошей цветопередачи использую студийное освещение наподобие “Tomoco Studio”. При работе важно анализировать модель, создавать её историю,добавлять уникальные элементы износа, чтобы итоговая работа смотрелась живо и цепляла интересными деталями.

image017.jpg

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

image018.jpg

После того как текстуры были готовы пришло время для экспорта текстурных карт. В сабстансе есть большое количество готовых пресетов для разных программ рендера. В конфигураторе я немного отредактировал стандартный PBR Metal Rough, убрав карту высот (Height), добавив AO в режиме (Grayscale), а также карту свечения (Emissive) в RGB режиме для голографических надписей на дисплее. По итогу получилось 11 текстурных карт формата 4096x4096 поделённых на 2 текстур сета: Normal, Base Color, AO, Roughness, Metallic + Emissive.

image019.jpg

Рендер.

Рендерить модель решил в Marmoset Toolbag 3. Первым делом импортировал low-poly и подготовил место для импорта текстурных карт, немного изменив настройки: отразил карту нормалей по Y (необходимость зависит от выбора формата NormalMap “OpenGL” при создании проекта в Substance Painter, при “DirectX” карта нормалей отображается корректно), инвертировал карту Roughness (либо можно просто изменить режим Microsurface на “Roughness”), изменил цвет Albed oна белый для корректной цветопередачи, Reflectivity поставил в режим “Metalness”, добавил параметр Occlusion для карты “AO”, а также Emissive для надписей на дисплее. Также в процессе настройки освещения изменил режим параметра Diffusion на “Unlit” так как цвета были слишком яркими. После чего просто перетащил готовые текстурные карты в соответствующие слоты. Marmoset имеет полезное свойство обновлять добавленные карты текстур, поэтому в любое время можно внести правки в Substance, сделать реэкспорт и изменения тут же появятся в программе.

image020.jpg

Когда все карты текстур встали на свои места пришло время создать освещение. В этой работе использовал студийную “EnvironmentMap” высокого разрешения. Для каждого кадра индивидуально настраиваю практически все источники света, иногда выходит более двух десятков на один ракурс. Обычно начинаю с постановки окружения, как основного источника заполняющего света. После подчёркиваю контуры яркими направленными лучами и добавляю подсветку, чтобы создать интересные и выразительные блики на поверхностях. В данной работе также создал несколько источников тёплого цвета, которые хорошо сочетаются с окраской самой модели. При всём при этом не стоит перегружать работу светом, он (свет) должен выгодно подчёркивать одни части и скрывать в тени другие, создавая выразительность. Тема весьма обширная и увлекательная, процесс поискa красивого кадра может отнять десятки часов.

image021.jpg

После того, как работа со светом закончена, пришло время для рендера и экспорта готовой картинки. Выставляю практически все настройки на максимум качества, их не так много. В Capture – Settings указываю размер 10000x5000 со включенным “Transparency” для создания альфы и экспортирую в формате “targa”.

image022.jpg

Следующим шагом импорт в AbodePhotoshop. Изображение обрезал в формат 16:9, сжал до разрешения QHD, добавил резкости картинке, лёгкий блум (bloom) для ярких бликов, а также немного доработал фон, добавив тёмный градиент на углах, чтобы сместить акцент к центру. На этом пост обработка подошла к концу. Работа наконец была завершена и готова увидеть свет.

Итог.

Этот персональный проект стал для меня небольшим испытанием, цель которого - поднять планку, сделать то, чего не делал ранее. Хочу поблагодарить всех, кто поддерживал меня и делился советами, а также Render.ru за предоставленную возможность поделиться с вами этим интересным опытом.Мне очень приятно, что работа нашла своего зрителя. Теперь же на пути стоят новые цели и амбициозные проекты, всё ещё впереди. Желаю каждому найти свой путь в творчестве, помните – великое начинается с малого!

image023.jpg

image024.jpg

805 0 850 19
4
2020-09-18
Спасибо за мейкинг оф! Отличная модель получилась.
Пробывали последний Rizom для авто развертки?
2020-09-19
Денис МеленецСпасибо за мейкинг оф! Отличная модель получилась.
Пробывали последний Rizom для авто развертки?
Да, в Rizom довольно мощные алгоритмы упаковки, но к сожалению всё ещё оставляют пустые места, так что без ручной раскладки пока не обходится).
2020-09-21
Ратибор, большое спасибо за статью! Было интересно почитать.
Подскажи пожалуйста, а зачем ты AO перевел в Grayscale?
2020-09-23
Крутая работа и крутой мейкинг оф
RENDER.RU