Making Of "CAT Sloth Mecha"
Всем привет!
В этом Making of я расскажу о создании 3D модели и рендеринге по нестандартному пайплайну в Blender, Substance Painter и Photoshop.
Сама страничка работы - https://render.ru/ru/gallery/artwork/201846
Включу только интересные на мой взгляд части, потому что описание процесса полностью займёт слишком много текста.
Ключевое отличие моего пайплайна - получение карт меша и эффекта фасок без хайполи, используя лишь лоуполи модель и фильтр для запекания. Но всё по порядку.
- Концепт
Уже около полугода у меня лежал концепт от Longque Chen (Artstation), встречал его много раз и обдумывал, как эффектно сделать и подать такую модель.
Целью работы стал один ракурс на фоне природы - тот, что в начале поста. Но так как модель всё равно хотелось проработать полностью, так же осталась задумка с гаражом/ангаром для съёмки со всех сторон.
- Лоуполи моделлинг
Так как я решил обходиться без хайполи, рулить шейдингом поверхностей будет лоуполи модель. Это потребует аккуратного лоуполи моделлинга, оптимизации сетки с учётом шейдинга и работы с нормалями. Вкратце расскажу, что я использовал при моделировании:
1) Boolean + Data Transfer. В некоторых случаях Boolean портит шейдинг настолько сильно, что лучше его позаимствовать у модели, предшествующей применению булина. Вот пример:
2) Subdiv + Boolean. Для изогнутых форм я использовал сабдив-болванку, которую разрезал до нужной формы. Чтобы избежать плохого шейдинга, разделял поверхности, оставшиеся от сабдива, и полученные булином при помощи sharp edge.
- UV
Так как модель довольно крупная, соблюсти приличный тексель удалось разбив модель на несколько текстурных сетов. Два сета по 4k (для рендера экспортированные в 8к) для корпуса и один 2к - для моделей интерьера кабины. Над кабиной сильно не парился, так как за бликами стекла всё равно скроется часть деталей. Паковались UV'шки аддоном UVPackmaster.
- Запекание
Теперь перейдём к интересному. У модели есть неплохой шейдинг, но края абсолютно острые. Аддон TexTools позволяет запечь искусственные фаски и boolean-слияния на любой меш в режиме Tangent Bevel.
AA (Anti Aliasing) ставлю на максимум, так как запекание на 1x или 2x даёт жуткую лесенку. Настройки у режима запекания такие: Bevel Sample - качество запекания, Radius - размер фаски или слияния. Для каждого текстурного сета я запекал несколько фасок разного радиуса - 0.01, 0.02 и 0.03. Смешивая их через маски в Substance Painter, я могу добиться разного размера фасок на модели.
В новый проект Substance Painter я импортирую модель и все запечённые нормалки.
Далее запекаю Ambient Occlusion. Но из-за острых краёв на модели AO-шка вся покрыша швами и для использования генераторов не годится. Только что запечённую AO ставим в BaseColor нового слоя и добавляем фильтр Blur, чтобы размыть изображение с учётом швов на модели. За исключением мелких косячков из-за недостаточного margin'а на UV выглядит отлично.
Экспортирую BaseColor (выполняющий роль AO) и Normal из этого проекта и импортирую их в новый. В новом проекте из Normal запекаю Curvature, World Normal а также Position.
В процессе текстурирования нет ничего необычного. Базовые материалы, гранж, грязь, ржавчина и поверхностная hardsurface детализация при помощи альфа-карт от Jonas Ronnegard (Artstation).
- Рендер
Для модели был сделан примитивный риг с IK на лапах и работающими поршнями. Поршни сделаны через две кости, направленные друг на друга через constraint "Track To".
Тут уже интереснее. Чтобы собрать финальный рендер, необходим сам мех, ветка, мелкая растительность и ближний план.
Ветка взята из библиотеки Quixel Megascans, с разрешением текстуры 8к её очень даже хватило для рендера в 9600x7200 пикселей. Зелёная подложка сверху ветки сделана через простой шейдер:
Растительность на ветках сделана аддоном Graswald.
Перед солнцем поставил несколько веток деревьев, чтобы получить фигурные тени на мехе и ветках.
Для оживления сцены добавил двух операторов и птичек, к месту пришлась моя старая моделька бумбокса.
Большую роль сыграла постобработка, задействующая Render Pass'ы. При рендере помимо сырого выхода я сохранял AO, Diffuse Indirect, Glossy Direct, Glossy Indirect. Вот как выглядят эти пассы:
Так выглядит стак слоёв с обработкой - описание и режим наложения:
До/после:
Позже передний фон был размыт направленным блюром и размытием объектива.
Помимо рендера, схожего с композицией концепта, мне хотелось показать модель со всех сторон. Для рендера в ангаре я нашёл и сделал апскейл фотографии ангара, а через утилиту fSpy выставил камеру и импортировал её настройки в Blender.
Для реализации отражения на блестящем полу ангара пришлось поработать с рендер слоями. И так, я сделал 3 слоя:
- Object - объекты видны, в непрямых отражениях виден блестящий плейн пола. Из слоя сохраняем Composite, AO, Glossy Direct, Glossy Indirect.
- Reflection - объекты видны в непрямых отражениях, сохраняем Glossy Direct и Glossy Indirect.
- Shadow - объекты видны в непрямых отражениях, плейн с Shadow Catcher виден и рендерится как обычно.
Так выглядит композ всех слоёв в Photoshop:
По схожей схеме я собрал несколько ракурсов, включая "наелся и спит".
- Постер
Если фантазия попёрла - остановить её бывает тяжело. Ну, оно и замечательно - сделаю-ка я постер с закосом одновременно и на ретро, и на футуризм. Заодно появится некоторый бэкграунд у модели в лице годов выпуска и технических характеристик.
Описывать работу в фотошопе я не буду, а вот создание стилизованного под чертежи лайн-арта заслуживает внимания.
В версии 2.93 в Blender добавили модификатор Line Art к типу объектов Grease Pencil. Эта шляпа генерирует линии Grease Pencil'а, основываясь на геометрии назначенных объектов. Наилучший результат я получил с такими настройками модификатора (все острые края, которые я хочу перенести на чертёж, в Edit Mode объектов помечены как Freestyle Edge):
А на этом, собственно, и всё! Буду рад оценке работы на её основной странице в моей профиле, если она вам понравилась или вы нашли этот Making of полезным. https://render.ru/ru/gallery/artwork/201846
Задавайте вопросы в комментариях, если интересен конкретный момент в производстве, с радостью отвечу.