Создание ScrapBot

22-Jun-2019

   Кирилл Медведев рассказал о своей работе над ScrapBot

 

   И вот я делаю свой проект в sci-fi стилистике. Уже год я занимаюсь проработкой внутренностей космического корабля, разными деталями, предметами окружения. Но за это время, проработав множество мелких и простых объектов и порядком устав от них, я понял, что необходимо сделать что-нибудь посерьезнее консервной банки из будущего или очередной секции стен. Выбор пал на главного героя игры – космического бота- разведчика. Непосредственно в игру я его добавлять не планировал (Игра от первого лица и перед камерой торчит только грави - пушка клешня). Однако я решил сделать этого бота лицом игры, плюс, возможно, использовать в начальной кат-сцене. Поэтому пайплайн создания модели все же подразумевал PBR и дальнейший экспорт в движок, со всеми вытекающими.

 

 

Начало работы и сбор референсов


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

 

Блокинг


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

 

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

 

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

 

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

 

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

 

Высокий полигонаж 

 

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

 

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

 

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

 

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


   Так же на этом этапе были добавлены всякие мелкие царапины, следы от резки металла на круглом отверстии и швы внизу панциря.

 

   С мелкими деталями я особо не усердствовал, так как планировал добавить еще на этапе текстуринга. 


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

 

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


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

 

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

 

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

 

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

 

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

 

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

 

Низкий полигонаж 

 

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

 

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


   Итоговый «счет» всей модели составил 54к трисов.

 

UV и запечка

 

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

 

   Когда все было развернуто я так же по частям начал запечку. Запечка производилась (да простят меня поклонники marmoset) в substance painter 2. Как по мне результат вполне приемлемый и быстрый. В некоторых местах пришлось чуть пройтись фотошопом, но в остальном результат меня устраивал более чем. 


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

 

Текстуринг 

 

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


   Пайплайн текстуринга у меня следующий: сперва я добавляю различных деталей на hightmap. Разные швы, винтики, маленькие детали и прочее, что я не стал вымоделивать на хайпольке. Рисую на отдельном слое-заливке, где высота установлена в районе -0.8 пунктов.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

Визуализация

 

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

 

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

 

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

 

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

 

Заключение

 

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

 

 

 

Thanks for the information:  artstation.com

                                             render.ru

                                             gamejolt.com

 

Tags:

Share on Facebook
Share on Twitter
Please reload

Избранные посты

League of Legends | Сезона 2020

10/01/2020

1/10
Please reload

Недавние посты
Please reload

Поиск по тегам