Секреты фотореализма в 3D для начинающих
Разбор техник для создания реалистичного окружения на примере анимационного фильма «История игрушек 4».


Иллюстрация: Wikimedia Commons / Colowgee для Skillbox Media
На сегодняшний день фотореализм остаётся самым востребованным направлением в области 3D. В рамках Blender Conference 2022 Эндрю Прайс, основатель онлайн-ресурсов Blender Guru и Poliigon, разобрал приёмы из «Истории игрушек 4», которые помогают специалистам повысить реалистичность сцен. Те же приёмы актуальны и при работе с 3D в игровой индустрии.
Редакция «Геймдев» Skillbox Media делится основными тезисами спикера.
В своём докладе Эндрю выделяет три основных составляющих фотореализма:
Работа со светом
Залог хорошего освещения — грамотный подбор оттенков для источников света. Универсальным решением станет сочетание тёплых и холодных тонов по шкале Кельвина, так как эти цвета существуют в природе. В большинстве сцен «Истории игрушек 4» художники использовали тёплые тона для осветительных приборов и солнечных лучей, а холодные — для тёмного неба и лунного света. Ближе к финалу картины контраст оттенков цветовой температуры плавно перетекал в царство неоновых вывесок парка аттракционов.

Кадры: фильм «История игрушек 4»

Кадры: фильм «История игрушек 4»
Использование контрастных тонов шкалы Кельвина нередко встречается и в других картинах. Например, во время работы над короткометражкой «Дурное путешествие» из третьего сезона анимационного сериала «Любовь, смерть и роботы» режиссёр Дэвид Финчер специально давал указания своей команде использовать фиксированную цветовую температуру: 1800 К для ламп и 4000 К для лунного света. Источники освещения с противоположными оттенками расставлены относительно далеко друг от друга. Такое сочетание придаёт CG-анимации больше реалистичности.

Кадр: Blender / YouTube
Чтобы активировать шкалу Кельвина в Blender — достаточно подключить нод Тепловое излучение (Blackbody) в настройках.

Скриншот: Blender / Blender Foundation
Падающий свет
Существует и другой, не менее важный приём — падающий свет. Под ним подразумевается свет, который падает на объекты с определённого расстояния. По мнению Эндрю, этот приём самый недооценённый в сфере 3D: не каждый художник понимает, как можно обыграть такой тип освещения в своих работах.
Например, в сцене есть персонаж, над которым расположен источник света на расстоянии вытянутой руки. На макушку головы попадает 100% лучей, но до ног доходит примерно 1,2%.

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

Наша планета находится на расстоянии около 150 млн км от Солнца, поэтому мощность падающего солнечного света сама по себе достаточно низкая. По этой причине объект на вершине «Бурдж-Халифа» будет получать столько же света, сколько объект у подножия этой башни.
В «Истории игрушек 4» действие одной из сцен разворачивается на чердаке антикварного магазина. И на кадре ниже можно увидеть, как однородный солнечный свет проходит сквозь окна. Что касается падающего света, исходящего от ламп в помещениях, то его создавали с помощью направленных источников, работающих по принципу Прожектора (Spot) и Источника-области (Area) из Blender.

Кадры: фильм «История игрушек 4»

Кадры: фильм «История игрушек 4»
Рассмотрим пример использования падающего света в Blender. В сцене есть персонаж, на который направлен Точечный источник (Point), расположенный относительно далеко от объекта.

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

Кадр: Blender / YouTube
Не менее важно подобрать правильный размер источника света. Чем меньше источник — тем чётче будут выражены тени, подчёркивающие все мелкие детали, что не очень выгодно для человеческих лиц: все дефекты кожи будут особенно заметны.

Но большой и рассеянный источник света скроет недостатки. Вот почему на съёмках голливудских фильмов используют различные светоотражатели даже на открытом воздухе. «История игрушек 4» балансирует между этими видами освещения: жёсткий свет для сцен на открытом воздухе и мягкий — в помещении.

Кадры: фильм «История игрушек 4»

Кадры: фильм «История игрушек 4»
Обращайте внимание на расположение источника освещения относительно лица персонажа. Свет, падающий сверху, визуально сужает лицо, но если выставить его спереди — лицо станет шире.
Эти и другие приёмы работы со светом в 3D Эндрю Прайс подробно разбирает в своём курсе для начинающих. С текстовой версией можно ознакомиться, перейдя по ссылкам ниже.
Материалы
Когда свет падает на материал, происходит ряд физических явлений. Часть лучей сразу отражается, другая часть поглощается, сталкивается с частицами внутри материала, отскакивает от них, а затем выходит наружу. Этот процесс называется преломлением, или, по-научному, рефракцией. В свою очередь, 3D-художники называют его рассеянным отражением света или диффузным отражением. Данное явление помогает распознать цвет объекта, поэтому мы видим, что, например, красная машина покрыта красной автоэмалью.

Кадр: Blender / YouTube
Большинство людей склоняется к мнению, что существует два типа объектов: с отражением и без, то есть с глянцевой и матовой поверхностью, как на изображении ниже.

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

На коллаже выше представлены сканы кирпича c портала Poliigon. При взгляде на первое изображение может показаться, что материал объекта выглядит довольно пористым и не имеет отражающих свойств. Но второе изображение, снятое в режиме перекрёстной поляризации, это опровергает. А с помощью некоторых манипуляций в Photoshop можно создать карту отражения кирпича.
Из этого следует, что все объекты так или иначе отражают свет, просто у них разные свойства шероховатости. Поэтому, работая с материалами в Blender, никогда не убирайте значение Блик (Specular). Оставьте его на стандартном значении 0,5, а если объекту нужно придать эффект матового покрытия — достаточно увеличить значение Шероховатости (Roughness). Все эти настройки можно найти в ноде Принципиальный BSDF (Principled BSDF), который автоматически генерируется при создании материала.

Отражения примечательны тем, что они неравномерны. Чем меньше угол между линией луча и плоскостью объекта, тем сильнее свет будет отражаться от неё. В физике и 3D это явление называют эффектом Френеля: края объекта всегда будут отражать 100% лучей под прямым углом.

Этот нюанс нужно учитывать при работе с нодом Микс-шейдер (Mix Shader), совмещая ноды Диффузный BSDF (Diffuse BSDF) и Глянцевый BSDF (Glossy BSDF), так как в этом случае эффекта Френеля не будет. Лучше обойтись одним нодом Принципиальный BSDF (Principled BSDF), уменьшить Шероховатость (Roughness), насколько это необходимо, и Blender автоматически сгенерирует эффект Френеля для объекта. Все эти рекомендации подойдут для работы с материалами без эффекта «металлик».

Кадр: Blender / YouTube
Специфика металлов
Материалы с металлическим покрытием наделены совершенно иными свойствами. Они отражают свет на 100%, поэтому никакого преломления не происходит. Часть света поглощается, но перерабатывается в тепловую энергию. Поэтому, рассматривая металлический объект, мы видим только его отражение.

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

Кадр: Blender / YouTube
На первой картинке под солнечным лучом деревянный корпус часов просто становится светлее, в отличие от золотого циферблата, который приобретает разные оттенки. Но с эффектом Френеля оттенки металлического покрытия становятся менее выраженными.
Все эти нюансы нужно учитывать при создании реалистичных металлов. Чтобы избежать ошибок, лучше взять за основу нод Принципиальный BSDF (Principled BSDF) и выставить в нём значение параметра Зеркальность (Metallic) на максимум, уменьшив Шероховатость (Roughness). При этом на материале не должно быть дополнительных диффуз-карт или шейдеров с похожими свойствами.

Кадр: Blender / YouTube
Разнообразие как часть реализма
В реальной жизни нам постоянно встречаются объекты с неоднородной поверхностью. Её можно увидеть практически везде, начиная от неровного асфальта со следами шин и заканчивая подтаявшей шоколадной глазурью эскимо.

В сценах «Истории игрушек 4» очень много таких неоднородных фактур. Поверхность крыши, стена шкафа, доски ламината — все эти детали создают реалистичное окружение, несмотря на общую стилизацию.

Кадры: фильм «История игрушек 4»

Кадры: фильм «История игрушек 4»
Самый простой способ повысить реалистичность материала в Blender — создать нод Текстура шума (Noise Texture), выставить в нём значение Шероховатости (Roughness) в промежутке от 0,01 до 1 и подключить к одноимённому параметру в ноде Принципиальный BSDF (Principled BSDF).

Кадр: Blender / YouTube
Эффект неоднородности можно усилить, если добавить нод Наложение (Overlay) с информацией о цвете и Карту неровностей (Bump) — в результате получится более сложный материал.

Также можно использовать готовые наборы PBR-текстур, которые представляют собой готовую сборку карт с различными свойствами. Подобные текстуры можно найти на тематических ресурсах и площадках наподобие Poliigon или Quixel Megascans, а также на маркетплейсах.
Оптика
Не менее важную роль в фотореализме играет настройка камеры — в частности, экспозиция. Делая фотографии летним солнечным днём на смартфон, все мы сталкивались с тем, что объект съёмки часто оказывается темнее, чем фон. Но стоит навести фокус на тёмную часть, и задний план засвечивается.

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

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

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

Возможно, другой режиссёр на месте Джоша Кули побоялся бы столь ярких контрастов в сцене и попытался бы выровнять экспозицию, уменьшив яркость солнечного света. Но Джош оставил всё как есть. Переэкспонированные кадры с засвеченными областями встречаются на протяжении всего фильма, словно их снимали настоящей камерой.
Треугольник экспозиции
В искусстве фотографии существует понятие так называемого треугольника экспозиции. Под ним подразумевают три основных элемента, которые учитывают при настройке кадра: выдержку, диафрагму и светочувствительность (ISO).

Понимание этих трёх основ пригодится в работе с виртуальной камерой в Blender для улучшения качества финального рендера.
Диафрагма
Диафрагма в фотографии — это отверстие, через которое объектив пропускает свет на матрицу камеры. Чем больше оно во время съёмки, тем меньше F-stop и тем сильнее увеличивается глубина резкости. Эту настройку используют при портретной съёмке. Для снимка пейзажа потребуется большее значение F-stop.

Кадры: Blender / YouTube
Но в Blender этот процесс гораздо проще. Достаточно выбрать камеру, зайти в настройки данных объекта, отметить галочкой Глубину резкости (Depth of Field) и в пункте Фокус на объекте (Focus Object) выбрать цель для фокусировки. Далее следует выставить желаемое значение фокусного расстояния в пункте Диафрагма (F) (F-stop). Всё остальное программа рассчитает сама.
Не забывайте, что фокус во многом зависит от размера объекта. В миниатюрных сценах глубину резкости придётся настраивать более тщательно. И наоборот, в масштабных сценах глубина резкости почти незаметна.

Кадр: Blender / YouTube
Именно поэтому Эндрю рекомендует изначально выставлять реальный размер для всех объектов в сцене. Так намного проще подобрать правильный фокус.
«История игрушек 4» позволяет себе некоторые вольности с масштабированием — для того чтобы камера могла сфокусироваться на всех персонажах, так как герои фильма намного меньше окружения.

Существует и более старомодный эффект глубины резкости, который представляет собой размытый и слегка вытянутый задний план. В фотографии такие кадры делают с помощью анаморфотного объектива. Чтобы получить аналогичный эффект в Blender, в настройках Диафрагмы (Aperture) выставьте Соотношение (Ratio) на 2,0.

Кадр: Blender / YouTube
Выдержка
Чем больше интервал выдержки фотоаппарата, тем больше света попадает в объектив, при этом объект съёмки становится размытым. Этот эффект можно настроить и в Blender.
В меню настроек рендера ставим галочку напротив Размытия в движении (Motion Blur) и выбираем нужное значение для Затвора (Shutter), которое напрямую зависит от желаемого результата. Во многом здесь поможет понимание треугольника экспозиции, о котором упоминалось ранее: более сильное размытие в движении появляется в тёмных сценах.

Кадр: фильм «Чунгкингский экспресс»
Светочувствительность (ISO)
Третий элемент экспозиции — последняя попытка добавить света сенсору камеры. Чем выше светочувствительность, тем светлее кадр.

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

Кадр: Blender / YouTube
Но не стоит думать, что эти разновидности шумов аналогичны шуму, который возникает на недоработанном рендере. Данный дефект не имеет ничего общего с фотореализмом. Сначала уберите шум с помощью Шумоподавления (Denoising), а уже затем наложите на готовое изображение фильтр зернистости в Photoshop. Если вы делаете анимацию, воспользуйтесь плагином Renoiser или добавьте соответствующий фильтр в видеоредакторе.
В заключение рассмотрим пару дополнительных приёмов.
Дисторсия объектива, или эффект «бочки»
Так называется искажение кадра, при котором изображение изогнуто по краям. Этот эффект легко сделать в Blender с помощью нода Искажение объектива (Lens Distortion) в режиме Compositing, увеличив значение Искажения (Distort). Другой способ — поэкспериментировать с соотношением диафрагмы, имитируя эффект анаморфотного объектива, о котором упоминалось ранее.

Кадр: фильм «История игрушек 4»
Блики
Этот приём используется в случаях, когда кадр предполагает наличие жёсткого света в очень тёмных сценах. Источник света смягчают, и он становится размытым, словно сенсор камеры не может на нём сфокусироваться. Блики также можно использовать в сценах, где есть яркий солнечный свет, а ключевой объект находится в тени.
В Blender за этот эффект отвечает нод Блики (Glare) в режиме Compositing. В настройках нода можно выбрать Полосы (Streaks), Свечение тумана (Fog Glow) или другие режимы, в зависимости от того, какой эффект нужен для текущей задачи.

Кадры: фильм «История игрушек 4»
Итог
Первая часть «Истории игрушек» вышла на экраны более 25 лет назад. С тех пор многое изменилось: компьютерное железо стало мощнее, а новые версии 3D-софта открыли ещё больше возможностей для художников.

Кадры: «История игрушек»; «История игрушек 4»
Но на самом деле именно ограничения делают фильмы реалистичными. И несмотря на то, что действие происходит в мире, где игрушки живут своей жизнью и общаются друг с другом, подобные элементы фотореализма есть далеко не в каждом блокбастере. По мнению Эндрю, именно благодаря этой особенности «История игрушек» стала одним из самых интересных, забавных и красивых анимационных фильмов за последние несколько лет.