Making Of "ScrapBot"

Доброго времени суток!
Меня зовут Кирилл Медведев и это мой первый Making of. (achievement unlocked!)
Заинтересовался 3d графикой я где-то лет в 17. Долгое время делал небольшие работы чисто для себя, и медленно набивал руку в этом нелегком деле. Позже меня затянул геймдев, в котором навыки 3д моделирования оказались крайне полезными. И вот я делаю свой проект в sci-fi стилистике. Уже год я занимаюсь проработкой внутренностей космического корабля, разными деталями, предметами окружения. Но за это время, проработав множество мелких и простых объектов и порядком устав от них, я понял, что необходимо сделать что-нибудь посерьезнее консервной банки из будущего или очередной секции стен. Выбор пал на главного героя игры – космического бота- разведчика. Непосредственно в игру я его добавлять не планировал (Игра от первого лица и перед камерой торчит только грави - пушка клешня). Однако я решил сделать этого бота лицом игры, плюс, возможно, использовать в начальной кат-сцене. Поэтому пайплайн создания модели все же подразумевал PBR и дальнейший экспорт в движок, со всеми вытекающими.

Scrap_bot_final.png

Начало работы и сбор референсов
В общем цели были поставлены – нужен максимально проработанный персонаж, которого можно будет использовать на постерах и других промо-материалах, делать шоты как вблизи, так и издалека, одновременно с возможностью закинуть модель в движок и анимировать при надобности. Для меня это был настоящий вызов, так как ничего подобного по сложности раньше я не делал. К тому же не было никаких четких концептов, а я тот еще «дизигнер». Все, что было уже готово - это клешня. Что несколько осложнило задачу, так как мне предстояло органично вписать уже полностью готовую клешню в персонажа, которого я представлял себе только в голове. Само собой я начал с поиска референсов. В чем прекрасно помогла доска на Pinterest, на которой я уже год собирал разные sci-fi арты. Для организации референсов я использовал PureRef – незаменимая в таком деле вещь, кстати.

Refs.png

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

Comp.png

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

Blocking_1.png

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

Blocking_2.png

Главным, чего я хотел добиться на этапе блокинга, был интересный силуэт и органичное расположение всех частей бота. Это в том числе помогло решить проблему вписывания клешни в бота.

silhouette.png

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

Hi-poly

Когда все части бота встали на место я получил что-то вроде mid-poly модели, некоторые части которой уже можно было использовать под сглаживание, а некоторые пришлось переделывать полностью заново. Я решил разбить бота на 4 стратегические части: тело, внешний трубчатый каркас, панцирь и все мелкие детали.

Parts.png

Каркас, тело и панцирь я так же решил пропустить через Zbrush, с которым у меня был не очень большой опыт работы. Но без скульптинга, того уровня проработки, который я запланировал, было не обойтись. Отличная возможность прокачать свои навыки!
Начал я с самой заметной части бота – панциря. Его пришлось сделать заново, так как на блокинге была уже убитая сетка, да и в любом случае он был кривоват. В процессе создания добавились новые детали, вроде выреза сбоку под шарообразный контейнер и избавление от симметричности.

Armor.png

Панцирь моделился итерациями – добавление edit poly, создание деталей, затем одна итерация turbosmooth, новый edit poly и добавление более мелких деталей.
Вот так выглядит финальный стак модификаторов.

Armor_set.png

Однако проблемой для меня стал фонарь, который должен был плавно срастаться с панцирем. Как я его не приделывал, сетка в итоге превращалась в настоящий ад из артефактов. А на стадии с высокой итерацией сглаживания соединить все точки друг с другом было бы просто непосильной задачей. Поэтому сварить два трудно стыкуемых элемента я решил уже в браше с помощью магии DynaMesh’а.
Так же на этом этапе были добавлены всякие мелкие царапины, следы от резки металла на круглом отверстии и швы внизу панциря.

ZBrush_01.png

С мелкими деталями я особо не усердствовал, так как планировал добавить еще на этапе текстуринга.
Затем наступила очередь внешнего трубчатого каркаса. У меня было желание уделить особое внимание сварным швам, которые раньше я добавлял только на этапе текстуринга, из-за чего выглядели они очень невыразительно. Каркас я так же прогнал через Dynamesh, чтобы сварные швы получились плавными и не был заметен острый угол.

ZBrush_02.png

Думаю, профи я вряд ли чем-то тут удивлю, однако новичкам может быть полезно. Вот мой быстрый пайплайн создания сварного трубчатого каркаса:
1 – Делаем болванку в максе, не «сваривая» вершины. Просто втыкаем геометрию друг в друга. И кидаем как есть в браш. Сразу сглаживаем на 5-6 сабдивов.

WelderStep_1.png

2- Используем DynaMesh, установив побольше разрешение (в моем случае это была 1000) и отказываемся от заморозки уровня сабдивов.

WelderStep_2.png

3 – Отлично, геометрия объединена, при этом угол остается достаточно острым. Я немного его сглаживаю, используя кисточку Clay и затем пройдясь smooth’ом.

WelderStep_3.png

4 – ну и самое приятное – используя кисточку со сваркой (Уже давно где-то купил небольшой пак альф для эффекта сварки), включаем небольшой lazy mouse и просто рисуем им вокруг шва. Занятие дико залипательное, советую для релаксации на ночь.
Остальные части бота на этапе хайпольки ничем особым не отличались. Я просто брал деталь с блокинга, немного дорабатывал сетку и добавлял грани поддержки для будущего сглаживания. Пришлось немного покорпеть с «телом» из-за большого количества втыкаемых в него деталей:

HiPoly_1.png

Финальная хайполька (без деталей из браша) выглядит вот так:

HiPoly_2.png

Сетка без сглаживания:

HiPoly_3.png

Low-poly
Теперь, когда все хайпольные элементы уже были готовы, пришла пора ковать лоу-поли версию. Тут все объекты были поделены по сути на две категории – те, с которых можно было просто снять доп. грани для сглаживания (поэтому грани поддержки я добавлял отдельным edit poly модификатором, чтобы для low-poly версии просто удалить его и избавиться от ненужных граней) и те, что нужно было ретопить. Ко второму типу относился только панцирь и его небольшие кусочки. Ретопологию я выполнял стандартными возможностями макса из панели ribbon.

Wireframe_1.png

Сетка получилась далеко не идеальной, некоторые моменты явно лишние, но учитывая, что эта часть никак не будет анимироваться и нагружать игровой процесс ей так же не предстоит, я решил сэкономить время и не вычищать все до конца.
Итоговый «счет» всей модели составил 54к трисов.

Wireframe_2.png

UV и запечка.
Так как бот уже был разделен на 4 логические части, я решил, что и развертка для каждой из них будет уникальная. Больше всего пришлось посидеть с деталями, так как их было действительно много. Развертывал стандартными средствами макса + немного помогал TexTools. С помощью чеккера и кнопочки rescale, я привел общую текселизацию к приблизительно одному уровню (+-15%)

UV.png

Когда все было развернуто я так же по частям начал запечку. Запечка производилась (да простят меня поклонники marmoset) в substance painter 2. Как по мне результат вполне приемлемый и быстрый. В некоторых местах пришлось чуть пройтись фотошопом, но в остальном результат меня устраивал более чем.
В пэйнтере я запек помимо нормала и все остальные каналы – включая Ambient Occlusion, curvature, position, world space normal, thickness. Учитывая, что все части запекались отдельно, то например тень от панциря в АО тела и деталей не присутствовала. Поэтому я отдельной итерацией запек ао-шку уже всего бота целиком и объединил с АО каждой части. Немного запарно, однако, чем более подробная карта теней и curvature получится в итоге, тем лучше будут вести себя smart-материалы, для которых информация с таких карт крайне важна.

Channels_01.png

Текстуринг
Ну и самое сладенькое. Как известно, хорошую модель, можно запороть плохой текстурой и наоборот: плохенькую модельку вытащить хорошими текстурами и подать на блюдечке из киношного рендера и освещения. В моем случае моделька сама по себе имела не так много деталей до текстуринга. Особенно голым казался панцирь, который занимал 80% пространства, особенно если смотреть на модель под углом. Поэтому задача текстуринга в моем случае была, как можно более интересно закрасить панцирь, добавить так называемые points of interest – детали притягивающие взгляд. Это могут быть различные надписи, наклейки, необычные сколы, потертости и т.п. В общем все, что максимально разнообразило бы большие и ровные площади панциря. Ну и про более мелкие детали тоже не стоило забывать.
Пайплайн текстуринга у меня следующий: сперва я добавляю различных деталей на hightmap. Разные швы, винтики, маленькие детали и прочее, что я не стал вымоделивать на хайпольке. Рисую на отдельном слое-заливке, где высота установлена в районе -0.8 пунктов.

High_map.png

Затем я экспортирую получившиеся карты нормал и хаймапу. В дизайнере я прогоняю их через ноды Curvature и Ambient Occlusion и объединяю с запечёнными ранее картами. Примерно так выглядит дерево нодов.

Nodes.png

Получив AO и curvature со всеми возможными деталями, начинается процесс раскрашивания. Так как все нужные доп. карты уже готовы я обычно сразу подбираю подходящий smart-материал, как базу, с которой можно будет работать + разбиваю модель по цветам. Ну а дальше начинается жонглирование разными картами грязи, пыли, потертостей и т.п. Я обычно использую маску со слоем-заливкой к которой подключен генератор, а сверху вешаю paint слой, где уже руками дотираю или грязню нужные места, которые смарт-материал обошел стороной. В случае со старой краской основными местами для затирки были углы, а в углублениях я добавлял больше пыли и грязи. Примерно такой стак материалов был на каждой из 4-х частей.

Materials.png

Когда я добавляю грязь и потертости, то всегда проверяю отдельно карты roughness и metallic. На рафнесе желательно иметь как можно более разнообразную текстуру, при этом стараться избегать монотонности карты бликов, чтобы не ощущалось повторение. Металлик я контролирую так, чтобы на нем не появились серые пятна, так как карта металлика должна быть строго черно-белой для естественного отображения.

Channels_02.png

Ну и конечно карта цвета или albedo, должна быть максимально выразительной и нескучной. В этом как раз и помогают ранее упомянутые points of interest.

Poi_1.png

Poi_2.png

Poi_3.png

Poi_4.png

Poi_5.png

Poi_6.png

Poi_7.png

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

Plane_01.png

Plane_02.png

Запекаем все нужные карты

Plane_03.png

Добавляем материал

Plane_04.png

Сверху материал краски, внизу чистый металл. Затем настраиваем кисточку: Берем квадратную альфу и выставляем параметры Jitters примерно так.

Plane_05.png

Добавляем белую маску на краску, и начинаем «затирать» швы. Кисточка с такими параметрами дает «рваный» эффект и достаточную случайность поворота, чтобы избежать повторения. Первый проход дает примерно такой результат.

Plane_06.png

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

Plane_07.png

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

Plane_08.png

Plane_09.png

Проходимся по всем швам и выделяем разные детали вроде болтиков и ручек. Получаем такой эффект:

Plane10.png

Рендеринг
Ну и напоследок немного о рендеринге. Альтернативы Marmoset toolbag в этом деле я пока не вижу. Никаких особенных настроек в материалах я не делал, за исключением эффекта огня из турбин. Для огня были нарисованы текстуры с картой прозрачности.

FireEffect_alpha.png

В соплах были размещены плейны на которые я натянул текстурки с огнем, немного изменил их скеил и получилось ка кто так.

Fire.png

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

marmoset_stack.png

Однако стоит помнить, что перебарщивать с источниками освещения тоже не стоит и лучше ограничится 3-4 источниками на одну сцену. В рендеринге я так же выставил новую для мармосета настройку – global illumination. В некоторых случаях выглядело странно, и приходилось долго крутить настройки, чтобы все выглядело боле-менее приемлемо. Однако на некоторых ракурсах пришлось отказаться от этой фичи вообще.

Заключение

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

236826.png

236829.png

Любите, то, что делаете. Спасибо за внимание!

694 0 850 19
7
2019-05-21
Классный робот!)
2019-05-21
ну к примеру чтобы не тащить отдельно созданные детали в Дизайнер, можно работать через якоря в Паинтере они для этого и сделаны как раз. А так респект!
2019-05-21
Спасибо
2019-05-21
Спасибо за шикарный мэйк!Успехов!
2019-05-22
Клевый робот и making of. Успехов!
2019-05-23
весьма хорошо
2019-08-30
Шикарен
RENDER.RU