Динамическое освещение в Unreal Engine 4

Некорректное качество теней

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

Динамическое освещение в Unreal Engine 4


Пример некорректного затенения геометрии.

Только! для Directional Light : Настройки Cascaded Shadow Maps:

Динамическое освещение в Unreal Engine 4
Cascaded Shadow Maps настройки, в Directional Light Details


Dynamic Shadow Distance Movable: Расстояние от камеры, на котором тени будут исчезать.Значение 0 отключает их.

Dynamic Shadow Distance Stationary: Расстояние от камеры, на котором тени будут исчезать.По умолчанию стоит 0 для Directional Stationary Lights.
Num Dynamic Shadow Cascades: Количество каскадов на которое будет делится фрустум.Больше каскакодов- лучше качество, но и ресурсоёмкость возрастает.

Обязательно тыкните в ссылочку ниже, ибо наверняка не все знают что такое фрустум.

Больше информации про фрустум: http://en.wikipedia.org/wiki/Viewing_frustum

Num Dynamic Shadow Cascades :

Динамическое освещение в Unreal Engine 4
Количество каскадов = 0


Динамическое освещение в Unreal Engine 4
Количество каскадов = 1


Динамическое освещение в Unreal Engine 4
Количество каскадов = 2


Динамическое освещение в Unreal Engine 4
Количество каскадов = 3


Динамическое освещение в Unreal Engine 4
Количество каскадов = 4


Cascade Distribution Exponent: Параметр регулирующий, на каком расстоянии от камеры распределение ближе (выше значение) или дальше (меньше значение) от камеры. Значение 1 означает, что переход будет пропорционален разрешению экрана.

Cascade Distribution Exponent:

Динамическое освещение в Unreal Engine 4
Распределение = 1


Динамическое освещение в Unreal Engine 4
Распределение = 2


Динамическое освещение в Unreal Engine 4
Распределение = 3


Динамическое освещение в Unreal Engine 4
Распределение = 4


Cascade Transition Exponent: Параметр регулирующий затухающий регион между каскадами. Низкое значение даст жёсткие грани, высокое — мягкие.

Cascade Transition Exponent:

Динамическое освещение в Unreal Engine 4
Эффект перехода


Cascade Transition Exponent

Динамическое освещение в Unreal Engine 4
Жёсткая грань (низкое значение)


Динамическое освещение в Unreal Engine 4
Смешивание граней (высокое значение)


Shadow Distance Fadeout Fraction: Параметр регулирующий на каком расстоянии тени будут затухать. Высокое значение ослабляет тени, в то время как низкое значение оставляет тени тёмными.

Shadow Distance Fadeout Fraction:

Динамическое освещение в Unreal Engine 4
Затухание = 0


Динамическое освещение в Unreal Engine 4
Затухание = 1


Far Shadow



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

Динамическое освещение в Unreal Engine 4


Для включения данной опции достаточно лишь поставить галочку в пунктике Far Shadow во вкладке Lightning в настройках Directional Light.

Динамическое освещение в Unreal Engine 4


Вы можете указать количество каскадов для Far Shadow, чтобы объекты у которых включено Far Shadow учитывали данный параметр. По умолчанию значение равно 300 метрам, но должно быть больше чем значение у параметра Cascaded Shadow Map Distance.

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

Динамическое освещение в Unreal Engine 4


На гифке выше: у объекта слева выключено Far shadow, а объект справа имеет параметры Dynamic Shadow Distance = 5000 и far shadow distance = 50000 при 4 каскадах.

Регулирование Cascades для лучшего качества:

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

Базовая сцена с одними лишь настройками по умолчанию:

Динамическое освещение в Unreal Engine 4


Базовая сцена дефолтные настройки

Тут у нас уже есть некоторые проблемы с точностью теней на гранях объектов.

Динамическое освещение в Unreal Engine 4


Проблемные зоны выделены красными рамками

Демонстрация проблемы, с близкого ракурса.

Динамическое освещение в Unreal Engine 4


Проблемные зоны, вид поближе



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

В этой сцене настройки распределения, дистанции теней и количество каскадов просветов и их точность — на приемлемом уровне.

Динамическое освещение в Unreal Engine 4


Базовая сцена финальный результат



Всё динамическое освещение (панель настройки освещения):

Также имеются ещё 2 настройки которые могут улучшить точность освещения.

Местонахождение этих настроек:

Динамическое освещение в Unreal Engine 4
Те самые 2 параметра - Shadow Bias и Filter Sharpness


Shadow Bias — контролирует точность теней в сцене, но может выдать артефакты, если значение будет слишком низким.По умолчанию стоит значение 0.5 которое даёт хороший результат между точностью и эффективность.

Shadow Filter Sharpness — помогает скрыть некоторые артефакты при низких значениях и помогает создавать более резкие тени на краях.

Принимая во внимание то, что предыдущие настройки не были применены для текущих примеров, то ниже идут 2 примера с демонстрацией этих параметров (Shadow Bias и Shadow Filter Sharpen):

Shadow Bias

Динамическое освещение в Unreal Engine 4


Shadow Bias = 0.5 (Дефолтное значение)

Динамическое освещение в Unreal Engine 4


Shadow Bias = 0, установлено слишком низкое значение и поэтому появляются артефакты

Решение данной проблемы — нахождение баланса между установкой не слишком низкого значения и подбором нужного значения в Cascaded Shadows.

Shadow Filter Sharpen — делает края тени более резкими при высоких значениях.

Динамическое освещение в Unreal Engine 4


Filter Sharpen = 0

Динамическое освещение в Unreal Engine 4


Filter Sharpen = 1

Высокое значение параметра даёт резкий край тени, низкое- плавный край тени.

Почему мой динамический источник света светится сквозь объекты на отдалении?

Динамическое освещение , в частности точечные ИС, могут создавать проблемы такого рода. UE 4 достаточно хорошо справляется с подобной оптимизацией, поэтому вам не стоит сильно об этом волноваться. Но иногда возникает подобная проблема и метод её решения не всегда очевиден.

Динамическое освещение в Unreal Engine 4


Результат который мы хотим. Камера вблизи.

Динамическое освещение в Unreal Engine 4


Что получается в итоге. Камера в отдалении.

Что же делать?

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

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

Динамическое освещение в Unreal Engine 4


Проход света сквозь объект.

Вы можете заметить, что если вы на дистанции выберете/выделите такой объект, то освещение вернётся в нормальное состояние. Это объясняется тем, что вы сфокусировались в данный момент на данном объекте.

Дабы предохранить объект от пропускания света, вам нужно выделить объект, и перейти на панель Details. Тут вам нужно найти во вкладке Rendering, параметр Bounds Scale.

Динамическое освещение в Unreal Engine 4


Местонахождение Bounds Scale

По умолчанию значение установлено в 1.0 . Увеличивайте данный параметр на небольшие значение (1.1, 1.2 и тд.). Используя значение = 2 , оно удваивает дистанцию которая может стать излишней. Нет необходимости использовать значение больше необходимого, так как это может повлиять на производительность и качество теней.

Вы можете увидеть/визуализировать границы вашего меша перейдя во вьюпорте > Show > Advanced > Bounds

Увидите нечто такое:

Динамическое освещение в Unreal Engine 4


Визуализированные границы объекта.

Дополнительная заметка:

Если у вас есть вышеописанная проблема, но вы не хотите увеличивать размеры границ вашего меша из-за проблем с производительностью — попробуйте использовать Spotlight. Данный ИС пускает свет лишь в одном направлении, в отличии от point light который пускает свет по всем направлениям когда меш пропускает свет. Пусть это и возымеет некоторый положительный/требуемый эффект, но лишь методом проб и ошибок вы сможете добиться идеального решения.

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

Рекомендуем посмотреть
  • Проблемы с освещением и методы их решения в Unreal Engine 4 По правилам освещения, чёрные тени обычно используются, если у вас нет заполняющего света. Это часто происходит по тому, что окружающая среда имеет один направленный поток света, представленный как
  • Смешивание кадров с использованием векторов движения Моя вариация смешивания кадров, впервые разработанная Guerrilla Games для Killzone 2, в конце статьи вы найдёте ссылки на их статью и другие ресурсы. Цель данного метода заключается в том, чтобы
  • Уменьшаем размер APK файла в Unreal Engine 4 Независимо от типа Android устройства, на которое нацелен ваш проект на UE4, уменьшение размера пакета Android приложения (APK) до уровня в 50 МБ для магазина Google
  • Аренда автомобильного крана При необходимости осуществления разных работ по строительству различных зданий, или при надобности разгрузки какого либо груза из вагонов грузового поезда, или тяжелого груза из полуприцепа
  • Как выбрать напольные весы? Напольные весы — хорошее приобретение не только для желающих похудеть, но и для людей, ведущих здоровый образ жизни и следящих за своим весом, а также для спортсменов.