Статическое освещение в Unreal Engine 4

Разрешение лайтмап/Качество теней

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

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

Статическое освещение в Unreal Engine 4


Простенькая сцена с 3 статическими мешами.

В данной сцене 3 объекта: 2 стены и пол. Каждый объект имеет собственную тень, которая запечена в текстуру именуемую — лайтмапой (lightmap). Данная лайтмапа хранит в себе информацию о тенях/освещении, которые проецируются на эту текстуру. Она, как правило, создаётся художником в процессе создания ассета.

Что нужно знать про лайтмапы и как их эффективно создавать?

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

Теперь нам надо увеличить разрешение лайтмапы для некоторых мешей. Каждый меш имеет свою собственную лайтмапу, разрешение которой можно установить в details panel, когда наш меш выбран в mesh editor.

В данном примере рассматриваем разрешение лайпмапы пола, и только его.
Когда изменяете разрешение лайтмапы, используйте значения только кратные двум (32(по умолчанию),64,128,и т.д.) за исключением BSP представленных ниже.

Качество разрешения лайтмапы зависит от двух факторов : размер меша и размер UV шела на развёртке лайтмапы.

Статическое освещение в Unreal Engine 4
Разрешение = 64


Статическое освещение в Unreal Engine 4
Разрешение = 128


Статическое освещение в Unreal Engine 4
Разрешение = 256


Статическое освещение в Unreal Engine 4
Разрешение = 512


Разница лайтмапы BSP от статического меша в том, что значение лайтмапы BSP уменьшается в пользу лучшего качества.

Статическое освещение в Unreal Engine 4
Разрешение = 32


Статическое освещение в Unreal Engine 4
Разрешение= 24


Статическое освещение в Unreal Engine 4
Разрешение = 16


Статическое освещение в Unreal Engine 4
Разрешение= 8


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

Разрешение лайтмап для ландшафта

Статическое освещение в Unreal Engine 4
Разрешение = 1.0


Статическое освещение в Unreal Engine 4
Разрешение= 2.0


Лайтмапы ландшафта отличаются также как и в BSP и в Static Meshes. Landscape Lightmap Resolution использует множитель, который увеличивает разрешение, а соответственно и качество запекаемых теней. Большие ландшафты могут потребовать более высокое значение данного множителя, в отличии от небольших.

На панели Details вы найдёте параметр Static Lighting Resolution, который по умолчанию равен 1. Увеличивайте данный параметр пока не получите нужный результат.

Швы на тенях / разница затенения при непрямом освещении

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

Если вы с таким не сталкивались, то вот пример:

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

Статическое освещение в Unreal Engine 4


Если поверхности, принимающие непрямое освещение, являются плоскими поверхностями, они генерируют такое несоответствие в затенении между ними следующим образом:

Статическое освещение в Unreal Engine 4


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

Рекомендации по исправлению данной проблемы.

Для исправления ситуации идём в World Settings, в раздел Lightmass и крутим-вертим следующие параметры:

Indirect Lighting Quality устанавливаем = 2 или выше.

Indirect Lighting Smoothness указываем в диапазоне 0.65-0.75. Чем ниже значение, тем больше артефактов вы можете получить в итоге.

Static Lighting Level Scale можем указать поменьше, для лучшего смешивания. НО! это значение меняет масштаб просчёта освещения для всего уровня. Это приведёт к увеличению времени запекания. Данная манипуляция целесообразна при архитектурной визуализации нежели для игрового уровня.

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

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

Также не забывайте:

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

Если есть возможность, вы можете скрывать подобные артефакты посредством декора, к примеру, колонны или прочие декоративные элементы.

Что такое Overlapping UV

Когда используете статическое или стационарное освещение, необходимо использовать 2 развёртки, иначе вы получите такое сообщение:

Статическое освещение в Unreal Engine 4


Лог после запекания освещения

В данном случае вам надо установить 2й канал развёртки для вашей лайтмапы. В противном случае редактор будет использовать имеющуюся развёртку со всеми имеющимися ошибками.

Вы можете сделать это прямо в редакторе (картинка ниже) либо же с вашем 3d редакторе.

Оригинальные UV и результаты

Статическое освещение в Unreal Engine 4


Перекрывающиеся UVs

Статическое освещение в Unreal Engine 4


Результат в редакторе

Правильные UV и результаты

Статическое освещение в Unreal Engine 4


Правильные UVs

Статическое освещение в Unreal Engine 4


Результат в редакторе

Заметьте, что финальные UV не имеют перекрытий что даёт теням/свету правильно запечся в текстуру.

Как сгенерировать UV в редакторе

Откройте меш, лайтмапу которого ваш нужно отредактировать.

Найдите панельку похожую на эту:

Статическое освещение в Unreal Engine 4


Static Mesh Editor Details Panel

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

Настройки вкладки “Build Settings” на которых мы сфокусируемся:

✔ Generate Lightmap UVs = удостоверьтесь в том, что данная галочка стоит.
✔ Min Lightmap Resolution =Минимальный размер разрешения лайтмапы которое вы хотите.
✔ Source Lightmap Index = Источник с которого генерируем лайтмапу
✔ Destination Lightmap Index = Индекс развёртки которую мы хотим использовать в качестве лайтмапы.

Для большинства ассетов это достаточно хорошие настройки. Ключевой момент тут — выбор нужного индекса источника лайтмапы. Это UV который обычной используют для текстур. UV шелы в этой UV будут перепакованы, и не будут образовывать перекрытия поверхностей. Разрешение лайтмапы не влияет на качество развёртки, этот параметр влияет лишь на качество теней которые будут запекаться на эту развёртку.

Если вы хотите проверить, какая у вас получилась развёртка после генерации, выберите UV channel 1 (показано на картинке):

Статическое освещение в Unreal Engine 4
Редактор статик мешей, выбор UV Channel


Теперь, после генерации лайтмап UV, осталось выбрать нужный id в настройках самого меша. В редакторе меша перейдите в details panel, во вкладку “Static Mesh Settings”.

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

Удостоверьтесь, что значение кратно 2 (пример: 32, 64, 128, 256, и тд.)

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

Статическое освещение в Unreal Engine 4


Static Mesh Editor Details, Настройки лайтмапы

После использования данных настроек у вас есть правильное разрешение лайтмапы.

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

Если вы используете в своём пайплайне 3ds max или maya, посмотрите видео ниже, на них человек доступным языком объясняет как сделать отличную развёртку для лайтмапы.

Сказать автору видео «Спасибо» можете в виде like’ов и подписки на канал (там ещё много полезного видео на РУССКОМ языке (всё как вы любите)).

Как контролировать глобальное освещение при использовании статического освещения

Когда вы используете статическое освещение, вам необходимо сбилдить освещение чтобы увидеть результаты. Лайтмасс (Lightmass) используют для генерации и компиляции текстур, которые будут хранить информацию об освещении и тенях запечённую в лайтмапы.

По умолчанию, значение лайтмасс = 3 световых отскока, дабы получить GI (глобальное освещение) используя статическое освещение. Если необходимо изменить данное значение, то его можно найти во вкладке World Settings.

Статическое освещение в Unreal Engine 4


Здесь вы можете видеть множество настроек того, как освещение будет реагировать в вашей сцене. Для GI мы сфокусируемся лишь на “Num of Indirect Lighting Bounces”. Ползунок ограничен в пределах от 1 до 4. Но вы можете установить любое значение просто вписав его туда.

Статическое освещение в Unreal Engine 4
Lightmass World Settings по умолчанию


Global Illumination пример сцены.Одинарный источник света в 250 единиц (15w примерно)

Статическое освещение в Unreal Engine 4
Настройки сцены


Статическое освещение в Unreal Engine 4
0 отскоков


Статическое освещение в Unreal Engine 4
1 отскок


Статическое освещение в Unreal Engine 4
2 отскока


Статическое освещение в Unreal Engine 4
3 отскока


Статическое освещение в Unreal Engine 4
100 отскоков


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

Почему тени пятнистые или как избавится от загрязнения лайтмап?

Пятна, загрязнения, ну или как вы там это называете, не суть; данная ошибка часто возникает при использовании статического освещения в ue4.

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

Первое что приходит на ум — это то, что это связанно с непрямым освещением от отскоков GI при построении лайтмасс.

Что бы показать как это наиболее эффективно исправить, будем использовать 2 комнаты в качестве примера.

Рекомендуем посмотреть
  • Динамическое освещение в Unreal Engine 4 В данной части статьи мы рассмотрим решения, направленные на улучшение качества теней соответствующих геометрии. Это также поможет улучшить качество динамических теней.
  • Проблемы с освещением и методы их решения в Unreal Engine 4 По правилам освещения, чёрные тени обычно используются, если у вас нет заполняющего света. Это часто происходит по тому, что окружающая среда имеет один направленный поток света, представленный как
  • Смешивание кадров с использованием векторов движения Моя вариация смешивания кадров, впервые разработанная Guerrilla Games для Killzone 2, в конце статьи вы найдёте ссылки на их статью и другие ресурсы. Цель данного метода заключается в том, чтобы
  • Как выбрать тепловизор для наблюдения Тепловизор - это современное оборудование, которое позволяет в абсолютно любую погоду безошибочно и максимально точно отследить или просто обнаружить живое существо либо технику. Абсолютно, при
  • Как устроить освещение в магазинах одежды Одно из основных факторов в успешных розничных продажах является свет. Очень важной составляющей для обеспечения покупателям комфортной обстановки становится освещение, которое при правильном