Making of: Crossbow | Данил Шамраев

Хотите знать, как создавался тот самый арбалет, который забрал первое место одноименного Челленджа? Данил Шамраев рассказал о каждом этапе своей работы и детально разобрал блок освещения и рендера.

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

Знакомство

Привет! Меня зовут Данил. Мне 22 года. Я учусь на магистра - журналиста, но совсем скоро меня выгонят из универа :). Осознанно в 3D графику я стал вливаться примерно полтора года назад. По большей части, 3D — это хобби, одна из тропинок на пути к моей мечте, но это совсем другая история.

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

Artstation Данила.

Арбалет на Sketchfab.

Концепт

Конкретно для этого проекта я решил использовать уже готовый концептарт и ориентироваться на него, ибо на работу оставалось чуть меньше двух недель, а тратить время на проработку концепта мне не особо хотелось. Я увидел этот арт в обычных Яндекс Картинках и сразу понял, что буду делать именно этот арбалет. Другие варианты практически не рассматривал. Единственное, что мне не особо понравилось в нем - слишком детальная гравировка. Она создает много шума и из-за этого сложнее читать форму самого объекта.

1-4.jpg

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

Моделирование

Здесь: стандартный пайплаин High Poly / Low Poly. Сначала сделал блокинг из примитивов, чтобы подобрать подходящие пропорции, размеры деталей и понять их общую форму. Я не особо зацикливался на соответствии референсу, больше фокусировался на том, как модель выглядит во вьюпорте.

1-4.jpg
Blocking

Затем я приступил к моделированию базового меша. Как можно видеть, модель по большей части симметрична как по вертикали, так и по горизонтали. Поэтому работал я над 1/4 части от итогового объекта.

1-4.jpg
Base Mesh

Уже из базового меша я сделал High и Low Poly версии модели. Исключением стали череп, крылья и лапки. Их я скульптил прям внутри Blender, а затем вручную сделал ретопологию под Low Poly. Кстати, именно на этих частях сетка чуть плотнее, несмотря на то, что детали относительно небольшие. Сделал я это для того, чтоб подчеркнуть их визуальный "вес" и на этапе рендера взять крупные планы данных мест.

1-4.jpg
Low Poly
1-4.jpg
High Poly
1-4.jpg
Повышенная плотность геометрии на акцентных участках

При создании бобин я также не пожалел полигонов. Это было вовсе необязательно. Даже растратно с какой-то стороны, так как эти две бобины весят 7 000 треугольников из общего числа в 30 000. Но это ради все тех же крупных планов и реальных, а не фейковых, форм для презентационного ролика. Напомню, что именно на художественность я делал упор.

1-4.jpg
Low Poly // Low Poly + Normal // Low Poly + Textures

UV развертка

Обычная UV развертка по всем требованиям High/Low пайплаина. Единственное, что здесь может быть интересным, так это использование Overlapping с вертикальным отзеркаливанием (верх правой стороны модели — это низ левой, а верх левой — низ правой стороны) на симметричных частях, однако переднюю часть я оставил уникальной, просто чтоб дублирование текстур было менее заметным при виде спереди. Я также слегка повысил плотность текстуры на акцентных участках (череп, крылья, лапки). Наиболее высокий тексель получился на верхних / нижних частях бобин, так как вся детализация в этой области сделана исключительно через запеченную карту Normal.

1-4.jpg
Синяя область уникальна, а красная использует Overlapping

Текстурирование

Текстурирую по-классике в Substance Painter, причем в старенькой версии за 2018 год [что-то поновее мои ноутбук попросту не тянет]. И вот в ней мне не особо понравилось то, как печется карта ambient occlusion (я перетыкал все галочки и параметры, но разные текстурные сеты не хотели между собой взаимодействовать. В новых версиях ситуация, возможно, лучше). Поэтому впервые попробовал запечь что-то в Marmoset и результат меня порадовал. На радостях normal и curvature я запек там же.

44.jpg

AO из Substance Painter

44.jpg

AO из Marmoset

01
03

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

44.jpg

Левое изображение Substance // Правое изображение Marmoset

44.jpg

Левое изображение Substance // Правое изображение Marmoset

44.jpg

Левое изображение Substance // Правое изображение Marmoset

01
03

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

1-4.jpg

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

Свет, камера, рендер

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

Перед тем, как собирать сцену и выставлять освещение, я продумываю настроение итоговой картинки – ее вайб, так сказать. На самом деле, еще на этапе подбора концепта я мысленно вписываю объект в те или иные условия, чтоб раскрыть его характер. Мне очень помогает подход, при котором я думаю о модели, как о главном герое какой-то небольшой видеозарисовки. Это позволяет не только подобрать настроение, но и ракурсы, и участки визуальных акцентов.

1-4.jpg
Пример использования референсов настроения на одной из прошлых работ

Также не стоит пренебрегать референсами. Подбирай опорный материал не только по формам, геометрии, деталям, материалам, свету, окружению, но и настроению. Это, пожалуй, самыи абстрактный тип референсов, который ориентирован, в первую очередь, на твои эмоции. Ибо, если мы говорим о художественности, то именно эмоцию ты должен вложить в свои финальный рендер. В качестве «вайбовых» референсов подойдет практически любое изображение (да и не только изображение). Главное, чтоб сама модель была органично вписана в это настроение.

Подобный тип референсов крайне универсален, так как его можно использовать на каждом из этапов работы в своем проекте, но большее влияние они оказывают именно на этапе рендеринга и постобработки. Более предметно я могу описать так: настроение – это бульон, а уже в нем варятся ингредиенты из текстур, форм, материалов, геометрии света, ракурсов и т.д.

1-4.jpg

Ладно, отойдем от лирики и взглянем на более конкретный пример. В качестве референса настроения для арбалета я решил использовать игру Amnesia: The Dark Descent. В ней намешано много всего с точки зрения эмоциональной атмосферы, но я выделил лишь один слои, который я обозвал «мрачное благородство». В него хорошо вписывались металлические материалы, гравировка, принцип работы орудия, его временной промежуток, скульпт черепушки, крыльев и т.д.

Оставалось для рендера добавить лучи света (God rays), которые бы визуально "превозносили" и акцентировали часть модели. Им я противопоставил, как по цвету, так и по расположению, красное свечение, которое добавило слегка зловещую нотку и подсветило нижнюю часть модели.

1-4.jpg

По своей сути, я использовал видоизмененную трехточечную модель освещения. Начал я с расстановки основных двух ламп.

Лампа №1

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

1. Источник света должен быть небольшого радиуса и размера (в моем случае размер равен 21.4°, а радиус и вовсе равен 0);

2. Источник должен находиться далеко от объекта.

Лампа №1

Чем дальше лампа от объекта, чем меньше ее радиус и угол (Size), тем параллельнее становятся лучи, и тем жестче тени у нас получатся.

1-4.jpg

Расстояние от куба : 1м // 1м // 5м

Power: 2 000 W // 14 000 W // 100 000 W

Radius: 0,25 м // 0,75 м // 0 м

Size: 45° // 20° // 5°

Кстати, о тенях. Так как рендер осуществляется в Eevee, не забываем включить Contact Shadows. Так конкретный источник света будет отбрасывать тени от объекта, а не светить сквозь него.

1-4.jpg
Разница между включенным и выключенным параметром Contact Shadows

Лампа №2

Источник типа Area ярко-красного цвета. Area Light хорош в создании мягких реалистичных теней и освещения по площади. Как можно видеть, его размер практически полностью покрывает модель, подсвечивает ее снизу, отделяя от черного заднего фона.

Лампа №2

1-4.jpg
Лампа №1, №2

К сожалению, при использовании движка Eevee у нас пропадает параметр Spread. Этот параметр в Cycles отвечает за угол рассеивания лучей. В Eevee угол рассеивания постоянен и равен 180°, что означает максимальное рассеивание. Таким образом, используя Area Light в Eevee, практически невозможно достичь эффекта параллельных лучей. Именно поэтому для Лампы №1 я использовал тип Spot, который имитирует поведение Area Light с низким значением Spread в Cycles.

1-4.jpg
Влияние параметра Spread в движке Cycles

Что примечательно конкретно для этой лампы: я не активировал параметр Contact Shadows, поэтому свет прошел сквозь модель и подсветил ее внутреннюю часть. Это яркий пример того, как, решая художественные задачи, мы можем пренебречь законами физики, а Eevee позволяет добиться нужного эффекта в два клика (точнее, мне даже не пришлось делать никаких кликов, так как параметр по умолчанию выключен).

1-4.jpg
В данном случае выключенный параметр Contact Shadows дает лучший результат

Лампы №3, №4 и №5

Источники типа Area и Point. Все эти три лампы выполняют одну задачу – создать световои контур по форме, который бы отделил модель от фона. Это так называемый Back Light или контровой свет.

Параметр Contact Shadows включен у всех ламп и использует стандартные настройки. Ничего особенного в этих источниках нет.

Лампы №3, №4 и №5

1-4.jpg
Лампы №1, №2, №3, №4 и №5

Лампа №6

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

Лампа №6

1-4.jpg
Лампы №1, №2, №3, №4 и №5, №6

GI (global illumination)

Глобальное освещение. По сути, это обычная HDR карта, подключенная к узлу мира. Ее задачи: выровнять контраст света / тени на объекте, добавить легкой вариативности по свету, а также создать отражения на гладких поверхностях модели. Так как мне не нужно, чтоб GI оказывал влияние на цвет света в сцене, я убрал его насыщенность.

GI

Лампа №7

Это интересная лампа, ведь она не освещает арбалет в отличие от других. Она имеет тот же тип, поворот и цвет, что и Лампа №1, но если Лампа №1 отвечает за свет от лучей, то Лампа №7 обеспечивает визуальное представление этих самых лучей, но никак не влияет на освещение.

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

1-4.jpg

Для отображения лучей я подключил вольюметрику в узел мира и установил на 0 параметр Volume у всех ламп, кроме Лампы №7, дабы они не оказывали эффект на вольюметрику.

Для Лампы №7 наоборот, я установил значения Diffuse и Specular в 0, чтоб она не оказывала влияние на освещение объектов и блики (да, в графе Diffuse стоит значение не 0, а 0,01, далее я объясню, зачем так сделал). Стоит отметить, что поля влияния на Diffuse, Specular и Volume у источников света есть только при рендеринге в Eevee. В Cycles можно добиться подобного эффекта, но достигается он другими методами.

1-4.jpg
Настройка вольюметрики в сцене

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

1-4.jpg
Фильтр лучей
1-4.jpg
Сравнение: эффект с фильтрацией // эффект без фильтрации

Лампа №8

Источник типа Point ярко красного цвета. По своим характеристикам похожа на Лампу №7: создает свет в объеме и не имеет никакого влияния на диффузный свет и на отражения. Нужен лишь для того, чтоб заполнить кадр и показать направление красного света в объеме. Здесь я так же использую значение 0,01 для параметра Diffuse. Дело в том, что у Eevee есть одна "особенность": если у источника света параметры Diffuse и Specular находятся в абсолютном нуле, а используется только Volume, и, если сам источник света находится вне видимости камеры, то есть вероятность, что источник света просто выключится и эффекта от Volume, естественно, не будет.

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

Постобработка

И здесь ее практически нет, так как настроенное ранее освещение меня устроило. Конкретно для этой работы я использовал стандартные возможности Blender во вкладке Color Management, поэтому цветокоррекция затрагивала только настройку яркости и контраста всей сцены. К тому же, впереди меня ждал рендеринг видеоролика, и я хотел, чтоб каждый кадр секвенции уже был скорректирован и соответствовал коррекции статических рендеров. И, само собой, не забываем про Ambient Occlusion и Screen Space Reflections для Eevee.

1-4.jpg
Настройки рендера

Видеопрезентация

Это, так сказать, развитие моего подхода. Того самого, который предполагает вписывание объекта в условия, с последующим продумыванием ракурсов и кадров. Изначально я планировал сделать полноценную сцену, однако времени на воплощение данного замысла попросту не оставалось, ибо видеоролик я принялся рендерить и собирать в последние 20 часов челленджа. Пришлось выкручиваться за счет слегка анимированного света и, разбросанных на скорую руку, лепестков.

1-4.jpg

Заключение

Это не первый мои челлендж от Kaino. Каждый раз это невероятно мотивирует, и я успеваю (не все задуманное, конечно) сделать недели за две то, с чем бы возился месяца 2, а потом все равно бы убрал в стол.

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

194