Sky Light в Unreal Engine 4

0
42
Sky Light в Unreal Engine 4

 

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

Захват Сцены

Sky Light будет захватывать сцену только при определенных обстоятельствах:

  • Для Static Sky Lights обновления автоматически возникают при построении освещения.
  • Для Stationary или Movable Sky Lights обновления происходят один раз при загрузке и только после вызова Recapture Sky. Это можно сделать с помощью панели Details или по вызову Blueprint в игре.
Если вы измените текстуру, которую использует skybox, она не будет автоматически знать об обновлении. Вам потребуется использовать один из вышеперечисленных методов для его обновления.

Вместо Ambient Cubemap следует использовать Sky Light, чтобы отображать свет неба, потому что Sky Lights поддерживает локальное затенение, которое препятствует освещению небом закрытой территории.

Mobilities – Мобильность

Подобно другим типам света, Sky Light может быть установлен в одно из следующих значений Mobilitiesзначение Mobilities в skylight UE4

MobilityОписание
Static (Статичный)Освещение не может быть изменено во время игры. Это самый быстрый способ для рендеринга и позволяет использовать запеченное освещение.
Stationary (Стационарный)Когда освещение построено, затенение и световые отскоки (рефлексы) будут захватываться только из статической геометрии. Все другое освещение будет динамичным. Этот параметр также позволяет свету изменять цвет, интенсивность и кубмап в игре, но он не перемещается и позволяет частично запечь освещение.
Movable (Подвижный)Освещение может быть перемещено и изменено в игре по мере необходимости.

Static Sky Light – Статический свет неба

Sky Light, установленный в Static, полностью запекается в lightmap для статических объектов на уровне и, следовательно, ничего не стоит. Когда изменения внесены в свойства света, изменения не будут видны до тех пор, пока освещение не будет восстановлено для уровня.

Для мобильных разработок это единственный вид Sky Light, который поддерживается.

При использовании Static Sky Light, только актеры и огни уровня, которые имеют мобильность, установленную на Static (статический) или Stationary (стационарный), будут сниматься и использоваться для освещения.Кроме того, только эмиссионный вклад Материалов может быть захвачен со Статическим небом, чтобы избежать обратной связи. По этой причине убедитесь, что у любого skybox есть Material, для которого установлен Unlit.

Stationary Sky Light 

Небесное освещение Sky Light, установленное на Stationary, получает запеченное затенение от Lightmass точно так же, как установленный и в Static. После того, как вы разместите стационарный Sky Light на своем уровне, вы должны восстановить освещение хотя бы один раз, чтобы генерировать и отображать запеченное затенение.

Как и в другом стационарном освещении, некоторые свойства могут быть изменены во время выполнения через Blueprints или Sequencer. Это означает, что вы можете настроить Intensity (интенсивность) или Color (цвет) неба, не требуя перестройки освещения для всего уровня. Тем не менее, косвенное освещение запекается в световой карте и не может быть изменено во время выполнения. Количество косвенного освещения можно контролировать с помощью Indirect Lighting Intensity.

При использовании Stationary Sky Light, только актеры и освещение уровня, которые имеют мобильность, установленную на Static или Stationary, будут захватываться и использоваться для освещения. Кроме того, только излучательный вклад Материалов может быть захвачен с помощью Stationary Sky Light, чтобы избежать обратной связи. По этой причине убедитесь, что у любого skybox есть Material, для которого установлен Unlit.

Movable Sky Light

Sky Light, установленный для Movable (подвижный), не использует никаких предварительных вычислений. Он фиксирует компоненты и свет любой мобильности при настройке для захвата сцены.

Окружающая окклюзия

Эта функция не включена по умолчанию, но может быть включена с использованием функций Distance Field

Затенение для Movable Sky Light обеспечивается Distance Field Ambient Occlusion из вычисленных Distance Field Volumes, которые генерируются вокруг каждого жесткого объекта. Distance Field Ambient Occlusion поддерживает динамические изменения сцены, где жесткие меши могут быть перемещены или скрыты, и это повлияет на окклюзию.Окружающая окклюзия UE4

Ознакомьтесь с информацией о том, как использовать Distance Field Ambient Occlusion, для получения дополнительной информации и примеров.

Предварительно рассчитанный Sky Light

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

Улучшенная Направленность Static Sky Light

До Unreal Engine 4.18, Static Sky Lights обычно представлялись Lightmass с 3-го порядка Сферической Гармоники, которые не фиксировали детали, которые могут присутствовать в восходе или закате. Теперь используется фильтрованная cubemap, которая по умолчанию имеет более высокое разрешение. Lightmass также выберет соответствующий MIP текстуры cubemap, основанный на размере конечных собирательных лучей, чтобы избежать наложения спектров.

Чтобы увидеть пример такого взаимодействия, перейдите в раздел Engine Content >MapTemplates > Sky и выберите SunsetAmbientCubemap, так как это покажет вам отличный пример.
Сферическая Гармоника 3-го порядка UE4Сферическая Гармоника 3-го порядка (до)Отфильтрованная кубмап UE4

Отфильтрованная кубмап (после)

Эффект улучшения с использованием начального офисного уровня от Robo Recall от Epic.

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

Камера Obscura

С улучшенной направленностью Static Sky Lights теперь можно воссоздать эффект камеры (Camera Obscura) с достаточно маленьким отверстием. Чем меньше отверстие, тем больше будет направленное небо.

Кубмап Источника SkyLight UE4Кубмап Источника SkyLightРезультирующее построение освещения UE4Результирующее построение освещения

Bent Normal для Stationary Sky Lights

Для Стационарных Sky Lights, где освещение запечено отдельно от освещения, затенение, которое производит Lightmass, хранит информацию о направленной окклюзии в так называемом Bent NormalЭто направление – от текселя до самого незакрытого направления. Области, которые в основном закрыты, используют это направление для освещения неба вместо поверхности нормали, что повышает качество трещин.

Sky Light в Unreal Engine 4Только Static Sky Light Ambient Occlusion Sky Light с Bent Normal UE4

Sky Light с Bent Normal

Дополнительную информацию можно получить на странице Bent Normal Map

Множественные отскоки

Множественные отскоки косвенного света от Sky Lights поддерживаются настройкой Num Sky Lighting Bounces в World Settings > Lightmass.

Установка количества отскоков световых лучей для использования.

SkyLight Количество отскоков: 1 UE4Количество отскоков: 1SkyLight Количество отскоков 10 UE4Количество отскоков: 10

Для многократных отскоков skylight, чтобы быть заметными, ваши материалы должны иметь высокую диффузную ценность в большинстве случаев. Например, при диффузном значении 0,18 (18% серого) второй отскок skylight будет вносить 18^3 = 0,006 излучаемой энергии света, что очень тонко. При диффузном значении 0,5 второй отскок skylight будет вносить 0,125 излучаемой энергии света и быть заметным.

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

Свойства

Свойства компонента Sky Light разбиты на две категории: Light и Sky Light. Доступ к ним можно получить на панели Details Актера.Свойства компонента Sky Light UE4

Light

Следующие настройки являются общими для всех типов освещения.

СвойствоОписание
IntensityОбщая энергия, излучаемая светом.
Light ColorУказывает цвет излучающегося света.
Affects WorldМожет ли свет воздействовать на мир или он отключен.
Cast ShadowsДолжен ли свет использовать какие-либо тени.
Casts Static ShadowsДолжен ли свет отбрасывать тени от статических объектов. Кроме того, для параметра Cast Shadows необходимо установить значение True.
Casts Dynamic ShadowsДолжен ли свет отбрасывать тени от динамических объектов. Кроме того, для параметра Cast Shadows необходимо установить значение True.
Indirect Lighting IntensityМасштабирует вклад косвенного освещения от этого света. Значение 0 отключает любое глобальное освещение (GI) от этого света.
Volumetric Scattering IntensityИнтенсивность объемного рассеяния от этого света. Это масштабирует интенсивность и цвет освещения.
Cast Volumetric ShadowЗатеняет ли свет Volumetric Fog.

Sky Light

Следующие настройки относятся к Sky Lights.

СвойствоОписание
Source TypeНужно ли снимать отдаленную сцену и использовать ее в качестве источника света или использовать указанную кабмап. При захвате сцены будет добавлено что-либо дальше, чем SkyDistanceThreshold из положения Sky Light.

 
SLS Captured SceneСоздает небесное освещение с захваченной сцены. Будет добавлено еще что-либо, кроме Sky Distance Threshold, из положения Sky Light.
SLS Specified CubemapСоздает небесное освещение из указанной cubemap.
CubemapУказывает кубмап, которая будет использоваться для освещения неба, если для параметра Source Type задано значение SLS_SpecifiedCubemap.
Source Cubemap AngleУгол поворота исходной кубмап, когда для параметра Source Type задано значение SLS Specified Cubemap.
Cubemap ResolutionМаксимальное разрешение для самого верхнего обработанного кубмап MIP. Он также должен иметь мощность 2 текстуры.
Sky Distance ThresholdРасстояние от Sky Light, при котором любая геометрия должна рассматриваться как часть неба (также используется Reflection Captures).
Capture Emissive OnlyЗахватывает только эмиссионные материалы. Пропускает все освещение, делая захват дешевле. Это рекомендуется при использовании Capture Every Frame.
Lower Hemisphere is Solid ColorНезависимо от того, должно ли все освещение из нижнего полушария установить на ноль. Это полезно для предотвращения утечки из нижнего полушария.
Recapture SceneКогда для актера Sky Light установлено значение SLS_CapturedScene, это приведет к возврату изображения, которое Sky Light использует для освещения сцены.

Тень от движущихся объектов

Мягкое затенение из подвижных объектов на окружающую среду может быть достигнуто с использованием Capsule Shadows для скелетных мешей или Distance Field Indirect Shadowing для жестких мешей. Для этого требуется отдельная настройка для правильной работы.

Ограничения

Эти функции были бы полезны для Sky Lights, но еще не реализованы:

  • Динамический повторный захват сцены для стационарных и подвижных версий. Существует функция Blueprint на компоненте Sky Light под названием RecaptureSky (), который можно использовать. Однако это вызовет затруднение.функция Recapture SkyLightB P UE4

Static Sky Light

Sky Light со Static Mobility будет полностью запекаться в lightmap для статических объектов и, следовательно, ничего не стоит. Это единственный тип небесного освещения, который поддерживается на мобильных устройствах. Изменения свойств света не будут видны до тех пор, пока освещение не будет построено снова.

Примечание: Только компоненты и источники света со статической или стационарной мобильностью (Static и Stationary Mobility) будут захвачены и использованы для освещения со статическим светом. Кроме того, только излучательный вклад материалов может быть захвачен с помощью Static Sky Light, чтобы избежать обратной связи. Убедитесь, что у вашего skybox нет материала.

Stationary Skylight

Sky Light с Stationary Mobility получает запеченное затенение от Lightmass. Как только вы разместите стационарный Sky Light на своем уровне, вам нужно восстановить освещение один раз, чтобы получить запеченное затенение. Затем вы можете изменить свет неба так, как хотите, без перестройки.

Затенение Sky Light от Lightmass, хранит информацию о направленной окклюзии в так называемом Bent Normal. Это направление – от текселя до самого открытого направления. Области, которые в основном закрыты, используют это направление для освещения неба, а не поверхности нормали, что немного улучшает качество трещин.

Только Static Sky Light Ambient Occlusion UE4Sky Light только с Ambient OcclusionSky Light с Bent Normal UE4Sky Light с окклюзией Bent Normal

На первом изображении показан Sky Light с АО. На втором изображении показан Sky Light с окклюзией изогнутой нормали. Обратите внимание, как поверхности в трещинах «согласуются» с тем, откуда исходит освещение.

Примечание: Только компоненты и источники света со статической или стационарной мобильностью (Static и Stationary Mobility) будут захвачены и использованы для освещения с помощью Stationary Sky Light.

Как и все типы стационарного освещения (Stationary Lights), цвет прямого освещения может быть изменен во время исполнения через Blueprint или Matinee. Однако косвенное освещение запекается в световой карте и не может быть изменено во время выполнения. Объем косвенного освещения может контролироваться IndirectLightingIntensity.

Sky Light в Unreal Engine 4Только Прямое освещение

 

Прямое и Диффузное глобальное освещение Stationary Sky Light UE4Прямое освещение и Диффузное глобальное освещение для Stationary Sky Light

Movable Skylight

Movable Sky Light (Подвижный) не использует никаких предварительных вычислений. Он фиксирует компоненты и свет любой мобильности при настройке, чтобы захватить сцену как источник освещения неба.

Окружающая окклюзия

Затенение для Movable Sky Light обеспечивается новой функцией, называемой Distance Field Ambient Occlusionкоторая генерирует Ambient Occlusion из Signed Distance Field Volumes, предварительно вычисляемых вокруг каждого жесткого объекта. Он поддерживает динамические изменения сцены – жесткие меши могут быть перемещены или скрыты, и это повлияет на окклюзию. Эта функция не включена по умолчанию, и здесь есть несколько шагов настройки.

Ограничения

Эти функции были бы полезны для SkyLights, но еще не реализованы:

  • Мягкое затенение от движущихся объектов (персонажей) на окружающую среду.
  • Динамический повторный захват сцены для версий Stationary и Movable. Для SkyLightComponent есть функция RecaptureSky(), которая может быть использована, однако это приведет к сбою.

Sky Light

Свойства SkyLights разбиты на 2 категории: Light и Sky Light.

Light

СвойствоОписание
IntensityОбщая энергия, излучаемая светом.
Light ColorУказывает на цвет исходящего света.
Affects WorldМожет ли свет воздействовать на мир или он отключен.
Casts ShadowsДолжен ли свет использовать какие-либо тени.

Sky Light

СвойствоОписание
Source TypeНужно ли записывать отдаленную сцену и использовать ее в качестве источника света, или использовать указанный cubemap. При захвате сцены будет учитываться все, что будет дальше, чем SkyDistanceThreshold от положения Sky Light.
CubemapУказывает Cubmap, которая будет использоваться для освещения неба, если для параметра Source Type задано значение SLS_SpecifiedCubemap.
Sky Distance ThresholdРасстояние от Sky Light, при котором любая геометрия должна рассматриваться как часть неба (также используется Reflection Captures).
Lower Hemisphere is BlackНезависимо от всего освещения, освещение из нижнего полушария должно быть установлено на ноль. Это полезно для предотвращения утечки из нижнего полушария.
Recapture SceneКогда для актера Sky Light установлено значение SLS_CapturedScene, это приведет к возврату изображения, которое Sky Light использует для освещения сцены.