Lightmass Global Illumination в Unreal Engine 4

0
2
Lightmass Global Illumination в Unreal Engine 4

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

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

Образец изображения агента Swarm представлен ниже (панель внизу показывает, какая часть сборки завершена).Образец изображения агента Swarm UE4

Особенности статического и стационарного освещения

Diffuse Interreflection – Диффузная интеррефлексия

Диффузная Интеррефлексия на сегодняшний день является самым визуально важным эффектом мирового освещения. Свет отскакивает по умолчанию с помощью Lightmass, а термин BaseColor вашего материала контролирует, сколько света (и какого цвета) отскакивает во всех направлениях. Этот эффект иногда называют Color Bleeding. Diffuse Interreflection – это входящий свет, отражающий одинаково во всех направлениях, что означает, что на него не влияет направление или положение просмотра.

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

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

Это второй диффузный рефлекс. Свет стал намного более ослабленным и равномерно распределенным.Диффузная интеррефлексия UE4

И вот сцена с четырьмя диффузными рефлексами в сочетании. Моделирование глобального освещения создает гораздо более детализированное и реалистичное освещение, чем ручное размещение подсветки. Косвенные тени, в частности, невозможны при заполнении огней.4 Диффузная интеррефлексия UE4

Отклоненное освещение поднимает диффузный цвет основного материала, как вы можете видеть ниже. Именно отсюда исходит термин Color Bleeding. Color Bleeding наиболее заметен с насыщенными цветами. Вы можете преувеличивать эффект, поднимая DiffuseBoost на Primitive, Material или Level.

Color Bleeding 1 UE4Color Bleeding 2 UE4

Освещение персонажей

Lightmass помещает образцы в единую 3d-сетку внутри объема Lightmass Importance Volume с низким разрешением, а также поверх обращенных вверх поверхностей, по которым, вероятно, персонажи будут ходить дальше, с более высоким разрешением. Каждый образец освещения фиксирует непрямое освещение со всех сторон, но не прямое освещение.

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

1 Освещение персонажей UE402 Освещение персонажей UE4

Кэш косвенного освещения затем интерполирует косвенное освещение для подвижного объекта с использованием этих образцов освещения. Косвенное освещение влияет на цвет тени светлой среды, но не на направление. Используйте Show->Visualize->Volume Lighting Samples для предпросмотра их в своем вьюпорте.

Для получения дополнительной информации см. Документацию Кэш косвенного освещения.

Ограничения

  • Настройки по умолчанию для размещения образца объема приведут к большому количеству образцов на большой карте. Это приведет к тому, что время интерполяции Кэша Косвенного Освещения будет очень большим. Используйте шкалу уровня статического освещения, чтобы уменьшить количество отсчетов в больших картах.
  • Подвижные объекты за пределами Lightmass Value Volume будут иметь черное непрямое освещение.

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

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

Окружающая окклюзия – это косвенное затенение, которое вы получите из равномерно яркого верхнего полушария, например, облачное небо. Lightmass поддерживает расчет окклюзии окружающей среды, применяя ее к прямому и косвенному освещению, а затем запекает ее в карты света. Окружная окклюзия включена по умолчанию и может быть отключена, если снять флажок Use Ambient Occlusion в настройках Lightmass в World Settings.

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

Сцена Без Окружающей Окклюзии UE4Без Окружающей ОкклюзииСцена с окружающей окклюзией UE4Окружающая Окклюзия

Настройки Окружной Окклюзии

СвойствоОписание
Visualize Ambient OcclusionПереопределяет световые карты только с коэффициентом окклюзии при построении освещения. Это полезно для того, чтобы точно увидеть, что такое коэффициент окклюзии, и сравнить эффекты разных настроек.
Max Occlusion DistanceМаксимальное расстояние для объекта, вызывающего окклюзию на другом объекте.
Fully Occluded Samples FractionФракция взятых образцов, которые необходимо закупорить, чтобы достичь полной окклюзии. Обратите внимание, что есть также примитивная FullyOccludedSamplesFraction, которая позволяет контролировать, сколько окклюзии вызывает объект для других объектов.
Occlusion ExponentБолее высокие показатели увеличивают контрастность.
 

Настройки по умолчанию окружающая окклюзия UE4Настройки по умолчанию AO (MaxOcclusionDistance 200, FullyOccludedSamplesFraction 1.0, OcclusionExponent 1.0).

 

 

Низкочастотная окклюзия удаляется UE4MaxOcclusionDistance 5. Низкочастотная окклюзия удаляется, остается только окклюзия в углах.

 

Окклюзия темнее во всех диапазонах UE4FullyOccludedSamplesFraction 0.8. Окклюзия делается темнее во всех диапазонах, любые области, которые были на 80% окклюзии или выше, насыщены до черного.

окклюзия выталкивается UE4OcclusionExponent 2. Окклюзия переходит от среднего уровня к насыщенной темноте намного быстрее, окклюзия выталкивается в углы.

Окружающая окклюзия почти свободна, поскольку время освещения увеличивается, когда Num Indirect Lighting Bounces больше 0.

Ограничения

  • Окружающая окклюзия требует довольно высокого разрешения lightmap, для хорошего вида, поскольку она быстро изменяется в углах.
  • Предварительный просмотр качественных сборок не очень хорошо справляется с превью окружающей окклюзии, поскольку для AO требуются довольно плотные образцы освещения (как косвенные тени).

Замаскированные тени

Lightmass учитывает маску непрозрачности BLEND_Masked Materials при расчете теней. Часть материала, который обрезается в видовых экранах редактора, также не вызывает затенения, что позволяет значительно более детально затенять деревья и листву.

Замаскированные тени UE4Замаскированные тени 1 UE4

Особенности только Стационарного освещения

Небесная окклюзия изогнутой нормали

Lightmass генерирует направленную окклюзию в форме изогнутой нормали, когда включен Sky Light с неподвижной мобильностью.

Теневые карты дальнего расстояния

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

Особенности только Статического освещения

Зональный свет и тени

С Lightmass весь свет вместе с Static Mobility – это огни области по умолчанию. Форма, используемая источниками Точечного и Прожекторного света, представляет собой сферу, радиус которой установлен радиусом источника света в настройках Lightmass. Направленные источники света используют диск, расположенный на краю сцены. Размер источника света является одним из двух факторов, контролирующих теневую мягкость, поскольку более крупные источники света создают более мягкие тени. Другим фактором является расстояние от места приема до теневого колесика. Площадь теней становится мягче, так как это расстояние увеличивается, как и в реальной жизни.

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

Static Directional Light со статическим освещением UE4Lightmass вычисляет области теней UE4

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

Прозрачные тени

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

Прозрачный цвет теней

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

  • Освещенные материалы
    • BLEND_Translucent и BLEND_Additive: Transmission = Lerp (White, BaseColor, Opacity)
    • BLEND_Modulate: Transmission = BaseColor
  • Неосвещенные материалы
    • BLEND_Translucent и BLEND_Additive: Transmission = Lerp (White, Emissive, Opacity)
    • BLEND_Modulate: Transmission = Emissive

Это означает, что при непрозрачности 0 материал не будет отфильтровывать падающее освещение и не будет полупрозрачной тени. При непрозрачности 1 падающее освещение будет фильтроваться с помощью эмиссионного материала или базового цвета (в зависимости от того, светит ли он). Обратите внимание, что непрямое освещение иногда глушит полупрозрачные тени и делает их менее насыщенными, чем излучающие или рассеивающие полупрозрачный материал.

Четкость прозрачной тени

Существует несколько факторов, контролирующих прозрачность тени.

На первом изображении использовался большой источник света (направленный свет с углом источника света 5), а во втором использовался небольшой источник света (угол источника света 0).

направленный свет с углом источника света 5 UE4угол источника света 0 UE4

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

разрешение светового изображения низкое UE4материал экспортирован с низким разрешением UE4

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

Ограничения

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

Получение лучшего качества с помощью Lightmass

Повышение освещения

Диффузные текстуры

Во время рендеринга освещенный пиксельный цвет определяется как BaseColor * Lighting, поэтому базовый цвет напрямую влияет на видимость освещения. Высококонтрастные или темные диффузные текстуры затрудняют заметное освещение, в то время как низкоконтрастные диффузные текстуры среднего размера позволяют подробно освещать детали самого света.

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

рассеянные текстуры средней дальности UE4Lightmass с шумными темными рассеянными текстурами UE4

Режим просмотра Unlit полезен для просмотра термина Diffuse. Сцена на первом изображении выглядит более плоской и более монотонной в режиме просмотра без подсветки, что означает, что освещение выполняет всю работу и изменения в конечном пиксельном цвете в основном из-за различий в освещенности. (Чтобы получить хорошее освещение, ваша сцена должна выглядеть ровной и монотонной в режиме просмотра без подсветки.) Запекание освещения и макрофункции в диффузные текстуры будут противодействовать освещению.

средняя диффузия в режиме Unlit UE4затемненная диффузия в режиме Unlit UE4

Используя редактор цветных изображений редактора на нескольких частях неосвещенного изображения, мы видим, что сцена первого изображения имеет разбросанные значения около 0.5, в то время как сцена на втором изображении имеет диффузные значения около 0.08. Гистограмма этих неосвещенных изображений в Photoshop дает хорошее представление о распределении диффузных текстур.

Photoshop показывает значения цвета в гамма-пространстве, поэтому значение 186 (.73) на самом деле находится на полпути между черным и белым, а НЕ значение 127 (.5). * Первое изображение показывает, как должна выглядеть гистограмма, чтобы освещение стало заметным.

 

гистограмма освещения 1 UE4 гистограмма освещения 2 UE4

Настройка освещения

  • Избегайте окружающего освещения! Окружающее освещение, такое как Ambient cubemap, добавляет постоянный окружающий термин на ваш уровень, что уменьшает контрастность в косвенно освещенных областях.
  • Настройте освещенность так, чтобы был высокий контраст между непосредственно освещенными областями и косвенно освещенными областями. Контраст облегчит выбор, где происходят теневые переходы, и даст вашему уровню лучшее ощущение глубины.
  • Настройте освещение так, чтобы яркие области были не слишком яркими, а темные области не были полностью черными, но все же были детализированы. Важно проверить темные области на конечном целевом дисплее.

Улучшение качества освещения

Разрешение Lightmap

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

Качество Lightmass Solver

Настройки Lightmass Solver автоматически устанавливаются на основе того, какое качество сборки запрашивается в диалоговом окне Lighting Build Options. Производство должно давать достаточно хорошее качество, чтобы артефакты были явно не заметны при использовании диффузной текстуры.

Получение наилучшего времени для освещения

Существует несколько способов улучшить время на сборку Освещения:

  • Имеются только световые карты с высоким разрешением в областях с высокочастотным (быстро меняющимся) освещением. Уменьшите разрешение lightmap (световой карты) для поверхностей Brush и Static Meshes, которые не находятся в прямом освещении или не подвержены резким косвенным теням. Это даст вам тени с высоким разрешением в областях, которые наиболее заметны.
  • Поверхности, которые никогда не видны игроку, должны быть установлены на минимально возможное разрешение световой карты.
  • Используйте Lightmass Importance Volume, чтобы содержать наиболее важные области (только вокруг области воспроизведения).
  • Оптимизируйте разрешения lightmap по карте, чтобы время сборки для ячеек было более четким. Конструкция освещения никогда не может быть быстрее, чем самый медленный одиночный объект, независимо от того, сколько машин выполняет распределенную сборку. Избегайте больших сплошных мешей, которые окружают большую часть уровня и с высоким разрешением lightmap. Вы получите наилучшее время сборки, если вы разделите их на более модульные, особенно на машинах с множеством ядер.
  • Меши с большим количеством самостоятельных окклюзии занимают больше времени, например, ковер со многими слоями, параллельными друг другу, займет гораздо больше времени, чем плоский пол.

Диалоговое окно Lighting Build Info – очень важный инструмент для улучшения времени сборки освещения. Во-первых, создайте освещение на уровне, на котором вы хотите увидеть статистику. Затем откройте диалоговое окно в разделе Build-> Lighting Info-> Lighting StaticMesh Info. Измените раскрывающийся список на Lighting Build Info. Это покажет отсортированный список мешей и то, сколько времени они занимают для расчета освещения.Диалоговое окно Lighting Build Info UE4

Настройки Lightmass

Lightmass Importance Volume

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

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

На втором изображении показан крупный план воспроизводимой области многопользовательской карты, при этом выбран правильный уровень Lightmass Importance Volume. Lightmass Importance Volume уменьшил радиус области с 80 000 единиц до 10000 единиц, что на 64x меньше площади для освещения.

1 уровень Lightmass Importance Volume UE42 уровень Lightmass Importance Volume UE4

Вы можете добавить Lightmass Importance Volume к уровню, перетащив объект Lightmass Importance Volume из вкладки Volumes в меню Modes на уровень, а затем масштабируя его до необходимого размера.Light Mass Volume UE4

Вы также можете преобразовать Brush в Lightmass Importance Volume, щелкнув раскрывающийся список Convert Actor на панели Details в разделе Actor.список Convert Actor UE4

После нажатия раскрывающегося списка появится меню, в котором вы можете выбрать тип Актера для замены Brush.меню типов актера UE4

Если вы разместите несколько Lightmass Importance Volumes, большая часть работы по освещению будет выполнена с ограничивающей рамкой, содержащей их все. Тем не менее, образцы объемного освещения помещаются только в меньшие объемы.

Мировые настройки

Настройки Lightmass можно отрегулировать в окне настроек World Settings в разделе Lightmass.Настройки Lightmass UE4

Вы можете получить доступ к World Settings, нажав значок  на главной панели инструментов.

СвойствоОписание
Force No Precomputed LightingЭто существенно деактивирует способность Lightmass создавать светлые и теневые карты, заставляя уровень использовать только динамическое освещение.
Static Lighting Level ScaleМасштаб уровня по отношению к масштабу движка, который составляет 1 юнит Unreal = 1 см. Это используется для определения того, сколько деталей для расчета в освещении и меньших масштабах значительно увеличит время сборки. Для огромного уровня более крупные шкалы размером 2 или 4 могут использоваться для уменьшения времени сборки.
Num Indirect Lighting BouncesКоличество световых волн позволяет отскакивать от поверхности, начиная с источника света. 0 – только прямое освещение, 1 – один отскок и т.д. Ускорение 1 занимает больше времени для рассчета, а затем следует отскок 2. Последовательные рефлексы почти свободны, но также не добавляют очень много света, так как свет ослабляется при каждом отскоке.
Indirect Lighting QualityМасштабирует отсчеты выборок, используемые (решателем) Lightmass GI solver. Более высокие настройки приводят к меньшему количеству артефактов solver (решателя) (шум, пятнистость) при значительно увеличенном времени сборки. Обратите внимание, что это не повлияет на артефакты из-за использования lightmaps (текстурные швы, артефакты сжатия, формы текселя).
Indirect Lighting SmoothnessБолее высокие значения приводят к тому, что косвенное освещение может быть сглажено больше, что может скрыть решающий шум, а также приведет к потере подробных косвенных теней и обтекания окружающей среды. Полезным может быть снижение его (0.66 или 0.75) при увеличении Качества Косвенного Освещения для обеспечения высокого качества.
Environment ColorПринимающий цвет лучей, которые пропускают сцену. Окружение можно визуализировать как сферу, окружающую уровень, излучая этот цвет освещения в каждом направлении.
Environment IntensityМасштабирует Цвет Окружения для цвета HDR среды 
Diffuse BoostМасштабирует диффузный вклад всех материалов в сцену. Увеличение DiffuseBoost – эффективный способ увеличить интенсивность косвенного освещения в сцене. Диффузный термин зажимается до 1.0 в яркости после применения DiffuseBoost, чтобы сохранить энергию материала (что означает, что свет должен уменьшаться на каждом отскоке, а не увеличиваться). Если подъем DiffuseBoost не приводит к более светлому непрямому освещению, диффузный термин зажимается, а IndirectLightingScale света следует использовать вместо увеличения косвенного освещения.
Use Ambient OcclusionПозволяет рассчитывать статическую окклюзию окружения с помощью Lightmass и встраивать в ваши карты света.
Direct Illumination Occlusion FractionКакую часть АО следует применять для прямого освещения.
Indirect Illumination Occlusion FractionКакую часть АО следует применять к косвенному освещению.
Occlusion ExponentБолее высокие показатели увеличивают контрастность.
Fully Occluded Samples FractionФракция взятых образцов, которые необходимо закупорить, чтобы достичь полной окклюзии.
Max Occlusion DistanceМаксимальное расстояние для объекта, вызывающего окклюзию на другом объекте.
Visualize Material DiffuseПереопределяет нормальное прямое и косвенное освещение с помощью только диффузного материала, экспортируемого в Lightmass. Это полезно при проверке того, что диффузия экспортируемого материала совпадает с фактической диффузией.
Visualize Ambient OcclusionЗаменяет нормальное прямое и косвенное освещение только с помощью термина AO. Это полезно при установке настроек окружной окклюзии, поскольку она изолирует термин окклюзия.
Level Lighting QualityЭто отражает настройки качества сборки текущего уровня освещения.

Настройки освещения

Ниже приведены настройки Lightmass, которые можно отрегулировать внутри свойств света в разделе Lightmass.Настройки освещения UE4

СвойствоОписание
Indirect Lighting Saturation0 приведет к тому, что косвенное освещение будет полностью ненасыщенным, 1 не изменится.
Shadow ExponentУправляет падением теневых полутеней или тем, насколько быстро области меняются от полностью освещенных до полностью затененных.
Light Source AngleТолько для Направленного Света определяет угол, который излучающая поверхность света распространяется относительно приемника, влияет на размеры полутеней.

Примитивные настройки компонентов

Ниже приведены настройки Lightmass, которые можно настроить на Brushдобавленной на вкладке Geometry в меню Modes. Эти параметры находятся на панели Details у Brush.настройки компонентов UE4

СвойствоОписание
Diffuse BoostМасштабирует диффузный вклад всех материалов, применяемых к этому объекту.
Fully Occluded Samples FractionФракция проб AO, взятых из этого объекта, которые необходимо закупорить, чтобы достичь полной окклюзии на других объектах. Это позволяет контролировать, сколько окклюзии вызывает объект для других объектов.
Shadow Indirect OnlyЕсли установлен этот флажок, этот объект будет скрывать только косвенное освещение. Это полезно для травы, так как геометрия, которая визуализируется, является просто представлением фактической геометрии и не обязательно отличает точно сформированные тени. Это еще полезно для травы, потому что полученные тени будут слишком высокой частоты, чтобы их можно было хранить в заранее вычисленных световых картах.
Use Two Sided LightingЕсли этот флажок установлен, этот объект будет подсвечен так, как если бы он получал свет с обеих сторон его многоугольников.

Настройки базового материала

Ниже приведены настройки Lightmass, которые можно отрегулировать внутри материала для базового узла под панелью Details.

Для получения дополнительной информации о редакторе материалов см. Руководство пользователя редактора материалов.раздел Lightmass UE4

СвойствоОписание
Cast Shadow as MaskedДля полупрозрачных материалов обрабатывается материал, как будто он замаскирован в целях распространения теней.
Diffuse BoostМасштабирует диффузный вклад этого материала в статическое освещение.
Export Resolution ScaleУвеличивает разрешение, на которое экспортируются атрибуты этого материала. Это полезно для увеличения разрешения материала при необходимости.