Полезное

Мы Вконтакте

Discord канал

Просчет освещения

Добавлено Фев 16 2016
Просчет освещения

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

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

Возможности статического и стационарного освещения.

Отражение света

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

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

Только прямое освещение

Далее идет отражения света (можно увидеть результат на скриншоте ниже). Яркость и цвет отражения зависит от самого источника света, а так же, как описано ранее, от свойства самой поверхности. Каждый «отскок» света будет темнее предыдущий итерации, так как часть света поглощается самой поверхностью. Заметьте, что коллонна получила больше освещения внизу от непрямого освещения, так как она стоит рядом с тем местом, куда попал основной, прямой свет от солнца (которое эмулируется через Directional Light).

Первый отскок света

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

Второй отскок фотонов

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

Результат просчета

Если ваша поверхность имеет контрастный и яркий цвет, то это может сильно повлиять на непрямое освещение. Если эффекта не достаточно, вы можете увеличить параметр DiffuseBoost в материале или же самом уровне.

Влияние цвета на отражение светаОтображение, как цвет влияет на отражение цвета

Освещение динамики

В процессе просчета освещения оставляются специальные семплеры в 3х мерном пространстве вашего уровня. Такие семплеры подхватывают непрямое освещение для того, что бы потом соответствующим цветом подсвечивать динамические объекты, в особенности персонажей. Это позволяет «слить» динамические объекты со статическим окружением по освещению. Такой способ называется «Кеширование непрямого освещения».

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

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

Визуализация семплеровВизуализация

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

Вы можете визуализировать семплеры через меню Вьюпорта Show > Vizulize > Volume Lighting Samples.

Ограничения

По умолчанию, создание кеша на больших картах приведет к огромному количеству подобных семплеров. Это может вызвать проблемы с оптимизацией. Используйте параметр Static Lighting Level Scale в настройках освещения вашей карты, что бы исправить данную проблему.
Динамические объекты, находящиеся вне Lightmass Importance Volume, будут иметь полностью черную затененную сторону.

Ambient Occlusion

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

Ambient Occlusion (AO) — это специальный алгоритм затенения поверхности, который вы можете увидеть при равномерно яркой атмосфере (например пасмурной погоде). Данный алгоритм затенияет углы, проемы и остальные «тесные» места при непрямом и прямом освещении, после чего запекает это вместе с остальным просчетом в текстуры. AO включен по умолчанию, однако вы можете его выключить в настройках просчета (Lightmass Settings) в World Settings.

На первом скриншоте сцена без Ambient Occlusion, а второй скриншот уже с ним. Обратите снимание на затенения поверхности там, где объекты близко друг к другу.

Без Ambient OcclusionAmbient Occlusion

Настройки AO

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

Просчет Ambient Occlusion почти ничего не стоит до тех пор, пока Num Indirect Lighting Bounces выше 0.

Ограничения

Для нормального отображения AO необходимо относительно высокое разрешение текстур освещения, так как данный эффект обычно имеет значение на малых дистанциях.
Preview качество просчета освещение обычно плохо просчитывает AO. Старайтесь проверять его на более высоком качестве (например High).

Тени от Masked материалов

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

Тени от Masked материаловВизуализация света для Masked

Возможности Статичных источников освещения

Объемные источники

При просчете освещения, все источники освещения с режимом мобильности Static имеют определенный размер (в других случаях свет излучается из точки). Point и Spot источники используют сферу в качестве формы, в то время как Directional использует диск на краю сцены. Контролировать радиус сферы у первых двух можно с помощью Light Source Radius параметра. Из-за того, что источники света имеют определенный размер, тени от объектов имеют свойство становиться мягче на расстоянии, так же как и в реальном мире появляется полутень.

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

Тени одного размераПостепенно рассеивающиеся тени

Радиус Point и Spot Light можно увидеть благодаря желтой сетке сферической формы. Белая сетка означает радиус влияния источника света. Следите за тем, что бы радиус самого источника света не пересекал геометрию, иначе такой источник будет излучать свет и с другой стороны и может так же создать артефакты в конечном результате.

Радиус источника света

Тени от прозрачных материалов

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

Тени от прозрачных материалов

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

Режимы смешивания BLEND_Translucent и BLEND_Additive — Цвет тени = интерполяция между белым и цветом из BaseColor в зависимости от свойства Opacity.
Режим BLEND_Modulate выдает цвет тени такой же, как и BaseColor свойство материала.

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

Жесткость теней

Существует несколько способов контролировать жесткость теней от полупрозрачных материалов.

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

Жесткие тени от прозрачного материалаМягкие тени от прозрачного материала

На первом изображении ниже использовался свет из одной точки, как и на втором примере выше, однако разрешение карт освещения (Lightmap resolution) довольно малое, что бы сохранить четкость материалов. На втором изображении в материале было установлен параметр Export Resolution Scale на очень низкий, из-за чего тени хоть и низкого разрешения, но жесткие.

Низкое качество тенейВысокое качество теней

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

Воздействие прозрачных теней на непрямое освещение

Ограничения

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

Создание качественного освещения

Выделяющийся свет

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

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

На изображениях ниже вы можете сравнить, как на первом видно свет при светлых материалах, и на втором, где заметны только резкие смены освещения из-за того, что там использовались в основном темные и «шумные» текстуры.

Нормальное освещениеТемное освещение

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

Нормальные цвета материаловТемные цвета материалов

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

Избегайте равномерного освещения, например освещения от Cubemap’ов, так как такое освещение уменьшает контрастность в зонах, где работает только непрямое освещение. Из-за этого может потеряться детализация сцены.
Устанавливайте источники света таким образом, что бы прямо освещенные зоны хорошо выделялись на фоне непрямого освещения. Такой контраст хорошо поможет выделить тени и лучше детализирует вашу сцену.
Так же старайтесь избегать слишком ярких источников света, а так же слишком темных теней.

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

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

Предустановка качества просчета

Перед тем, как просчитывать освещение, определитесь, на какой вы стадии. Если у вас готовая сцена и настроенное освещение, то хорошим решением будет выполнить запекание на Production качестве (Настройки Lightmass Solver). Это может увеличить время просчета, однако выдаст наилучшее качество с наименьшим количеством артефактов.

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

Ускорение процесса просчета

Несколько способов, которые помогут сделать просчет освещения быстрее:

Используйте высокое разрешение карт освещения только в тех местах, где у вас есть контрастное (сильно меняющиеся) освещение и жесткие тени. Уменьшайте разрешение на тех моделях, которые не попадают под прямое освещение или тени. Если объект находится в зоне, где освещение будет непрямым, лучше поставить разрешение поменьше.
Поверхности, которые никогда не увидит игрок должны быть с наименьшим разрешением.
Используйте Lightmass Importance Volume для того, что бы выделить важные зоны для просчета освещения (например только те, где может находится сам игрок).
Оптимизируйте разрешение карт таким образом, что бы оно было равномерным. Запомните, что процесс просчета никогда не может быть быстрее, чем самый медленный объект для просчета, не важно, сколько машин у вас занимается этим процессом. Избегайте больших объектов с очень высоким разрешением. Лучше поделите их на несколько модульных кусков, в особенности если у вас несколько ядер или несколько машин, просчитывающих освщение.
Объекты, которые сами себя перекрывают будут просчитываться в разы дольше. Например ковер с несколькими слоями полигонов, наложенных друг на друга для получения 3х мерного эффекта, будет просчитываться значительно дольше, нежели просто плоский пол.

Существует очень полезное окно — Lighting Build Info. В нем вы сможете проверить, сколько заняло времени, что бы просчитать карту для конкретного примера. Вы можете найти это окно под меню Build > Lighting Info > Lighting StaticMesh Info. Переключите вкладку на Lighting Build Info, что бы найти нужную информацию.

Lighting Build Info

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

lightmass Importance Volume

Границы многих карт, в особенности открытых, уходят гораздо дальше, чем играбельная зона. Процесс просчета излучает фотоны в зависимости от размера карты, поэтому фоновые объекты за границами игровой площадки могут сильно тормозить процесс просчета, так как увеличивается общее количество фотонов. Lightmass Importance Volume устанавливает, в какой зоне излучаются и просчитываются фотоны более точно и реалистично. Это позволяет сфокусировать внимание процесса просчета только там, где там, где будет находится игрок и видеть результаты освещения вплотную. В пространстве вне Lightmap Importance Volume просчитывается только один отскок непрямого освещения и более низкого качества.

На первом изображении ниже показана игровая локация сверху с включенным режимом просмотра Wireframe. Зона, где будет находится игрок и которой нужно более качественное освещение гораздо меньше. На втором изображении игровая зона приближена. На ней так же установлен Lightmass Importance Volume (Он выделен). Радиус приорететного просчета уменьшился с 80 000 юнитов до 10 000, что в 64 раза меньше.

Игровая локацияКонкретное место игры

Вы можете добавить Lightmass Importance Volume на уровень, перетащив его с панели Modes, категории Volumes. После чего нужно установить размер зоны.

Добавление Lightmass Importance Volume

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

Конверт BSP в Lightmass Importance Volume

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

Настройки сцены

Настройки просчета освещения можно изменить в настройках сцены — так называемой World Settings панели. Параметры для освещения находятся под категорией Lightmass.

Настройки сцены

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

Параметр Описание
Force No Precomputed Lighting Отключает статичное освещение на сцене, указывая, что на ней будет только динамическое освещение, а так же не будет хранится никаких карт освещения в файле. Что бы очистить файл сцены от карт освящения (которые могут весить достаточно много), вам нужно включить данный параметр и ещё раз нажать на Build для просчета и вычещения карт.
Static Lighting Level Scale Масштаб сцены по сравнению со стандаатной системой в UE4 (1 юнит = 1 см). Это используется для того, что бы определять, насколько детальнее должен быть просчет. Учитывайте, что уменьшение данного параметра приведет к увеличению времени просчета. На больших сценах освещение может просчитываться в 2 или даже 4 раза дольше.
Num Indirect Lighting Bounces Количество отскоков непрямого освящения. 0 — только прямое освещение без отражений от поверхности. параметр 1 и больше включает непрямое освещение, позволяя фотонам отражаться от поверхности. 1й отскок занимает всегда больше всего времени, но и имеет больше влияния на само освещение, чем последующие, которые так же гораздо дешевле в просчете.
Indirect Lighting Quality Увеличивает качество непрямого освещения. Высокие настройки могут избавить от некоторых артефактов на сцене, такие как шум или грязь. Учтите, что это не избавит от артефактов, которые возникают из-за UV развертки модели (швы, неправильные тени и т.п.).
Indirect Lighting Smoothness Смягчает непрямое освещение, что так же может избавить от шума. С другой стороны тени непрямого освящения или Ambient Occlusion могут потерять свою детализацию. Иногда полезно уменьшать данный параметр до 0.66 или 0.75, при этом увеличивая параметр Indirect Lighting Quality. Таким образом можно сохранить детализацию, но при этом избавиться от шумов. Однако такой прием может повлиять на время просчета освещения в худшую сторону.
Environment Color Цвет, который подхватывается в процессе просчета. Данный параметр можно визуализировать как сферу вокруг сцены, которая излучает указанный цвет во все стороны.
Environment Intensity Усиливает параметр Envirement Color.
Diffuse Boost Определяет влияения Diffuse свойства при просчете освещения. Другими словами, без данного параметра свет будет отражаться от поверхности со своим цветом, не подхватывая цвет самого материала. Обратите внимание, что повышая параметр Diffuse Boost, вы не сделаете непрямое освещение святлее, так как свет ограничен яркостью 1.0, а при каждом отскоке он становится все слабее.
Use Ambient Occlusion Определяет, будет ли в процессе просчитываться так называемый Ambient Occlusion и запекаться с основными картами освещения.
Direct Illumination Occlusion Fraction Как сильно AO накладывается под прямым освящением.
Indirect Illumination Occlusion Fraction Как сильно AO накладывается под непрямым освящением.
Occlusion Exponen Определяет контраст эффекта AO.
Fully Occluded Samples Fraction Максимальный процент затенения, выше которого AO будет полностью черным.
Max Occlusion Distance Максимальная дистанция от объекта, на которой он будет отбрасывать подобную тень на другие поверхности.
Visualize Material Diffuse Заменяет обычное прямое и непрямое освещение цветом, соответствующим Diffuse свойством материала. Это полезно для удостоверения того, что Diffuse свойство на материалах соответствует тому, какой цвет будет участвовать в просчете освящения.
Visualize Ambient Occlusion Помещает в запеченые текстуры только AO, при этом остальное освещение не учитывается. Полезно для того, что бы настроить данный эффект и точно видеть, где и как сильно он применяется.
Level Lighting Quality Определяет общее качество просчета освещения и его настройки.

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

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

Параметр Описание
Indirect Lighting Saturation Насыщенность непрямого света от источника света.
Shadow Exponent Контролирует радиус полутени, или другими словами, как быстро тень от источника света меняется с полностью темногой до её же отсутствия.
Light Source Angle Определяет угол под которым стоит источник света относительно той поверхности, куда попадает его свет. Влияет на размер полутеней. Только для Directional Light.

Настройки BSP примитивов

Настройки BSP

Настройки освещения для BSP геометрии доступны в параметрах объекта на панеле Details, в разделе Lightmass.

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

Настройки материала

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

Параметр Описание
Cast Shadow as Masked У полупрозрачного материала (Translucent) указывает, что тени будут отбрасываться как от Masked материала.
Diffuse Boost Определяет вклад Diffuse свойства при просчете статичного освящения.
Export Resolution Scale Увеличивает разрешения Diffuse свойство при экспорте в программу просчета освящения. Полезно, когда стандартное разрешение не дает нужное разрешение при непрямом освящении.
Добавил: Flakky Категория: Освещение и окружение


Комментарии

На данный момент комментарии отключены.

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница