Захват ближайшего света от HDRi-карты

14 ноября 2017 9 комментариев Артем Слаква Рендеринг и освещение

Учимся любить близость

На основании многих уроков, извлеченных из недавнего проекта. Использование HDRi-карты не всегда является лучшим и единственным результатом достижения реализма.

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

Оказывается, во многих случаях это всего лишь половина истории. Что может быть хорошо и полезно для статического рендеринга, может оказаться не очень удачным, если речь идет об анимации или интеграции CG с реальным миром. Наши глаза улавливают тончайшие различия в свете и при наблюдении за трехмерным объектом, который перемещается по сцене без каких-либо изменений освещенности, мы сразу же видим, что что-то не так. А не так то, что вы используете лишь одну HDRi-карту для освещения вашей сцены.

Если мы хотим извлечь максимальную пользу из нашей HDRi, то трюк заключается в том, чтобы использовать HDRi для «реконструкции сцены». Нужно охватить нашу сцену текстурированной геометрией, содержащей все 32-битное освещение. Элементы CG должны проходить через, вокруг и возле нашей геометрии и при этом должны изменяться условия освещения.

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

Подготовка вашей сцены

Мы собираемся построить простую геометрию вокруг нашего CG элемента, чтобы удерживать позиционное освещение. Это не должно быть чем-то большим, чем серия плоскостей и кубов. Но то, что ему нужно — это позиционная реконструкция архитектурного пространства, захваченного вашей HDRi-картой. Мне нравится думать об этом, как о старых западных фильмах, где существует только передняя часть зданий, что-то на подобии гигантского рекламного щита. Я называю это комплектом освещения.

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

Зачем ждать? Ну, если вы повернете вашу HDRi позже, вам придется вращать всю геометрию, которую вы создали, чтобы она соответствовала новому положению карты. Если вы полностью замените HDRi-карту, вам, скорее всего, придется заново моделировать всю геометрию.
proximity-1
Дрон созданный в Blender (рендер Cycles). Пост-обработка ролика выполнена в Nuke.

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

Настройка камеры

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

Во-первых, убедитесь, что ваша HDRi видна на виде из камеры в режиме отображения Solid. Для этого откройте панель свойств с помощью клавиши N, и в меню Display отметьте пункт World Background. В зависимости от размера HDRi может пройти несколько секунд, прежде чем карта появится в окне просмотра.
proximity-2
Расположите вашу камеру в том месте, где была создана HDRi-карта (в ее центре). После этого перейдите на вид из камеры.

Нажатие сочетания клавиш Shift + F позволит нам оглядеть нашу сцену с помощью мышки на виде из камеры. С этой точки мы будем видеть объекты в такой перспективе, в которой они будут на финальном рендере, что пригодится нам при реконструкции сцены.
proximity-3

Добавление мешей для освещения сцены

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

Во время реконструкции всегда смотрите на меш через вашу камеру, вращая ее с помощью Shift + F.
proximity-4
Если плоскость совпадает с окружающим миром во время вращения камеры, вы можете быть уверенными, что все делаете правильно. В моем случае хорошим ориентиром был тротуар позади камеры.

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

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

Добавление информации об освещении на меш-объект

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

Примените масштаб объекта (Ctrl + A > Scale), чтобы исключить возможные проблемы в будущем при работе с разверткой. Затем выполните развертку. Smart UV будет более чем достаточно для данного случая.

Создайте новую текстуру настолько больших размеров, насколько можете себе позволить, но не менее 4К. Это нужно для того, чтобы захватить все мельчайшие детали нашего окружения. Убедитесь также, что вы не забыли отметить пункт 32-bit, что позволит сохранить весь динамический диапазон.

Для запекание в Cycles вам необходимо в редакторе нодов загрузить только что созданную текстуру в нод Image Texture и оставить данный нод выделенным. На вкладке рендера в меню Bake установите тип запекания Environment, выделите ваш меш-объект и нажмите кнопку Bake.
proximity-6
Запекание может потребовать немного времени, поэтому наберитесь терпения. По его завершению не забудьте сохранить получившуюся текстуру в формате EXR (32 бита).
proximity-7

Да будет свет

Подключите получившуюся текстуру к шейдеру Emission и установите силу света в половину меньшую, нежели установлена для вашей HDRi-карты. Это будет неплохой отправной точкой. В моем случае для карты сила была равна 2, а для текстуры я установил 1.

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

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

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

Результаты

Результаты могут быть довольно драматичными, демонстрируя то, насколько неточной может быть ваша HDRi-карта.
proximity-8
НЕПРАВИЛЬНО: Сюзанна находится в переулке, но освещена так, будто находится на тротуаре (в том месте, где была сделана HDRi-карта).
proximity-9
ПРАВИЛЬНО: использование меша в сочетании с HDRi затемняет Сюзанну соответствующим образом для переулка, а установленная геометрия закрывает некоторые здания в ее отражении. Она также получает больше желтого цвета от земли.

Хорошо, это был тонкий сдвиг. Плюс это просто статическое изображение, но изменение по-прежнему имеет решающее значение для более реалистичной интеграции CG и реального мира. Вот в чем разница в моем снимке, где эффект более выражен:
proximity-10
НЕПРАВИЛЬНО: при использовании только HDRi дрон получается ярче, а световые отражения слева и справа представляют собой улицу, на которой была расположена камера. Освещение остается неизменным во время анимации.
proximity-11
ПРАВИЛЬНО: при установке меша с текстурой в сочетании с HDRi, дрон становится более темным, а дневной свет можно видеть только с неба сверху. Условия освещения тонко изменяются по мере того, как анимированный дрон попадает в поле зрения камеры.

Это все хорошо и вы можете видеть результат изменений, к которым приводит вся наша проделанная работа. Но вот вам еще один более явный пример. Я создал HDRi прихожей с красными, синими и зелеными источниками света. Панорамная камера, которая использовалась для визуализации HDRi, находилась строго по середине коридора под синим светом.
proximity-12
Итоговая HDRi-карта. Обратите внимание, что синий свет находится вверху, в то время как красный и зеленый находятся в стороне.

Теперь я создал 8-битное изображение того же коридора для фона. Для простоты эксперимента в сцене не будет никаких дополнительных объектов, чтобы не было теней и прочих эффектов. Вот настройка нодов композиции.
proximity-13
И вот получившийся анимированный результат:
proximity-14
Обратите внимание, что условия освещения на Сюзанне не меняются. Теперь проблема становится более очевидной.

Теперь давайте сделаем комплект освещения, как в случае с дроном. После запекания текстура выглядит так (и обратите внимание на исходный HDRi на фоне мира):
proximity-15
Сюзанна находится внутри прямоугольника.

Теперь, если я создам анимацию освещения Сюзанны с HDRi (возможно, в этом случае это не обязательно, потому как она полностью закрыта) и набором освещения, я получаю это:
proximity-16
Намного лучше. Конечно, в таком простом случае я, вообще, мог бы просто воссоздать всю сцену в CG, чтобы динамически освещать анимацию с помощью источников света, но, надеюсь, вы уловили основную суть. Комплект освещения (меш с запеченной текстурой) может обеспечить близость освещения к элементу CG, а не только к далекому источнику освещения, как это происходит в случае с одной лишь HDRi.

Заключительные мысли

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

Если вы планируете перемещать CG элемент из одного освещения в другое — скажем, из здания на улицу, вам понадобится создать дополнительные HDRi как для помещения, так и для улицы. Еще лучше создать несколько наборов освещения, как описано, и даже потенциально объединить их в один более крупный комплект освещения, который предоставляет несколько условий освещения.

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

Если взять что-то среднее между тем, что я продемонстрировал и съемке с помощью LIDAR, у Xuan Prada есть отличное углубленное руководство по захвату ближайшего освещения в рамках более глобального сбора данных. В его случае он сочетает фотограмметрию с брекетингом экспозиции HDRi, чтобы не только полностью восстановить фактическое освещение так, как оно существовало в реальной жизни (альтернатива LIDAR), но также запекает его с использованием 32-битной текстуры из любого возможного угла, что дает ему очень точный комплект освещения. Это очень тяжелая работа, но она решает две потребности. Во-первых, изменение местоположения улавливает значительные различия в освещенности от экстремальной освещенности до кромешной темноты (то, что невозможно получить с помощью одной HDRi). И во-вторых, фотограмметрия дает вам 66% результата на пути к восстановлению реального мира, измерениям, и отслеживанию движения.

Благодарность

Наконец, огромное спасибо Трою Соботка, ветерану индустрии и создателю Filmic Blender, за огромное количество знаний по всем вопросам освещения, которые у меня возникали на пути создания моего проекта с дроном. Обязательно подпишитесь на него в Twitter.

источник урока

О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели, материалы и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.