Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

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

Статья рассматривает разные эффекты постобработки, которые

Пост основан на вебинаре “Achieving cinematic quality with post‑process effects in Unreal Engine 4” за авторством Мэттью Дойла (Matthew Doyle) из Epic Games.

Для удобства навигации вот содержание:

Для начала давайте взглянем на видео, которое демонстрирует несколько эффектов постобработки (в статье я буду звать их PPFX, аббревиатура от Post‑Process Effects), наложенных друг на друга.

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

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Как и предполагает имя, постобработка — это последний шаг в рендеринге кадра в UE4. PPFX в основном находятся в экранном пространстве, и соответственно влияют на всё, что вы видите на экране. Они могут быть привязаны к камере или к объёму (volume).

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

На сцене может быть несколько объёмов, каждый со своими уникальными настройками. Они могут быть ограниченными и неограниченными (bound и unbound). Неограниченные влияют на всю сцену сразу, а чтобы увидеть эффекты от ограниченных объёмов, нужно чтобы камера находилась внутри них.

Для сравнения. Вот как выглядит сцена с настроенными и включёнными PPFX и без них:

Чтобы добавить объём постобработки (Post-processing volume) на сцену, для начала найите его в панели Modes в разделе Visual Effects или Volumes. Или можно просто поискать "post". Потом перетащите его на сцену и не забудьте в панели Details отметить "Infinite Extent (Unbound)", чтобы объём действовал на всю сцену.

Далее рассмотрим некоторые группы настроек.

Lens

Первая секция настроек объёма постобработки называется "Lens". В ней несколько подсекций. В этой статье мы не будем разбирать Depth of Field, потому что его лучше контролировать настройками камеры, а не PPFX.

Bloom

Давайте начнём с блума. Чтобы эффект был хорошо видим, найдите яркий объект на сцене, например солнце (ваш directional light). У блума есть два метода: Standard и Convolution. Standard лучше всего подходит для реалтайма, например для игр. Имейте в виду, что хотя Convolution и даёт намного более качественный блум, он также более прожоорливый и его лучше всего использовать в синематиках.

Яркость блума можно настраивать параметром Intensity. Threshold задаёт, насколько ярким должен быть пиксель, чтобы излучать блум. Advanced настройки позволяют вам тонко настроить оба типа блума.

Exposure

По дефолту в UE используется Auto Exposure Histogram в качестве режима измерения (Metering Mode). Она позволяет добиться эффекта "адаптации глаз" - это, например, когда вы перемещаетесь в тёмный участок сцены и она становится ярче со временем.

Если вы хотите залочить автоэкспозицию на определённое значение, можно выставить Min и Max Brightness на одинаковое значение, например 1.

В Unreal встроен инструмент визуализации гистограммы. Выберите Show -> Visualize -> HDR (Eye Adaptation):

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Синие значения представляют тёмные участки сцены, зелёные - средние тона, а красные - светлые участки. На графике текущее значение экспозиции представлено белой линией, а целевое - синей (находится на скрине сзади белой). Если вы откатите Min/Max Brightness значения на дефолтные, ,то увидите, как белая линия будет постепенно перемещаться к синей по мере того, как вы двигаете камерой. Скорость, с которой это происходит, контролируется значениями Speed Up и Speed Down.

Конечно, может возникнуть потребность использовать ручной режим замера (Manual Metering Mode). Если вы выберите этот режим, то сцена станет очень тёмной. Нам понадобится изменить три вещи:

  • Настройки в секции Camera. Установите Shutter Speed и ISO на 100, а Aperturre на 15 - это настройки типичного солнечного дня.
  • Настройки света. Выберите ваш Directional Light и установите его Intensity на что-то более реалистичное, типа 82000 lux (для солнечного света).
  • Перезапеките (bake) лайтмапы, чтобы увидеть результаты отражённого освещения (Indirect lighting)

Это будет полезно, если вы хотите повторить какие-то реалистичные настройки фотографии в Unreal.

Chromatic Abberation

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

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

Dirt Mask

Dirt Mask - это, по сути, текстура, которая позволяет симулировать грязный объектив. Если вы укажете текстуру и выставите Intensity на максимальное значение 8, вы можете не увидеть никакой разницы. А всё потому, что вам нужен сильный блум и lens flares.

Lens Flares

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Intensity управляет яркостью бликов, а BokehSize задаёт их размер. Threshold ведёт похожим образом на такой же параметр у блума, то есть задаёт, насколько ярким должен быть пиксель, чтобы излучать блики. А если развернёте группу Tints, то сможете настроить оттенок каждого блика.

Если после всех настроек развернуть камеру так, чтобы стали видны блики, то сможете увидеть и Lens Dirt:

​Да, видно плохо, но можно заметить пятна другого цвета на бликах
​Да, видно плохо, но можно заметить пятна другого цвета на бликах

Image Effects

Сейчас в анриле два таких эффекта: Vignette и Grain. Для виньетки доступен только параметр Intensity, регулирующий силу эффекта.

Grain Jitter и Grain Intensity позволяют добавить эффект зернистости фотоплёнки.

Color Grading

Когда вы делаете цветокоррекцию, рекомендую следовать вот такому процессу:

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Filmic Tone Mapper в анриле использует ACES - стандарт для кино- и ТВ индустрии. Используйте его для глобальной настройки всего проекта. После первоначальной настройки менять его уже не рекомендуется.

Film

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Tone mapper - это, по сути, S-кривая, которую вы можете видеть на скрине выше. У неё есть несколько частей, которые можно настраивать. Slope управляет её формой в целом, Toe управляет тёмными участками изображения, а Shoulder - светлыми. Black/White clip используются для задания максимально возможного уровня темноты и яркости.

При работе с Filmic Tone Mapper, хорошей идеей будет настраивать первые три параметра, а clip'ы оставить на дефолтных значениях.

Настройка Slope управляет контрастом изображения в целом. для настройки Toe вам лучше найти тёмный участок сцены, чтобы вы хорошо видели, что настраиваете. Лучше всего использовать малые значения, так как большие придают изображению выцветший вид. То же самое касается и Shoulder.

White Balance

В этой секции два параметра: Temperature (температура) и Tint (оттенок). Tint позволяет применить глобальный сдвиг оттенка ко всей сцене. Как правило, это значение следует оставлять нетронутым, если только вы не собираетесь использовать очень специфический оттенок сцены.

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

Global, Shadows / Midtones / Highlights

Для начала рекомендуется настроить общие (Global) параметры. А уже после настраивать отдельные части изображения (тёмные участки / полутона / светлые участки). Для этого открывайте соответствующую подсекцию и правьте параметры там.

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

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

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

Gamma управляет средними тонами. Эта опция оказывает наиболее заметный эффект на тон сцены. Gain управляет светлыми участками, а Offset - тёмными.

Rendering Features

Post-process Materials

Пример эффектов, которые дают материалы постобработки можно увидеть, например, в этой статье.

Ambient Cubemap

Ambient Cubemap можно использовать, чтобы корректировать общее освещение окружающей среды. Просто выберите Cubemap Texture и настройте её интенсивность.

Ambient Occlusion

В UE4 есть опция визуализации AO, для этого View Mode нужно переключить на Vizualization -> Ambient Occlusion.

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

Из параметров доступны Intensity и Radius. Последний контролирует, насколько мягким или резким выглядит AO.

Также можно включить Ray Tracing Ambient Occlusion (RTAO). Его качество регулируется параметров Samples Per Pixel. Чем больше - тем круче. Настройки из подсекции Ambient Occlusion применяются в том числе и для RTAO.

Следующая подсекции - Global Illumination (GI) и Ray Tracing Global Illumination (RTGI). Настраивая Indirect Lighting Intensity вы можете уменьшить или усилить влияние отражённого освещения на сцену. Чтобы улучшить качество GI, можно пользоваться параметрами Max. Bounces и Samples Per Pixel.

Reflections

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

У настроек отражений есть три подсекции с говорящими названиями: Reflections, Screen Space Reflections (SSR) и Ray Tracing Reflections (RTR). В Reflections можно выбрать тип отражений, и потом настроить их в соответствующей секции.

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

Достигаем кинематографического качества с помощью эффектов постобработки в Unreal Engine 4

А всё дело в том, что все объекты, которые "видны" в зеркале, не видны в камере. За исключением персонажа, и то частично.

Translucency

Как и в случае с отражениями, есть два типа прозрачности. Стандартная - это Raster, а есть ещё Ray Traced. Конечно, RT выглядит в разы лучше, но при этом очень требовательная.

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

125125
41 комментарий

1) не включайте хроматическую аберрацию

2) не завышайте bloom
3) добавьте коррекцию тона и контрастности
Готово

17
Ответить

Я вообще не понимаю тех, кто это включает в свои настройки. А ещё хуже ЕСЛИ ЭТО НЕ УБРАТЬ! 

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

7
Ответить

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

5
Ответить

Спасибо Ян, как всегда статейка выше всяких похвал.

3
Ответить

Спасибо, стараюс!

8
Ответить

Комментарий недоступен

4
Ответить

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

1
Ответить