Почему мои тени чёрные?
По правилам освещения, чёрные тени обычно используются, если у вас нет заполняющего света.Это часто происходит по тому, что окружающая среда имеет единично направленный поток света, представленный как солнце.UE4 построен на методе ,обеспечивающем эффективное заполнение светом окружающего мира, мы называем его SkyLight.Немного про Skylight.
Без Skylight
С Skylight
Когда вы сконвертируете свою BSP геометрию в static mesh , вы увидите данный результат:
Не беспокойтесь, это нормально. Так как мы только что сконвертировали наш BSP в Static mesh, мы должны убедится в правильности назначенного канала для lightmap.Для того чтобы это было делать проще, lightmap автоматически генерируется когда вы конвертируете BSP.Единственное что вам осталось сделать- это выбрать нужный канал и разрешение.
- Для того что бы это сделать — откройте новосозданный Static Mesh. Взгляните на details panel, расположенную справа в Static Mesh Settings.
- Тут вам надо установить Lightmap Resolution. Это может быть любое значение кратное двум (к примеру, 32, 64, 128, прочее). Это будет разрешением вашей lightmap текстуры.Высокое значение разрешения lightmap даст лучший результат, но в то же время займёт больше памяти и времени просчёта.
- Далее, установите Lightmap Coordinate Index в 1 (это наиболее используемый канал для lightmap ).Это положение вашей lightmap UV где нет наложения поверхностей
- Если вы хотите увидеть как ваша lightmap выглядит, вы можете кликнуть по кнопке для UV в тулбаре и выбрать UV Channel 1 из выпадающего списка.
Что если я не хочу иметь lightmaps или моя игра в них не нуждается
Бывают моменты когда игра не нуждается в lightmaps, т.к. оптимизирована для использования лишь динамического освещения.Опция которая отключает lightmaps , расположена в world settings и проверяется пунктиком “Force No Precomputed Lighting”. Когда освещение перестроится- все ранее запечённые lightmaps будут удалены.
Есть 2 метода для отключения статического освещения:
Проектная спецификация: отключение статического освещения
- Menu > Edit > Project Settings
- Перейдите в Rendering Tab > Lighting Tab
- Снимите галочку с «Allow Static Lighting»
- Для восстановления полной функциональности данной опции вам необходимо перезапустить редактор
Спецификация уровня: отключение статического освещения
- Откройте World Settings
- Перейдите в Lightmass Tab .
- Снимите галочку с «Force No Precomputed Lighting»
- Вам будет предупреждение, нажмите ОК
- Заново просчитайте освещение для полного обнуления ранее запечённого освещения
На данном изображении вы можете наблюдать ассет ,который был сделан в 3ds max: плоскость и трубу.
Созданный ассет в 3ds max
В редакторе всё выглядит отлично, но когда я импортирую это в ue4, часть геометрии пропадает.
Так что же происходит, ведь данное явление не является нормой?
На самом деле- это нормальное явление.Если смотреть на плоскость, то она рендерится как и положено, но вот её задняя часть, как и ближние (к камере -прим.ред.)полигоны трубы- не рендерятся.
Созданный ранее ассет импортирован в UE4
Когда вы создаёте вашу геометрию в программе для моделирования, по умолчанию стоят настройки, позволяющие видеть геометрию с двух сторон.
В UE4 невидимые полигоны не рендерятся для сохранения производительности.Это не всегда необходимо для получения дополнительных полигонов или плоскостей для рендера, так как в противном случае будут дополнительные «draw calls», которые могут вызвать уменьшение производительности.С несколькими инстансами это возможно не будет иметь значительного различия, но когда вы разрабатываете под определённую платформу или имеете лимит на «draw calls»- это преобретает значительный смысл.
Для понимания почему мы можем видеть только одну сторону нашей геометрии, мы должны открыть нашу геометрию в редакторе геометрии и включить отображение нормалей.Мы увидим зелёные линии указывающие направление полигона(имеется ввиду, что зелёная линия (нормаль) направлена перпендикулярно плоскости полигона). На изображении снизу, мы видим, что линии идут в направлении центра геометрии. Это направление которое даёт возможность увидеть геометрию.
Совет:Вы можете проверить направление нормалей в редакторе ue4 дабы увидеть, где именно у вас проблема.
Итак, у нас некоторые объекты с невидимыми сторонами, всё то нам нужно сделать, дабы это исправить:
1.(ТОЛЬКО ДЛЯ СТАТИКИ) Двухстороннее освещение
- Включить данную опцию в details panel для выделенного ассета в Level Viewport.
- С включённой данной опцией когда свет построится ,lightmass будут считать что освещение для геометрии запечено.Это будет давать тень, даже если мы не можем видеть её с такого ракурса.Это не работает для подвижных/днамических источников света, т.к. Unreal Engine 4 использует отложенный рендер.
Details Panel ассета в Level Viewport
Финальный результат
2. Создание двухстороннего материала
- Откройте редактор материалов и слева в details panel выберите опцию “Two-sided”.
- Сохраните и скомпилируйте ваш материал, чтобы увидеть результат.
- Данный метод может быть использован с Статическим/Стационарным/Подвижным освещением.Теперь материл рендерит плоскости, которые ранее не были видны.
Внимание! данный способ добавляет draw calls.
Как упоминалось ранее, это не актуально для небольших сцен, но если вы ограничены в ресурсах, то это может повлиять на производительность.
Атрибуты материала details панелька
Финальный результат
Почему это выглядит так, как будто я ничего не делал до этого или Масштабируемые настройки
Масштабируемые настройки располагаются в Settings > Engine Scalability опции на тулбаре.
Цель данного масштабирования заключается в том, что бы не шибко производительные компьютеры не умирали от ультра настроек.По умолчанию редактор занижает настройки если FPS падает слишком низко.
Опция “Shadows” непосредственно влияет на дальность прорисовки всех динамических теней.Это верно когда используется “Movable” освещение или когда освещение ещё не запекалось для статического освещения, так как те используют динамические тени до тех пор, пока освещение не будет запечено в lightmaps.
Engine Scalability Settings
Изображения снизу демонстрируют тени на дистанции при разных качествах теней указанных в настройках.
Epic
High
Medium
Low
Если у вас топовой ПеКа, но теней нет или с ними что-то не то, стоит сначала потыкать в этих настройках, прежде чем искать проблемы в других местах.Также редактор может занижать настройки если просадки фпс слишком велики.
Если вы не испытываете нужны в автоматическом подборе настроек, то вы можете выключить данную опцию, нажав на галочке внизу окошка.
Want to know more about Engine Scalability?
Почему на источниках света появился красный Х ?
Стационарные источники света ограничены 4 пересекающимися источниками. Когда добавляется ещё и 5й, появляется красный «Х», являясь индикатором того, что ИС с малым радиусом будут переведены в динамические ИС.Это может привести к проблемам производительности, так как динамические ИС потребляют больше ресурсов для запекания теней.
Пересекающиеся Стационарные источники света
Если освещение будет запечено с любым стационарным светом который имеет перекрытия, будет выдано предупреждение с описанием ИС который является источником проблемы и последующими из-за этого последствиями.
Чтобы это исправить, нужно уменьшить количество ИС до четырёх или уменьшить радиус ИС которые пересекаются.
Если же у вас 3 ИС в сцене и появляется красный «Х»,то убедитесь, что у вас на сцене нет других ИС с огромным радиусом.Часто это происходит по тому, что Directional light переключён в режим Stationary, измените этот параметр на Статический или Динамический, дабы исправить проблему.
Что ещё нужно знать про Стационарные источники освещения?
Динамическое (Подвижное) Освещение
Некорректное качество теней
В данной части пособия мы рассмотрим решения, направленные на улучшение качества теней соответствующих геометрии.Это также поможет улучшить качество динамических теней.
Пример некорректного затенения геометрии.
Только! для Directional Light : Настройки Cascaded Shadow Maps:
Cascaded Shadow Maps настройки, в Directional Light Details
Dynamic Shadow Distance Movable: Расстояние от камеры, на котором тени будут исчезать.Значение 0 отключает их.
Dynamic Shadow Distance Stationary: Расстояние от камеры, на котором тени будут исчезать.По умолчанию стоит 0 для Directional Stationary Lights.
Num Dynamic Shadow Cascades: Количество каскадов на которое будет делится фрустум.Больше каскакодов- лучше качество, но и ресурсоёмкость возрастает.
Внимание! обязательно тыкните в ссылочку ниже, ибо наверняка не все знают что такое фрустум.
Количество каскадов = 0
Количество каскадов = 1
Количество каскадов = 2
Количество каскадов = 3
Количество каскадов = 4
Cascade Distribution Exponent: Параметр регулирующий, на каком расстоянии от камеры распределение ближе (выше значение) или дальше (меньше значение) от камеры.Значение 1 означает, что переход будет пропорционален разрешению экрана.
Cascade Distribution Exponent Примеры:
Распределение = 1
Распределение = 2
Распределение = 3
Распределение = 4
Cascade Transition Exponent: Параметр регулирующий затухающий регион между каскадами. Низкое значение даст жёсткие грани, высокое- мягкие.
Cascade Transition Exponent Пример:
Эффект перехода
Cascade Transition Exponent
Жёсткая грань (низкое значение)
Смешивание граней (высокое значение)
Shadow Distance Fadeout Fraction: Параметр регулирующий на каком расстоянии тени будут затухать. Высокое значение ослабляет тени, в то время как низкое значение оставляет тени тёмными.
Shadow Distance Fadeout Fraction Пример:
Затухание = 0
Затухание = 1
Far Shadow Cascade Count: Coming in 4.8. More information to follow soon.
Far Shadow Distance: Coming in 4.8. More information to follow soon.
Регулирование Cascades для лучшего качества:
Просачивание теней и их точность, можно настроить с регулированием параметров указанных выше.Данный раздел покажет как лучше настроить параметры, чтобы получить наилучший результат в момент приближённой камеры и когда она отдаляется.Нахождение баланса для каждой отдельной игры- путь проб и ошибок без которого нельзя обойтись.
Это базовая сцена с одними лишь настройками по умолчанию:
Базовая сцена дефолтные настройки:
Тут у нас уже есть некоторые проблемы с точностью теней на гранях объектов.
Проблемные зоны выделены красными рамками
Демонстрация проблемы, с близкого ракурса.
Проблемные зоны, вид поближе
Сфокусируем внимание на минимизации просветов теней, в пределах разумного. По умолчанию, дистанция динамических теней установлена в 20000 юнитов.Данное значение не всегда обязательно и может быть изменено в большую или меньшую сторону.
В этой сцене настройки распределения, дистанции теней и количество каскадов просветов и их точность — на приемлемом уровне.
Базовая сцена финальный результат
Всё динамическое освещение (панель настройки освещения):
Также имеются ещё 2 настройки которые могут улучшить точность освещения.
Местонахождение этих настроек:
Те самые 2 настройки — Shadow Bias и Filter Sharpness
Shadow Bias — контролирует точность теней в сцене, но может выдать артефакты, если значение будет слишком низким.По умолчанию стоит значение 0.5 которое даёт хороший результат между точностью и эффективность.
Shadow Filter Sharpness — помогает скрыть некоторые артефакты при низких значениях и помогает создавать более резкие тени на краях.
Принимая во внимание то, что предыдущие настройки не были применены для текущих примеров, то ниже идут 2 примера с демонстрацией этих параметров ( Shadow Bias и Shadow Filter Sharpen):
Shadow Bias
Shadow Bias = 0.5 (Дефолтное значение)
Shadow Bias = 0, установлено слишком низкое значение и поэтому появляются артефакты
Решение данной проблемы- нахождение баланса между установкой не слишком низкого значения и подбором нужного значения в Cascaded Shadows
Shadow Filter Sharpen — делает края тени более резкими при высоких значениях.
Filter Sharpen = 0
Filter Sharpen = 1
Высокое значение параметра даёт резкий край тени, низкое- плавный край тени.
Почему мой подвижный источник света светится сквозь меш на дистанции?
Динамическое освещение , в частности точечные ИС,могут создавать проблемы такого рода.Unreal Engine 4 достаточно хорошо справляется с подобной оптимизацией, поэтому вам не стоит сильно об этом волноваться.Но иногда возникает подобная проблема и метод её решения не всегда очевиден.
Результат который мы хотим.Камера в близи.
Что получается в итоге.Камера в отдалении.
Что же делать?
Чтобы понять что происходит, нужно учитывать, что движок использует глубину сцены, дабы определить, что будет видимым и что будет невидимым при рендере.Тут же мы имеем точечный источник света который испускает свет по всему радиусу до тех пор пока не встретит преграду или пока не столкнётся с границей сферы.
На картинке ниже вы можете наблюдать, как при отдалении камеры появляется halo эффект вокруг внешних граней меша из-за того, что свет не встречает преград на своём пути и исходит во всех направлениях.
Проход света сквозь меш
Вы можете заметить, что если вы на дистанции выберете/выделите такой меш, то освещение вернётся в нормальное состояние.Это объясняется тем, что вы сфокусировались в данный момент на данном меше.
Дабы сохранить меш пропускания света, вам нужно выделить меш, и перейти в details panel.Тут вам нужно найти во вкладке Rendering , параметр Bounds Scale.
Местонахождение Bounds Scale
По умолчанию значение установлено в 1.0 . Увеличивайте данный параметр на небольшие значение (1.1, 1.2 и тд.). Используя значение = 2 ,удваивает дистанцию которая может стать излишней. Нет необходимости использовать значение больше необходимого, так как это может повлиять на производительность и качество теней.
Вы можете увидеть/визуализировать границы вашего меша перейдя во вьюпорте > Show > Advanced > Bounds
Увидите нечто такое:
Визуализированные границы объекта.
Дополнительная заметка:
Если у вас есть вышеописанная проблема, но вы не хотите увеличивать размеры границ вашего меша из-за проблем с производительностью — попробуйте использовать Spotlight. Данный ИС пускает свет лишь в одном направлении, в отличии от point light который пускает свет по всем направлениям когда меш пропускает свет.Пусть это и возымеет некоторый положительный/требуемый эффект, но лишь методом проб и ошибок вы сможете добиться идеального решения.
Как вариант, мы можете попробовать использовать Стационарное освещение, а не динамическое/подвижное, это позволит вам запечь тени, что в итоге сохранит производительность ,и не потребует каждый раз обновлять информацию о тенях.
Alternatively, you could forego a fully movable/dynamic light and use a stationary light that bakes a lightmap texture, which can also save on performance by having zero overhead during runtime for rendering shadow information.
Статическое освещение
Разрешение лайтмапы /Качество теней
Каждый проект уникален и имеет собственные цели, поэтому этот раздел даст вам основные концепции и базисы для познания того, что вы хотите получить от статического освещения.
Представленные настройки ни в коем случае не будут работать всегда и для всех проектов.
Простенькая сцена с 3 статическими мешами.
В данной сцене 3 объекта : 2 стены и пол.Каждый объект имеет собственную тень, которая запечена в текстуру именуемую — лайтмапой (lightmap).Данная лайтмапа хранит в себе информацию о тенях/освещении, которые проецируются на эту текстуру.Она, как правило, создаётся художником в процессе создания ассета.
Что нужно знать про лайтмапы и как их эффективно создавать?
Другими словами, если я хочу увеличить разрешение тени отбрасываемой стеной с дверным проёмом,я буду настраивать не стену с дверным проёмом, а увеличу разрешение лайтмапы пола.Там куда проецируется тень и запекается в лайтмапу.
Теперь нам надо увеличить разрешение лайтмапы для некоторых мешей.Каждый меш имеет свою собственную лайтмапу, разрешение которой можно установить в details panel, когда наш меш выбран в mesh editor.
В данном примере рассматриваем разрешение лайпмапы пола, и только его.
Когда изменяете разрешение лайтмапы, используйте значения только кратные двум (32(по умолчанию),64,128,и т.д.) за исключением BSP представленных ниже.
Качество разрешения лайтмапы зависит от двух факторов : размер меша и размер UV шела на развёртке лайтмапы.
Разрешение = 64
Разрешение = 128
Разрешение = 256
Разрешение = 512
Разница лайтмапы BSP от статического меша в том, что значение лайтмапы BSP уменьшается в пользу лучшего качества.
Resolution = 32
Resolution = 24
Resolution = 16
Resolution = 8
Как и везде, при настройке лайтмапы есть свои ухищрения.Использование маленького меша позволит вам добиться лучшего качества для пола с низким разрешением лайтмапы, в то время как для большего меша вам понадобится увеличить разрешение лайтмапы, что в свою очередь затребует больше ресурсов.
Что такое Overlapping UV
Когда используете статическое или стационарное освещение, необходимо использовать 2 развёртки , иначе вы получите такое сообщение:
Лог после запекания освещения
В данном случае вам надо установить 2й канал развёртки для вашей лайтмапы. В противном случае редактор будет использовать имеющуюся развёртку со всеми имеющимися ошибками.
Вы можете сделать это прямо в редакторе (картинка ниже) либо же с вашем 3d редакторе.
Оригинальные UV и результаты
Перекрывающиеся UVs
Результат в редакторе
Правильные UV и результаты
Правильные UVs
Результат в редакторе
Заметьте, что финальные UV не имеют перекрытий что даёт теням/свету правильно запечся в текстуру.
Как сгенерировать UV в редакторе
Откройте меш, лайтмапу которого ваш нужно отредактировать.
Найдите панельку похожую на эту:
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 (показано на картинке):
Редактор статик мешей, выбор UV Channel
Теперь, после генерации лайтмап UV, осталось выбрать нужный id в настройках самого меша.
В редакторе меша перейдите в details panel, во вкладку “Static Mesh Settings”
В этой вкладке нужно установить разрешение лайтмапы которое нам нужно.
32 — дефолтное разрешение.для маленьких объектов оно вполне подходит, но чем больше объект, тем больше разрешение нужно указывать.
Удостоверьтесь, что значение кратно 2 (пример: 32, 64, 128, 256, и тд.)
В следующем параметре, удостоверьтесь, что индекс координат лайтмапы установлен на правильный канал.
Обычно для лайтмапы стоит значение 1.
Static Mesh Editor Details, Настройки лайтмапы
После использования данных настроек у вас есть правильное разрешение лайтмапы.
А вообще, лайтмапы лучше создавать прямо в 3d редакторе который вы используете, там вы сможете сделать идеальную развёртку для лайтмапы.Какой бы автогенерация не была, но ошибки будут всегда.
Если вы используете в своём пайплайне 3ds max или maya, посмотрите видео ниже, на них человек доступным языком объясняет как сделать отличную развёртку для лайтмапы.
Сказать автору видео «Спасибо» можете в виде like’ов и подписки на канал (там ещё много полезного видео на РУССКОМ языке (всё как вы любите)).
Как контролировать Глобальное Освещение при использовании статического освещения
Когда вы используете статическое освещение, вам необходимо забилдить освещение чтобы увидеть результаты.Лайтмасс (Lightmass) используют для генерации и компиляции текстур, которые будут хранить информацию об освещении и тенях запечённую в лайтмапы.
По умолчанию, значение лайтмасс = 3 световых отскока, дабы получить GI (глобальная иллюминация/освещение) используя статическое освещение.Если необходимо изменить данное значение, то его можно найти во вкладке World Settings.
Здесь вы можете видеть множество настроек того, как освещение будет реагировать в вашей сцене.Для GI мы сфокусируемся лишь на “Num of Indirect Lighting Bounces”. Ползунок ограничен в пределах от 1 до 4.Но вы можете установить любое значение просто вписав его туда
Lightmass World Settings по умолчанию
Global Illumination пример сцены.Одинарный источник света в 250 единиц (15w примерно)
Почему тени пятнистые или как избавится от загрязнения лайтмап?
Пятна, загрязнения, ну или как вы там это называете, не суть;данная ошибка часто возникает при использовании статического освещения в ue4.Не стоит паниковать, ведь исправить это можно через настройки лайтмасс.
Первое что приходит на ум- это то, что это связанно с непрямым освещением от отскоков GI при построении лайтмасс.
Что бы показать как это наиболее эффективно исправить, будем использовать 2 комнаты в качестве примера.
Экстерьер
Интерьер
В данной сцене будет использоваться продакшн (PRODUCTION) качество освещения.В данной сцене используются ассеты из Starter Content pack .Все меши в этой сцене используют разрешение лайтмап = 256, в других случаях об этом будет написано.Пост процессы установлены в дефолтные значения , с адаптацией глаз для того, чтобы лучше видеть тёмные места комнаты.
После постройки освещения получаются такие вот результаты:
Первоначальное освещение, дефолтные настройки
Интерьер 1й комнаты ,освещается прямым светом с одним отскоком.
интерьер 2й комнаты , освещается полностью непрямым светом
Brute force может быть использовано для удаления некоторых артефактов путём увеличения разрешения лайтмапы , но это решение не всегда верно и не всегда помогает.
Как пример, во второй интерьерной комнате, разрешение лайтмапы увеличили до 1024:
Первоначальное освещение, дефолтные настройки
интерьер 2й комнаты , разрешение лайтмапы 256
интерьер 2й комнаты , разрешение лайтмапы 1024
В этом примере множество артефактов было исправлено за счёт повышения разрешения лайтмапы, но это также увеличивает потребление памяти.Это наиболее дружественное к производительности решение для непрямого освещения.
World Settings находится тут :
Настройки Lightmass изменяются тут :
Indirect Lighting Quality: увеличивает значение Global Illumination для получения требуемого качества.
Indirect Lighting Smoothness: фактор сглаживания применяемого в Indirect Lighting.
Осторожно! используя значение более чем 1 в Indirect Lighting Quality сильно увеличивает время билдинга
Настройки по умолчанию
Пример настроек #1
Вы также можете настроить количество отскоков непрямого освещения для получения требуемого результа:
количество отскоков непрямого освещения = 4
количество отскоков непрямого освещения= 5
На данный момент настройки освещения установлены в достаточных значениях для сокрытия любых артефактов с текстурами. Но если нет возможности производить данные манипуляции, то можно просто поднять значение разрешение лайтмапы. Тут это значение изменили с 256 до 512 и получили такой вот результат.
Изменённые косвенные параметры с разрешением лайтмапы = 512.
Не изменённые косвенные параметры с разрешением лайтмапы = 1024.
В начале этого урока было показано, как с помощию разрешения лайтмапы в 1024 исправить некоторые артефакты.Но подкрутив некоторые настройки лайтмасс можно добиться лучшего результата с меньшим значением разрешения лайтмапы.
Хотя этот метод и показывает методы решения проблем с «загрязнением» лайтмап без использования света, следует помнить,что добавление в нужное место небольшого источника света, пусть и с низкой интенсивность, без теней- может дать результат получше.Методы описанные выше являются лишь отправной точкой, и лишь методом проб и ошибок вы можете добиться требуемого результата.
Хочешь узнать больше про Lightmass Basics?
Хочешь узнать больше про Lightmass Global Illumination?
Что такое “Lighting needs to be rebuilt” в левом верхнем углу?
Если вы в режиме : игра в редакторе, симуляция, standalone, в левом верхнем углу видиту надпись Lighting needs to be rebuilt, это означает, что вы должны заново запечь/простроить освещение в вашей сцене.Данное явление происходит только при статическом и стационарном освещении.Динамическое освещение не требует билдить освещение.Данное сообщение появляется в случае если источник света был передвинут или модифицирован.
Сообщение об ошибке
Сравнение качества освещения
Когда вам требуется запечь освещение в необходимом качестве, вы можете выбрать качество перейдя во вкладку Build>Lighting Quality>выбрать нужное качество.
По умолчанию качество установлено в Preview.Данный уровень качества быстрее при просчёте нежели Production, но не столь аккуратное.
Превью
Среднее
Высокое
Продакшн
В данном примере легко заметить разницу между качеством превью и продакшн. По сравнению с другими настройками, в продакшине исчезают недочёты/баги, которые имеют место быть в предыдущих качествах.Именно поэтому, если вы наблюдаете при запекании света ошибки/баги/артефакты, рекомендуется забилдить освещение на продакшине, и в том случае, если баги/ошибки не исчезли, идти в лайтмапы и проверять уже их на правильность.
На примере этой статуи заметить разницу между качествами не так уж и легко.Но разница есть.
Качество освещения
Превью
Среднее
Высокое
Продакшн
Улучшение развёртки лайтмапы — залог качественных теней.
качество освещения статуи
Contents
-
1
About This Guide
-
2
General Lighting
-
2.1
Why Are My Shadows Black?
-
2.2
Invalid Lightmap Settings When Converting BSP to Static Mesh
-
2.3
What if I don’t want to have lightmaps at all or my game doesn’t need them?
-
2.4
Two-Sided Lighting for Single Sided Meshes, or Why does my light come through the roof?
-
2.5
Why does this look nothing like it did before, or Engine Scalability and you
-
2.6
Why is there a red “X” over my light?
-
2.7
Poor Lightmap UV Layout
-
2.8
The Power of Post Process Global Illumination Settings
-
2.9
Capsule Shadows
-
-
3
Dynamic (Movable) Lighting
-
3.1
Shadow bleed or Incorrect Shadow Quality
-
3.1.1
Directional Light ONLY: Cascaded Shadow Maps Settings:
-
3.1.2
Far Shadow
-
3.1.3
Adjusting Cascades for better Quality:
-
3.1.4
All Dynamic Lights (Light Tab Settings):
-
-
3.2
Why does my Movable light shine through my mesh at far distances?
-
-
4
Static Lighting
-
4.1
Lightmap Resolution / Shadow Quality
-
4.2
Shadow Seams/Shading Differences with Indirect Lighting
-
4.3
What is this “Overlapping UV error” non-sense when I build lighting?
-
4.4
How do I generate lightmap UVs in the editor?
-
4.5
How to control Global Illumination with Static Lighting?, or The Wonderful Thing About Bounce
-
4.6
Why is there shadow splotches on my static mesh?, or How to clean those dirty lightmaps?
-
4.7
What is the “Lighting needs to be rebuilt” in the Top left corner error?
-
4.7.1
Troubleshooting Tips
-
-
4.8
Lighting Quality comparison, or Production > Preview
-
4.9
Lightmap Error Coloring
-
4.10
Find the Objects referenced in «Lighting needs to be rebuilt (X Objects)»
-
4.11
Light Build Statistics
-
4.12
Landscape Grasstype Asset Tiled Pattern
-
4.13
Build Lighting Via Command Line
-
4.14
Foliage Tool Lightmap Resolutions
-
About This Guide
Often the difference between a good game and a great game can come down to light. Even the best model rendered with poor shadow resolution and not taking advantage of the right post process settings will look poor. In the Unreal Engine, it means digging in to our robust lighting, reflection and post process settings. This Troubleshooting guide attempts to cover some of the more common problems that people come across when they first dig into the lighting and rendering systems. This guide is by no means meant to be completely comprehensive but a living document as the engine changes so too can we add and alter advice presented here. The guide is meant to be a great first step for artist trying to get the most out of the engine’s rendering system.
Common Lighting Documentation pages for reference:
-
-
Lightmass Global Illumination
-
Lighting Basics
-
Lighting the Environment
-
Lighting Content Examples
-
Lighting for Mobile Platforms
-
Rendering & Graphics
-
General Lighting
_________________________________________________________________________________________________
Why Are My Shadows Black?
In lighting terms, deep black shadows usually mean you have no fill light. This can often happen when doing outdoor environments where a single directional light is meant to represent the sun. UE4 has a built in method to provide a world effecting fill light, we refer to it as a
Sky Light
.
Want to know more about Sky Lights?
-
No Skylight
-
With Skylight
_________________________________________________________________________________________________
Invalid Lightmap Settings When Converting BSP to Static Mesh
As of 4.6 and higher the default Lightmap Resolution will be set to 4 for any converted BSPs, but you will still need to follow the steps to set the correct Lightmap Coordinate Index.
When you convert your BSP geometry to a static mesh, you will likely see the following result:
Static Mesh Converted from a BSP Box
Don’t worry, this is normal! Since we’ve now converted our BSP to a Static mesh we need to make sure the right lightmap channel is assigned. To make things easier, when you convert the BSP it will automatically generate your lightmapping UVs for you. The only thing that is not setup is automatically is making sure the right channel and resolution are assigned.
Static Mesh Editor Details Panel
- To do this, open the newly created Static Mesh. Look to the details panel on the right and locate the tab Static Mesh Settings.
- Here you’ll need to set the Lightmap Resolution. This should be any power of two increment (ie. 32, 64, 128, etc). This will be the resolution of your lightmap texture. Higher lightmap resolutions will result in better shadow quality baked into the texture, but it will also increase memory foot print and light build times.
- Next we’ll set the Lightmap Coordinate Index to 1 (This is the lightmap UV channel in most cases). This is the location of our lightmap UV that will have no overlapping faces.
- If you want to see what the lightmap UV looks like you can click the button for the UV in the toolbar and choose UV Channel 1 from the drop down to the right of the button.
_________________________________________________________________________________________________
What if I don’t want to have lightmaps at all or my game doesn’t need them?
There may be times where a game doesn’t need lightmaps at all, because it’s been opted to use only Movable (Dynamic) lighting. There is an option to disable lightmaps all together by opening the world settings and checking the option for “Force No Precomputed Lighting.” When lighting is rebuilt it will remove all lightmaps that have been previously cooked.
There are two methods to disable Static Lighting:
Project Settings, Rendering Tab, Lighting Tab
Project Specific: Disable Static Lighting
- Menu > Edit > Project Settings
- Go to the Rendering Tab > Lighting Tab
-
Uncheck the option for
Allow Static Lighting
-
To enable this option fully you will need to
Restart the Editor
Level Specific: Disable Static Lighting
World Settings
1. Open World Settings
Lightmass Settings
2. Go to the Lightmass Tab
3. Uncheck
Force No Precomputed Lighting
Force No Precomputed Warning
4. You will get a warning. Click OK.
5. Build Lighting to wipe lighting data already stored.
_________________________________________________________________________________________________
Two-Sided Lighting for Single Sided Meshes, or Why does my light come through the roof?
Created Assets in 3DS Max
In this image, you’ll see I’ve made myself an awesome wall and a tube that when I turn on its side can be a creepy tunnel for me to walk through!
Created Assets in UE4
All seems well and good and I can see that I’ve got my awesome work and I can see both sides of my mesh in my modeling program of choice. However, when it’s imported into Unreal Engine 4 it’s messed up!
So, what gives, because this surely cannot be right?!
This is actually 100% normal (pun intended). Even though the plane looks good the back face is not being rendered just like the closest faces of our tube mesh.
Wireframe of Created Assets in UE4
When you create your geometry in your modeling program by default the software has set it so that you can see both sides of your geometry.
In UE4 the back face of a polygon is automatically culled to save on performance because every little bit helps! It’s not always necessary to have extra polygons or render sides that may not be needed, otherwise, there would be extra draw calls that could slow down your performance. with a few instances, this probably wouldn’t matter much, but when you’re developing for specific platforms or have a lot going on every draw call starts to matter.
To also understand why we can only see one side we can open our mesh in the static mesh editor and tick the toolbar option for “Normals.” You will see Green lines that point in the direction the face of the polygon is directed. In the image below for our tube asset, we can see that the faces where it’s invisible have the lines going towards the center of the mesh. This is the direction that the visible face can be seen.
Static Mesh Editor
Pro Tip:
While in UE4 if you have any meshes that have what appears to be invisible geometry or missing faces you can check the normals here before fixing the issue in your modeling software.
Now that we have all the boring stuff out of the way we can get right to fixing our invisible faces with some checkboxes and Materials.
1.
(STATIC ONLY)Light as if Two-Sided
-
-
- Enabled this option via the details panel for the selected asset in the Level Viewport.
- With this option selected when lights are built lightmass will calculate that geometry into its bake. It will cast a shadow, even though we cannot see it from this angle, to bake into the lightmap texture. This will not work with a movable/dynamic light though since Unreal Engine 4 uses a deferred rendering pipeline.
-
-
Asset’s Details Panel in Level Viewport
-
Final Results
2.
Creating a Two-Sided Material
-
-
- Open the material editor and in the details panel on the left select the option for “Two-sided”.
- Save and compile your material for this to take effect.
- This method can be used with Static/Stationary/Movable lighting. Since the material is now being rendered the faces of that were not visible before are no longer being culled and can block the light. Be aware though that this now renders both sides of the mesh adding to your draw calls. As mentioned earlier this won’t necessarily affect performance in smaller scenes or setups, but if you’re targeting hardware where every bit of performance counts this can affect that.
-
-
Material Attributes Details Panel
-
Final Results
_________________________________________________________________________________________________
Why does this look nothing like it did before, or Engine Scalability and you
Engine Scalability Settings
The Engine Scalability settings can be accessed via the Settings > Engine Scalability option in the Toolbar.
The purpose of this is to scale the engine rendering settings to fit machines that may have a more difficult time running smoothly. By default, the editor will lower settings here if the FPS drops too low.
There is an option for “Shadows” that will directly affect the shadowing distance of any movable (dynamic) shadows. This is true when the list is set to “Movable” or when lighting has not been built for the static lights yet, since those are using dynamic shadows as temporary indication until your lights are built and baked into lightmaps.
The images below will demonstrate the shadow distance of each Shadow setting in the Engine Scalability tab.
-
Epic
-
High
-
Medium
-
Low
If there are no shadows in your level this is the best place to check first. Even if your system is top of the line these settings can still be automatically set to a lower setting and stay there if the FPS drops too low. It’s a good place to always check before looking at other issues that may be a factor.
If there is a need to not have the auto-scaling on it can be disabled by unchecking the option at the bottom of the Engine Scalability settings window. Do realize that this can cause performance issues as the editor will no longer monitor when there is a need to adjust this to a lower settings to help keep performance up.
Want to know more about Engine Scalability?
_________________________________________________________________________________________________
Why is there a red “X” over my light?
Overlapping Stationary Lights
Stationary lights are limited to a maximum of 4 shadow casting lights being overlapped. When the 5th is added there will be a red ‘X’ indicating that the light in this area of overlapping with the smallest radius will revert to a dynamic light. This can cause performance issue because dynamic lighting that casts shadows is more expensive to use then baked lighting.
If lighting is built with any stationary lights that are overlapping offenders there will be a warning detailing which light is the offender and the ramifications.
To correct this make sure that there are no more than 4 shadow casting overlapping Stationary lights in a single area. This may require the removal of a light, disabling the Cast Shadows flag or adjusting the radius so that it’s no longer overlapping.
If there are only three placed stationary lights and there is a red X over the 4th light make sure that you have no other stationary lights in your level that would be overlapping. Often times this would be the Directional light set to Stationary that is causing this issue.
Want to know more about Stationary Lights?
_________________________________________________________________________________________________
Poor Lightmap UV Layout
The key to getting a good lightmap bake is by having a proper setup for your light map so that it effectively uses the 0-1 UV space. When you go outside of this space or have faces that overlap each other you will see the dreaded “Lightmap Overlapping by xx%” in your Map Check warnings!
The documentation that we have on properly setting up a lightmap is a good place to start reading. Read all about Lightmapping in UE4 here.
-
https://docs.unrealengine.com/latest/INT/Engine/Content/Types/StaticMeshes/LightmapUnwrapping/
Here are some key things to remember when setting up your lightmap:
- No Overlapping faces
- No faces outside of the 0,1 UV space
- Flat-Mapping is not the best approach and often will lead to many errors with your lightmap
- Use as much of the 0,1 UV space so that there is no wasted texture space.
- If you have a large and potentially complex mesh it is best to break it up into parts for a good lightmap resolution and for other performance reasons like Occlusion Culling.
- Use as low a lightmap resolution as you can to save runtime texture memory.
- Make sure that your UV islands have at least a 2 pixel spacing between them to prevent light bleed. Account for this based on the target resolution of your lightmap.
_________________________________________________________________________________________________
The Power of Post Process Global Illumination Settings
The Post Process Volume can be a very powerful tool in your scene when it comes to lighting, especially statically lit areas. You can easily control this by adjusting these settings in your Post Process Settings.
GI Post Process Settings
In this simple example below this is all controlled with an emissive material for the rod, a dim point light for the room, and two post process volumes that overlap! This is a very cheap way to fake some dynamic GI with your post process!
Setup:
- Very dim Point light for some soft ambient light in the room.
- Moving Rod has a simple emissive material applied with a multiplier to control how bright it is.
- There is one Post Process Volume surrounding the scene that is using default settings, which isn’t needed really unless you plan to have other settings changed for your basic scene.
- Second Post Process Volume that is attached to the Rod as it moves into and out of view. It is slightly larger than the Rod in length so that there is some overlap. There have been three settings tweaked in this to make it work smoothly.
- The Indirect Lighting Color has been set to a lighter but similar color to that of Rod emissive color.
- The Indirect Lighting Intensity has been adjusted to make the room feel like it’s having this emissive light cast onto it.
- The Post Process Volume’s Blend Radius was used to blend the two volumes for a smooth effect of the light bleeding into the room.
Example Scene (Click the image if the gif is not loading)
This was all controlled with a Post Process Volume and static lighting! Being able ot control the bake GI can offer much more control over your scene if you need to make some stylistic choices and can help save from having to rely solely on light builds to look 100% accurate.
_________________________________________________________________________________________________
Capsule Shadows
Capsule Shadows are a new feature for 4.11 and higher that allows skeletal meshes to blend in better in indirectly lit and directly lit areas with soft shadowing.
The tutorial on this page can help you get started if you’ve not used them.
http://timhobsonue4.snappages.com/lighting-capsule-shadows
_________________________________________________________________________________________________
Dynamic (Movable) Lighting
_________________________________________________________________________________________________
Shadow bleed or Incorrect Shadow Quality
In this guide, we’ll look at areas that will help improve the quality so that the shadows more accurately fit the meshes. This will also help in offering tips to improve dynamic lighting at a distance.
-
Example of Shadow Bleed, or Incorrect Shadow Quality
Directional Light ONLY: Cascaded Shadow Maps Settings:
-
Cascaded Shadow Maps Settings, in Directional Light Details
Dynamic Shadow Distance Movable
: This is the distance from the camera that shadows will cover. A value of 0 disables this.
Dynamic Shadow Distance Stationary
: This is the distance from the camera that shadows will cover. This is set to 0 by default for Directional Stationary Lights
Num Dynamic Shadow Cascades
: This is the number of cascades the view frustum will be split into. More cascades will result in better shadow resolution, but will add significant rendering cost. To read more on view frustums take a look at this article:
http://en.wikipedia.org/wiki/Viewing_frustum
- Num Dynamic Shadow Cascades (In these examples Shadow Bias, covered later, has been set to 0 to more visibly see the cascades.)
-
Cascade Number = 0
-
Cascade Number = 1
-
Cascade Number = 2
-
Cascade Number = 3 (Default)
-
Cascade Number = 4
Cascade Distribution Exponent
: This controls whether the cascades are distributed closer (higher value) or further away (lower value) from the camera. A value of 1 means the transition will happen proportional to their resolution.
- Cascade Distribution Exponent
-
Distribution = 1
-
Distribution = 2
-
Distribution = 3
-
Distribution = 4
Cascade Transition Exponent
: This controls the proportion of the fade region between cascades. Lower values will give a hard edge between the shadow cascades whereas higher values will blend between the two.
- Cascade Transition Exponent
-
Transition Effect
- Cascade Transition Exponent
-
Hard Edge (Lower Value)
-
Blended Edge (Higher Value)
Shadow Distance Fadeout Fraction
: This controls the how the shadows fade out at distances. Higher values will fade the shadow out whereas lower values will leave a darker shadow at distances.
- Shadow Distance Fadeout Fraction
-
Fadeout = 0
-
Fadeout = 1
Far Shadow
The option to set the Far Shadow for a static mesh or Landscape gives the added benefits of being able to have cascaded shadow maps work for very far distances, instead of the limited range closest to the camera.
Enable Far Shadow
This is controlled by enabling the Far Shadow Cascades in the Directional Light settings under Cascaded Shadow Maps.
Far Shadow Settings
You can set the number of Far Shadow Cascades to be used along with the distance that Actors with the Far Shadow flag enabled on should consider shadowing. For this default setting it’s using 300 meters as the start distance. This value should also be a higher distance than the Cascaded Shadow Map Distance closest to the camera.
Also, keep in mind that this is best used for large objects in the distance and is not recommended to be used on every mesh you have. This can have significant performance implications and is why you have to opt in on each static mesh you want to use Far Shadows
Far Shadow Demonstration(Click the image if the gif is not loading)
In this setup, the Dynamic Shadow Distance of the Directional Light has been set to 5000 units and the far shadow distance is set to 50000 units with 4 far shadow cascades.
The static mesh on the left is not using the Far shadow and the one on the right has far shadow enabled.
Adjusting Cascades for better Quality:
Shadow bleed and accuracy can be finely tuned by adjusting a combination of the settings demonstrated above. This next section will attempt to adjust the values that work best to get better accuracy with the shadows while in close proximity and as the camera moves away. Finding a balance that works with any particular game will require time, effort, and lots of testing with what works and what does not.
Basic Scene, Default Settings
Here is the basic scene with only default settings:
Highlighted Problem Areas
There are already a few problems that are prevalent in this scene with shadows accuracy around edges.
Highlighted Problem Areas, close-up
More clearly demonstrated here.
Default Scene, Final Results
By focusing on the most of the effort around the
Cascade Distribution Exponent
the shadow bleed can be minimized, within reason of course. The default distance for Dynamic shadows is set to 20,000 units. This isn’t always necessary to which this can be set to a lower value to better utilize the cascades.
If the game level is to use indoor and outdoor scenes finding a combination that fits all or most areas will be difficult and require lots of tweaking. There is no one setting that will make everything look perfect.
In this scene by adjusting the settings for the Distribution, the Shadows Distance, and Number of Cascades the bleed and accuracy are acceptable.
All Dynamic Lights (Light Tab Settings):
Lastly, there are two other settings under the light tab in our light source that can benefit lighting accuracy as well.
These settings can be found here:
-
Lighting Details, Shadow Bias and Filter Sharpness
Shadow Bias
will control how accurate shadows are in the scene, but will generate artifacts if set to a value that is too low. The default value is 0.5 which is a good tradeoff between how accurate and effective it is.
Shadow Filter Sharpness
can help mask some of the artifacts that occur with lower values and this directly contribute to how sharp the edges of the shadows are as well.
Taking into account that none of the previous settings have been adjusted for these images these are some examples to demonstrate
Shadow Bias
and
Shadow Filter Sharpen
.
- Shadow Bias
-
Shadow Bias = 0.5 (Default)
-
Shadow Bias = 0, adjusted too low will result in artifacts
The key here is to find a good balance without going too low and using the setting under the tab for Cascaded Shadows.
- Shadow Filter Sharpen, will sharpen the edge of the shadow with higher values
-
Filter Sharpen = 0
-
Filter Sharpen = 1
Most notably the higher the value for the sharpen filter the shaper your shadows. The soft edge created by the lower values will now be lost.
_________________________________________________________________________________________________
Why does my Movable light shine through my mesh at far distances?
Dynamic lights, especially point lights, cause this kind of issue to crop up. Unreal Engine 4 does a good job of trying to optimize things so that you don’t have to worry about it so much. The problem is sometimes it gets carried away and can cause things like this to happen that may not be obvious how to fix.
-
This is what we want, Close to Camera
-
At a Distance from Camera
So, what gives?!
To explain this we need to discuss that awesome optimizing the engine does for you. The engine uses scene depth to determine what should be visible and what shouldn’t be visible for rendering. Since we have a point light here that shoots light throughout it’s set radius when the mesh is beyond its bounds it will be occluded or no longer rendered. This causes the issue that we’re seeing with our light starting to cast in all directions.
You can see from this image that as the camera is further away the occlusion of parts of the mesh start to halo around the outer edge until the light is free to cast in all directions.
-
Mesh Light Occlusion
You may notice that if you select the mesh when far away that the light returns to normal. This is expected as you have just selected the mesh and it is now focused.
Object Bounds, Details Panel, Rendering Tab
To keep the mesh from being occluded you’ll need to select the mesh and go to the details panel. Here you can search or scroll for the “Bounds Scale” (Located under the Tab for Rendering.)
The default value is set to 1.0. When increasing this scale be sure to only use incremental small numbers. Using a value of 2.0 doubles what the distance was set to which can be overkill. Try increasing by smaller incremental values. (ie. 1.1, 1.2) There is no need in pushing to have more than you need as this can impact performance and shadow quality.
You can visualize your meshes bounds by going to the viewport > Show > Advanced > Bounds
You will see something like this:
Object Bounds Visualized
Additional notes:
If you’re having issues with your mesh occluding, but don’t want to increase the bounds scale due to performance concerns you can try using a Spotlight. Since this only casts light in a single direction you won’t notice the light of a point light casting in all directions when the mesh is occluded. This works well for situations similar to what has been demonstrated, but testing may need to be done on your part to get things just right.
Alternatively, you could forego a fully movable/dynamic light and use a stationary light that bakes a lightmap texture, which can also save on performance by having zero overhead during runtime for rendering shadow information.
_________________________________________________________________________________________________
Static Lighting
Lightmap Resolution / Shadow Quality
Every project has its own unique art direction and goals, so this section is meant to present common concepts and give you a foundation to begin achieving what you want from your static lighting. By no means will the settings we present here work all the time for every project.
-
A Sample Scene with 3 Static Meshes
There are 3 objects in this scene; two walls and a floor mesh. Each object has is own shadows that are baked into a texture known as a lightmap. This lightmap stores any shadow/light information that is being cast on to it in this texture. It is normally handled by an artist in the asset creation.
‘
Want to know more about lightmaps and how to create them effectively?
In other words, If I wanted to increase the resolution of the shadow cast by the wall with the doorway, I would not adjust the doorway, but instead would adjust the floor’s lightmap resolution. This is where the shadow is being cast and baked into a lightmap.
Now with that out of the way, we may need to increase lightmap resolution for some meshes and not others. Each mesh has it’s own lightmap Resolution that can be set via the details panel when the mesh is selected or via the mesh editor.
For this lightmap quality demonstration we’ll look at the floor meshes lightmap resolution only.
When adjusting LM resolution make sure it is using a power of two (32 [default in engine], 64, 128, etc) with exception of BSPs (Covered below)
A lot of the quality in this lightmap resolution will depend on two factors: Size of the mesh and the size of the UV shells in the lightmap UV.
- Lightmap Resolutions for Static Meshes
-
Resolution = 64
-
Resolution = 128
-
Resolution = 256
-
Resolution = 512
The key to difference to note about using lightmaps on BSPs versus Static Meshes is that it doesn’t increase, but instead decreases to get better resolution.
- Lightmap Resolutions for BSPs
-
Resolution = 32
-
Resolution = 24
-
Resolution = 16
-
Resolution = 8
While adjusting the lightmap resolution to get better results there are trade offs here. Using a smaller mesh will allow you to get better results for the floor with a lower lightmap resolution, while using this larger mesh you will need to increase the lightmap resolution and the texture will use more resources for your games.
- Lightmap Resolutions for Landscapes
-
Resolution = 1.0
-
Resolution = 2.0
Much like the difference between BSP and Static Meshes for setting the static lighting resolution Landscapes are a slight bit different as well. Landscape Lightmap Resolution uses a multiplier that can be used to give better resolution for the baked shadows. Larger Landscapes may require a higher resolution value, where as smaller landscapes will not.
In the Details panel you have the option to increase the
Static Lighting Resolution
, which is set by default to 1. When you adjust this you only need to incrementally increase by a whole number until you are at the desired resolution you would like.
_________________________________________________________________________________________________
Shadow Seams/Shading Differences with Indirect Lighting
Often when you build lighting for your project and in indirectly lit areas you may notice that there is sometimes a shading difference between modular planar surfaces, typically walls, floors, and ceilings. This is an unfortunate side-effect of how static indirect lighting is handled at the moment and doesn’t have an easy way to fix. This can hopefully be made better in the future.
Here’s the breakdown of the issue, if you’re not familiar.
- Light hits a surface and then that light is bounced on the surrounding surfaces. This type of bounce light is referred to as Indirect Lighting. Some surfaces will be directly lit as well while still receiving some bounce, like the Wall that is partly lit fully and has some indirect lighting with the shading issue in the shadowed corner.
Light Bounce Example
- If the surfaces receiving the indirect lighting are flat planar surfaces they generated this disparity in shading between them like this:
Indirect Lighting Artifact
What’s happening here is that each of these static meshes are sent to the CPU to be processed in the order they are received and on different CPU threads. This simply means that while each one has their lighting built by lightmass the others don’t know what the shading for the one before it would look like to reference the edges to make sure they match up. This leads to slight shading differences between each planar surface.
So, by now, you’re wondering “What can I do about this?!”, right?
In the World Settings under the section for Lightmass you can adjust some of the settings here to get better results.
- Indirect Lighting Quality can be set to 2 or higher.
- Indirect Lighting Smoothness can be set to usually a range of .65-.75. The lower the value here is though the more artifacts you can run into that make the lightmap look like it has blotchiness to it.
- (Recommended only for Advanced Users!!) Static Lighting Level Scale can be adjusted to a lower value to get better blending as well. But this changes the scale of how lighting is calculated for the entire level. This will increase build times significantly if the value is lowered but will give you better results. This is commonly used by those within the Architectural Visualization field and not by those developing games unless they have a specific reason and understand the choice.
When you adjust the quality of indirect lighting it’s always a good idea to lower the lighting smoothness to get better results. This helps blend better between these surfaces, but it doesn’t necessarily help remove the issue completely and can have other side-effects as well. You should really test it in project or a test map to fully understand what you’re adjusting here and why.
There is also some steps you can take to reduce how noticeable this artifact is and steps you can take with the design of your project.
- Try not to over-modularize your levels! This is important. You may think that making a moderately sized wall into nice smaller concise pieces that you can pack together like Lego’s is the best thing ever, but you run the risk of this shading difference happening, and you now have many more actors that add to draw calls and checks for the visibility states of these. It’s best to have have a single wall when it makes sense rather than many small pieces. You get reduced draw calls and less issues that can occur with lighting.
- You can simply use other geometry to better hide these pieces where there would be seams, like columns or adjoining walls, or wall molding.
_________________________________________________________________________________________________
What is this “Overlapping UV error” non-sense when I build lighting?
When using static or stationary lighting it is imperative to use two UVs for your meshes otherwise you will get the following warning when you build lighting:
-
Message Log, Lighting Results
This means that you’ll need to setup a second UV channel for your lightmap otherwise the editor will use the existing texture UV as the lightmap which can lead to these kinds of errors.
This can be fixed by adjusting the UV for the lightmap so that there are no overlapping faces.
This can be done
in the editor
via generating lightmaps or by using your modeling software of choice to create and edit your UVs.
- Original UVs and Results
-
Overlapping UVs
-
Results in Editor
- Corrected UVs and Results
-
Corrected UVs
-
Results in Editor
Take notice that the UV in the final result has no overlapping faces which allows shadow/light information to bake correctly for the texture that will be applied to our mesh after the light build.
With the overlapping faces these will give incorrect shading due to lighting information not being baked correctly.
_________________________________________________________________________________________________
How do I generate lightmap UVs in the editor?
With the release of 4.5 the editor will automatically generate UVs on import or by using the mesh editor.
We will assume you’re wanting to set them up from the mesh editor.
- Open the mesh you’d like to create a lightmap with.
- Locate the panel on the right that looks like this:
-
Static Mesh Editor Details Panel
This panel will allow you to create your lightmap channel, but do note that this does not directly control your lightmap resolution or it’s coordinate index assignment. These will be covered a little later.
The settings here in the “Build Settings” tab that we will focus on are:
Generate Lightmap UVs
= make sure this is checked.
Min Lightmap Resolution
= This is the smallest size you would want your lightmap resolution to be.
Source Lightmap Index
= This is the source which we will generate our lightmap UVs from.
Destination Lightmap Index
= This is the location we will store this UV when it is created.
For most assets this should be a good setup. The key here is making sure that we select the proper source lightmap index. This is the UV that is typically used for the textures. The UV shells/islands in this UV will be repacked so that there are no overlapping faces, which is integral to using lightmaps.
For the lightmap resolution setting a low value to begin with is not bad because we are not obligated to using that resolution. If you decide to use a higher resolution you do not need to come back to these settings unless you know it could improve the lightmap bake. In most cases it’s not necessary.
Once you’ve hit “Apply Changes” we can verify our lightmap has been created and see if there appears to be any errors.
You can do this by going to the mesh editor toolbar and clicking the UV icon to show the UV and using the drop down to the right to select UV channel 1 to view our newly created lightmap.
It should look something like this:
-
Static Mesh Editor, UV Channel Selection
That’s not quite it though. We still need to assign the correct UV channel to be used for our Lightmap.
In the mesh editor in the details panel on the right locate the tab labeled “Static Mesh Settings”
Static Mesh Editor Details, Lightmap Settings
- In this tab we’ll need to adjust the lightmap resolution for what we’d like here.
32 is the default lightmap resolution. For smaller objects this would work well. For larger objects we would possibly need to use higher resolutions.
Make sure to adjust it by a power of 2. (ie. 32, 64, 128, 256, etc)
- The next setting we’ll need to verify is that the Lightmap Coordinate Index is now pointing to the right channel. Make sure this is set to the channel that you set in the build settings above. Typically this should be set to 1.
After using these settings you will now have a proper lightmap resolution.
There are some caveats to this though that may require the use of a modeling program like Blender, 3Ds Max, or Maya to fully correct the issue.
The generated lightmaps will not split or cut seams in the existing UVs from UV channel 1 used for the texture. It will only repack the existing UV layout to better fit the needs of a lightmap UV.
As an example, think of a cylinder. If you wanted to lay these faces all out flat you would need to cut a line in the side of the cylinder to do so. In a modeling program this isn’t always necessary depending on how you’ve set up the texture UV to be used. If this side face was not cut to be laid out flat the generated UVs via the mesh editor will not work and will still result in overlapping UVs warning being generated after a light build.
_________________________________________________________________________________________________
How to control Global Illumination with Static Lighting?, or The Wonderful Thing About Bounce
When using static lighting you will need to build lighting to see the results. Lightmass is used to compile and generate textures that will store this light and shadow information for our scene by baking this information into a lightmap texture.
By default lightmass is set to use 3 light bounces to get GI with static lighting. If more is needed we will need to directly change the lightmass settings to get different results via our World Settings tab. We can affect our Global Illumination directly by changing the number of bounces that the light will cast.
To enable World Settings tab you’ll need to go to the Toolbar and select Settings > World Settings
-
World Settings
Default Lightmass World Settings
Click on the World Settings tab next to the Detail Panel tab on the right side.
Here you’ll see a lot of settings that can affect how our light is handled with lightmass that will directly affect our scene. For GI we’re only going to focus on the second option down “Num of Indirect Lighting Bounces.” The slider is clamped to be a value between 1 and 4. You can override this by manually typing in a value though.
The default settings are shown to the right.
- Global Illumination Sample Scene, Single Point Light at 250 (≈ 15W Light Bulb)
-
Scene Setup
-
0 Bounces
-
1 Bounce
-
2 Bounces
-
3 Bounces
-
4 Bounces
-
100 Bounces
_________________________________________________________________________________________________
Why is there shadow splotches on my static mesh?, or How to clean those dirty lightmaps?
Show stains, splotches, dirtiness, or whatever name you have for it is a common issue with UE4 when using any type of static lighting. Fear not though because we can get rid of those dirty lightmaps with a little scrubbing through our lightmass settings.
First though, the reason you see something like this is related to the indirect light from our GI bounces that happen with our lightmass build.
To replicate this in a mostly effective way this simple scene will have two rooms.
- Sample Scene
-
Exterior
-
Interior
This scene will be using PRODUCTION quality for our light builds. This scene is using assets from the Starter Content pack that can be added to any newly created project. All meshes in the scene will use a lightmap resolution of 256 unless otherwise noted. The post process effects are set to default with eye adaptation to make the darker room easier to see.
After building our lighting, here are the results:
- Initial Lighting Build, default settings
-
1st Interior Room, lit with direct and 1st bounce lighting
-
2nd Interior Room, lit entirely with indirect lighting
Brute force can be used to remove some of the indirect lighting artifacts by increasing the lightmap resolution which effectively increases the size of the textures used to store the lighting and shadowing information, but that’s not always the best idea when a high-quality result can be achieved using a lower resolution and adjusting the lightmass settings. When dealing with any rendering application in the engine and especially lighting just increasing a texture size, though it may appear to solve the issue is not always the most performance friendly way to handle an issue and may even result in more problems further along in your development process.
As any example this is the same 2nd Interior Room with lightmap resolution changed to be 1024:
- Initial Lighting Build, default settings
-
2nd Interior Room, Lightmap Resolution 256
-
2nd Interior Room, Lightmap Resolution 1024
In this example, a lot of the artifacts have been reduced by using the higher lightmap resolution, but this also increases the texture memory footprint by a factor of 4. There is a more performance friendly solution to these Indirect Lighting Artifacts with some simple adjustments to the World Settings.
World Settings
- You can locate World Settings here:
World Settings
- Here the settings for Lightmass can be adjusted:
Indirect Lighting Quality
: This will increase the Global Illumination solver counts to get a higher quality for levels that need it.
Indirect Lighting Smoothness
: This is the smoothness factor to apply to Indirect Lighting.
WARNING: Using a Value greater than 1 in the Indirect Lighting Quality will GREATLY increase build times.
-
Default Settings
-
Settings Example #1
As mentioned in How to control Global Illumination with Static Lighting?, or The Wonderful Thing About Bounce, you may also want to adjust the number of indirect light bounces which will yield the following results:
-
Num Indirect Lighting Bounces = 4
-
Num Indirect Lighting Bounces = 5
At this point, the lighting settings have been adjusted enough that there may be room to hide any artifacts with some textures, but if that’s not the option there is the option to bump the lightmap resolution for each mesh up to a higher value. The value used here is 256 for the lightmap resolution. By changing it to be 512 we get the following result:
-
Adjust Indirect Settings with 512 Lightmap Resolution
-
No Adjustment to Indirect Settings with 1024 Lightmap Resolution
In the beginning of this tutorial, there was a comparison shown using Lightmaps of 1024 that helped get rid of the artifacts. By adjusting a few lightmass settings the artifacts have been reduced and the assets are using a lower texture resolution with better results.
While this method is fully exploring the option of not having any light in this room and looking at ways to reduce the “dirtiness” artifacts that can be caused by Indirect Lighting it must be noted that using lighting can in these areas, even a very low-intensity non-shadow casting light, can get results as well. The methods listed above are a starting point and may require a little trial and error to get the results that are more appealing.
Want to know more about Lightmass Basics?
Want to know more about Lightmass Global Illumination?
_________________________________________________________________________________________________
What is the “Lighting needs to be rebuilt” in the Top left corner error?
Error Message
If this is appearing in your top left part of your viewport window when using PIE (Play in Editor), Simulate, or Standalone game this simply means that lighting needs to be rebuilt for your scene. This will only affect Static and Stationary lighting. Dynamically lit scenes do not need to have lighting built.
This warning is caused when lighting has been invalidated by moving or modifying a light Actor. This can cause problems because the rendered lighting in the level is not accurately representing the current state of lights in the level. This error can be solved by going to the Build menu and rebuilding lighting for a map.
Troubleshooting Tips
Unbuilt Actors List
Sometimes may find that you have built the lighting but continue to see this warning popping up with a number of unbuilt objects but no direct way to identify which ones.
You can open up the
Output Log
window from the from the Developer Tools menu. Enter in the command
DumpUnbuiltLightInteractions
to be given a list of any Actors that are not having their light built or either have had their lighting invalidated.
This list of Actors can be really helpful to determine what is going on. It could be as simple as having a Blueprint that is set to static but has a movable component or you have an Actor that is placed via the construction script but then moved after lighting has been built.
Statistics Window
Open the
Statistics
window by going to Window > Statistics. This can be a helpful tool for determining information about your lighting build and information about all your static meshes in your scene that have their lightmap resolutions set. It’s a good tool for troubleshooting exactly how long specific actors took to build during the lighting building process. This can easily help identify the offenders for a long light build time if something is being slow.
_________________________________________________________________________________________________
Lighting Quality comparison, or Production > Preview
When lighting needs to be built for a level the quality of the light build for lightmaps can be set in the toolbar by going to the options for Build > Lighting Quality > and selecting a quality level.
By default the Quality is set to
Preview
. This setting has the fastest computation time whereas
Production
will have the slowest computational time, but be much more accurate.
The Lighting Quality settings can be found here:
-
Lighting Quality Settings
For this demonstration there will be an enclosed room to show the quality of the shadows being built: (This will be the same scene setup used for
#Why is there shadow splotches on my static mesh?, or How to clean those dirty lightmaps?
- Light Quality Settings, Architectural
-
Preview
-
Medium
-
High
-
Production
In this example it’s easy to see the difference between the default Preview setting and Production setting. With Production almost all of the light leaking that was prevalent in the previous quality settings is gone. This is a good way to troubleshoot your lighting issues if there is light leaking. If Production doesn’t get rid of the light leaking then it’s time to have a look at how the lightmap UVs are set up or possibly the placement of the meshes in your level.
With the Statue static mesh in this scene it’s not as easily noticeable that the shadow quality has been adjusted. There is slight differences in quality, but not enough to tell with the particular object.
- Light Quality Settings, Organic Lines
-
Preview
-
Medium
-
High
-
Production
Statue Lighting Quality
In this animated Gif the quality differences are minuscule from this perspective. This behavior is expected for more organic shapes. The human eye notices non-organic straight lines (like Architectural right angles) before curved or more organic shapes given the same color and brightness. As a note, the jaggedness of the shadows on the ground plane are the result of having a lower lightmap resolution for a larger mesh. Increasing the lightmap resolution will improve the quality of the shadow definition.
_________________________________________________________________________________________________
Lightmap Error Coloring
This option can be enabled via the Build Menu drop-down when you select Use Error Coloring and are using Lighting Quality settings for Preview or Medium.
Error Coloring Option
When lightmass encounters an error it will color the type of error so that it’s easily identifiable. Below are the color types that will be reflected for the type of issue you have.
- Orange: This is caused by non-unique or overlapping UVs.
- Green: This is caused by having wrapping UVs or UVs that are outside of the 0,1 UV space.
- Yellow: These are unmapped texels that either have zero lightmap area or in the case of BSPs may be too low of a lightmap resolution.
You can see more information in the UE3 documentation that still applies:
https://udn.epicgames.com/Three/LightmassTools.html#Lightmap
error colors
_________________________________________________________________________________________________
Find the Objects referenced in «Lighting needs to be rebuilt (X Objects)»
Sometimes you may have an issue where lighting is continually being invalidated or you may have tweaked something in your level and not realized it leaving you with this dreaded “Lighting needs to be rebuilt ([number] objects)” but no easily identifiable way to see what the “[number] objects” are.
Luckily we have an easy way for you to get this information to help you better track, investigate, and resolve your issue(s) with lighting being invalidated.
- Start by opening the Output Log window by going to Window > Developer Tools > Output Log.
-
Bring up the Console by using the ` (tilde) key and enter in the command
DumpUnbuiltLightInteractions
So why is this really useful?
- You can quickly identify the Actors that are causing the warning to appear.
- You may have an Actor that is static that is being built and then moved by using code or Blueprints that causes the warning to appear.
- Instanced meshes with lots of instances and high lightmap resolutions may not build properly because the clustered instances lightmap doesn’t get generated. This can identify that need to lower the lightmap resolution.
- In some instances using a Construction Script to generate mesh placement via Blueprint will have become invalidated when moving the mesh if the lighting was previously built. This command can quickly identify this as well.
_________________________________________________________________________________________________
Light Build Statistics
The Statistics window available in the editor is a good way to check the statistics for your level once the light build has completed. This window can give good stats to help narrow down what actors were taking the longest for the scene and how much time was spent calculating the lighting for this actor and it’s lightmap resolution.
Statistics Window
This window was taken from a light build of Sun Temple that is available in the Epic Games Launcher via the Learn tab.
All of the information contained within the Lighting Build Info and Static Mesh Lighting Info can be helpful to help you optimize, investigate, and troubleshoot your lighting builds.
This information can also be found in the documentation here:
https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/Lightmass/#gettingthebestlightingbuildtimes
_________________________________________________________________________________________________
Landscape Grasstype Asset Tiled Pattern
There is a little known feature hidden within the Landscape Grasstype asset that you may or may not be aware of. This allows you to use the landscape’s lightmap to get a better blend for the procedural landscape grass material by referencing its indirect lighting cache samples.
You can enable it by setting the checkbox for Use Landscape Lightmap.
Landscape Grasstype Settings
This feature was originally developed with the intent for dynamically lit environments, but when using stationary or statically lit environments you’ll see the pattern of that is generated from the tiled components of the landscape’s indirect lighting, which can be rather distracting.
- Landscape Grasstype Use Landscape Lightmap
-
Disabled
-
Enabled
Once you enable or disable the option for Use Landscape Lightmap the material will be regenerated without the need to rebuild lighting, so long as it has already been built.
_________________________________________________________________________________________________
Build Lighting Via Command Line
If you have a need to build lighting via command line this has been added as of 4.10.2.
In order to build lighting by command line use the following structure to set it up as a basis:
- UE4-Editor.exe [Project Folder Path] -run=resavepackages -buildlighting -MapsOnly -ProjectOnly -AllowCommandletRendering -Map=[Name of map] -Messaging
The -Map=[Map Name] can be dropped if you want it to build all the maps/levels available in the project.
You can find some additional details in the commit here via GitHub:
https://github.com/EpicGames/UnrealEngine/commit/f89256dd0efb7d0b1427729a8f8a6007
If you see a 404 error page, you’ll need to make sure that you have an account with GitHub and that your Epic account is linked with GitHub’s.
_________________________________________________________________________________________________
Foliage Tool Lightmap Resolutions
When using the foliage tool you have a few different settings available to you in the tools panel for the selected actor. One important one is the option to override the Lightmap Resolution of the mesh.
Foliage Lightmap Settings
By default this option is disabled, which means that the static meshes own lightmap resolution will be used.
You may be thinking “why is this a bad thing? Don’t I want to have a good lightmap resolution for nice baked shadows?”, but the problem here is that when you use the Foliage tool these are not individually placed actors that get their own lightmap. These are all clustered instances where the clusters will be baked down into a single lightmap together.
If you have a lot of instances and proceed to build with the static meshes default lightmap resolution you are more likely to be met with a warning that “Instanced_Foliage_Actor_[X] lightmap is too large and should be reduced.” This is a clear indication that the lightmap resolution is too high. You should enable the option above and try a lower resolution like 8 or 4 before you try rebuilding.
As a general good practice though you should do the following:
- Limit the use of static lighting on foliage if you are going to have the trees/grass sway in the wind. It looks unnatural for the foliage to move, but the shadow does not.
- Reduce the lightmap resolution of foliage to a manageable size.
- Disable static lighting on grass. This is a general good practice to have since these instances will likely number in the thousands depending on your level and it will significantly increase the light build time in most cases.
_________________________________________________________________________________________________
Самый топовый вопрос надпись в левом верхнем углу «Light Need to Rebuild» а также же надпись Preview на объектах. Как это убрать?
Примечание: это также относится к полосам на ландшафте.
2 способ. Найти все источники света на сцене и переключить параметр Mobility на Movable.
+ данного метода. Полностью избавляет от необходимости билдить освещение.
— данного метода. Не подходит для мобильных платформ. Гораздо больше требует ресурсов на расчёт освещения в реальном времени.
Примечание: при использовании 2 способа. Один раз всё равно нужно сбилдить освещение чтобы избавиться от статических теней оставшихся например от передвинутого в сторону стула.
Также на размытие влияет тип сглаживания TAA, можно включить FXAA и размытие сглаживания исчезнет, однако может появиться угловатость, которую маскировала TAA. Также ухудшаться отражения.
Имеется два меша, персонаж и его одежда, оба завязаны на общий скелет. Проблема в том что когда пытаюсь анимировать оба меша, то анимация работает не синхронно. Как можно правильно синхронизировать анимации для персонажа и его одежды?
Ответ: Для этого используется нода Set Master Pose. Вот несколько пунктов, которые нужно знать чтобы выполнить правильную синхронизацию анимаций:
1. Анимация должна быть только на основном меше (т.е на персонаже должна быть анимация, а на одежде нет).
2. Подключать ноду Set Master Pose на Тик не нужно. Она должна сработать один раз и этого будет достаточно. Применяйте её на Begin Play.
3. На ноду нужно подключать сначала меш (одежда) на который нужно передать анимацию, а на второй вход подключить основной меш (персонаж).
4. Иногда у второго меша (одежда) могут возникнуть проблемы с физикой. В таком случае рекомендуется выключать коллизию у этого меша или настроить коллизию так чтобы она игнорировала коллизию персонажа.
При спавне ИИ стоят на месте или висят в воздухе и не двигаются, что это может быть?
Ответ. По умолчанию во всех Character или Pawn установлена опция «Auto Possess AI» в режим «Placed in World».
Поменяйте режим на «Spawned» или лучше на универсальный режим «Placed in World or Spawned» и тода с ИИ будет всё в порядке.
Источник
Announcement
Error: «Lighting needs to be rebuilt» Upon Rebuilding Lighting.
Whipped up a basic test map. Just a box with a basic stone texture/material and one light actor with it’s brightness + radius adjusted to fill the whole room.
Created a lightmass volume directly on top of my brush, and adjusted the Killz settings also.
Tried to build my map to play test.
Error: Lighting needs to be rebuilt.
I rebuild the lighting but still get the same error.
When you build lighting, make sure you have Build BSP, and Build Lightmass checked. Also, make sure that Build Only Selected isn’t checked. Also, make sure your geometry is built before you build the lighting, or just Build All (though lighting build settings aren’t available in Build All).
Comment
I have this problem
Comment
I have encountered the same problem but I manage to fix it at the end of the day.
Firstly you have to make sure that the light you selected is functioned
To do this simply right click the light you desire and enter the properties option.
Go to the light > Lighting component > lighting component> Function
Next to the «function» tab you will see a blue button, click it and select light function, that is it.
If you have problem with the shadow and light appearance (especially when it disappear when you approach them) you have to build the lighting to fix it.
Usually I build the lighting after I finished my terrain, because after I tested it several times, it appears that you will have to build the lighting again if you add an object. So make sure you finished everything first then build the lighting.
To build the lighting open the build panel which is located at the very top of the program, then select Build all (Might as well build the path as well even though it’s not necessary).
Hope it helps
Источник
Unreal engine 4 lighting needs to be rebuilt что это
Есть 2 метода для отключения статического освещения:
Проектная спецификация: отключение статического освещения
Спецификация уровня: отключение статического освещения
Созданный ранее ассет импортирован в UE4
Когда вы создаёте вашу геометрию в программе для моделирования, по умолчанию стоят настройки, позволяющие видеть геометрию с двух сторон.
В UE4 невидимые полигоны не рендерятся для сохранения производительности.Это не всегда необходимо для получения дополнительных полигонов или плоскостей для рендера, так как в противном случае будут дополнительные «draw calls», которые могут вызвать уменьшение производительности.С несколькими инстансами это возможно не будет иметь значительного различия, но когда вы разрабатываете под определённую платформу или имеете лимит на «draw calls»- это преобретает значительный смысл.
Для понимания почему мы можем видеть только одну сторону нашей геометрии, мы должны открыть нашу геометрию в редакторе геометрии и включить отображение нормалей.Мы увидим зелёные линии указывающие направление полигона(имеется ввиду, что зелёная линия (нормаль) направлена перпендикулярно плоскости полигона). На изображении снизу, мы видим, что линии идут в направлении центра геометрии. Это направление которое даёт возможность увидеть геометрию.
Совет:Вы можете проверить направление нормалей в редакторе ue4 дабы увидеть, где именно у вас проблема.
Итак, у нас некоторые объекты с невидимыми сторонами, всё то нам нужно сделать, дабы это исправить:
Финальный результат
2. Создание двухстороннего материала
Engine Scalability Settings
Изображения снизу демонстрируют тени на дистанции при разных качествах теней указанных в настройках.
Low
Если у вас топовой ПеКа, но теней нет или с ними что-то не то, стоит сначала потыкать в этих настройках, прежде чем искать проблемы в других местах.Также редактор может занижать настройки если просадки фпс слишком велики.
Если вы не испытываете нужны в автоматическом подборе настроек, то вы можете выключить данную опцию, нажав на галочке внизу окошка.
Пересекающиеся Стационарные источники света
Если освещение будет запечено с любым стационарным светом который имеет перекрытия, будет выдано предупреждение с описанием ИС который является источником проблемы и последующими из-за этого последствиями.
Чтобы это исправить, нужно уменьшить количество ИС до четырёх или уменьшить радиус ИС которые пересекаются.
Если же у вас 3 ИС в сцене и появляется красный «Х»,то убедитесь, что у вас на сцене нет других ИС с огромным радиусом.Часто это происходит по тому, что Directional light переключён в режим Stationary, измените этот параметр на Статический или Динамический, дабы исправить проблему.
Динамическое (Подвижное) Освещение
Некорректное качество теней
Пример некорректного затенения геометрии.
Только! для Directional Light : Настройки Cascaded Shadow Maps:
Cascaded Shadow Maps настройки, в Directional Light Details
Dynamic Shadow Distance Movable: Расстояние от камеры, на котором тени будут исчезать.Значение 0 отключает их.
Dynamic Shadow Distance Stationary: Расстояние от камеры, на котором тени будут исчезать.По умолчанию стоит 0 для Directional Stationary Lights.
Num Dynamic Shadow Cascades: Количество каскадов на которое будет делится фрустум.Больше каскакодов- лучше качество, но и ресурсоёмкость возрастает.
Внимание! обязательно тыкните в ссылочку ниже, ибо наверняка не все знают что такое фрустум.
Num Dynamic Shadow Cascades Примеры:
Количество каскадов = 0
Количество каскадов = 1
Количество каскадов = 2
Количество каскадов = 3
Количество каскадов = 4
Cascade Distribution Exponent: Параметр регулирующий, на каком расстоянии от камеры распределение ближе (выше значение) или дальше (меньше значение) от камеры.Значение 1 означает, что переход будет пропорционален разрешению экрана.
Cascade Distribution Exponent Примеры:
Распределение = 1
Распределение = 2
Распределение = 3
Распределение = 4
Cascade Transition Exponent: Параметр регулирующий затухающий регион между каскадами. Низкое значение даст жёсткие грани, высокое- мягкие.
Cascade Transition Exponent Пример:
Эффект перехода
Cascade Transition Exponent
Жёсткая грань (низкое значение)
Смешивание граней (высокое значение)
Shadow Distance Fadeout Fraction: Параметр регулирующий на каком расстоянии тени будут затухать. Высокое значение ослабляет тени, в то время как низкое значение оставляет тени тёмными.
Shadow Distance Fadeout Fraction Пример:
Затухание = 0
Затухание = 1
Far Shadow Cascade Count: Coming in 4.8. More information to follow soon.
Far Shadow Distance: Coming in 4.8. More information to follow soon.
Регулирование Cascades для лучшего качества:
Просачивание теней и их точность, можно настроить с регулированием параметров указанных выше.Данный раздел покажет как лучше настроить параметры, чтобы получить наилучший результат в момент приближённой камеры и когда она отдаляется.Нахождение баланса для каждой отдельной игры- путь проб и ошибок без которого нельзя обойтись.
Это базовая сцена с одними лишь настройками по умолчанию:
Проблемные зоны, вид поближе
Сфокусируем внимание на минимизации просветов теней, в пределах разумного. По умолчанию, дистанция динамических теней установлена в 20000 юнитов.Данное значение не всегда обязательно и может быть изменено в большую или меньшую сторону.
В этой сцене настройки распределения, дистанции теней и количество каскадов просветов и их точность — на приемлемом уровне.
Также имеются ещё 2 настройки которые могут улучшить точность освещения.
Местонахождение этих настроек:
Те самые 2 настройки — Shadow Bias и Filter Sharpness
Shadow Bias — контролирует точность теней в сцене, но может выдать артефакты, если значение будет слишком низким.По умолчанию стоит значение 0.5 которое даёт хороший результат между точностью и эффективность.
Shadow Filter Sharpness — помогает скрыть некоторые артефакты при низких значениях и помогает создавать более резкие тени на краях.
Принимая во внимание то, что предыдущие настройки не были применены для текущих примеров, то ниже идут 2 примера с демонстрацией этих параметров ( Shadow Bias и Shadow Filter Sharpen):
Shadow Bias = 0, установлено слишком низкое значение и поэтому появляются артефакты
Решение данной проблемы- нахождение баланса между установкой не слишком низкого значения и подбором нужного значения в Cascaded Shadows
Shadow Filter Sharpen — делает края тени более резкими при высоких значениях.
Filter Sharpen = 1
Высокое значение параметра даёт резкий край тени, низкое- плавный край тени.
Почему мой подвижный источник света светится сквозь меш на дистанции?
Что получается в итоге.Камера в отдалении.
Чтобы понять что происходит, нужно учитывать, что движок использует глубину сцены, дабы определить, что будет видимым и что будет невидимым при рендере.Тут же мы имеем точечный источник света который испускает свет по всему радиусу до тех пор пока не встретит преграду или пока не столкнётся с границей сферы.
На картинке ниже вы можете наблюдать, как при отдалении камеры появляется halo эффект вокруг внешних граней меша из-за того, что свет не встречает преград на своём пути и исходит во всех направлениях.
Проход света сквозь меш
Вы можете заметить, что если вы на дистанции выберете/выделите такой меш, то освещение вернётся в нормальное состояние.Это объясняется тем, что вы сфокусировались в данный момент на данном меше.
Местонахождение Bounds Scale
Вы можете увидеть/визуализировать границы вашего меша перейдя во вьюпорте > Show > Advanced > Bounds
Увидите нечто такое:
Визуализированные границы объекта.
Если у вас есть вышеописанная проблема, но вы не хотите увеличивать размеры границ вашего меша из-за проблем с производительностью — попробуйте использовать Spotlight. Данный ИС пускает свет лишь в одном направлении, в отличии от point light который пускает свет по всем направлениям когда меш пропускает свет.Пусть это и возымеет некоторый положительный/требуемый эффект, но лишь методом проб и ошибок вы сможете добиться идеального решения.
Alternatively, you could forego a fully movable/dynamic light and use a stationary light that bakes a lightmap texture, which can also save on performance by having zero overhead during runtime for rendering shadow information.
Простенькая сцена с 3 статическими мешами.
В данной сцене 3 объекта : 2 стены и пол.Каждый объект имеет собственную тень, которая запечена в текстуру именуемую — лайтмапой (lightmap).Данная лайтмапа хранит в себе информацию о тенях/освещении, которые проецируются на эту текстуру.Она, как правило, создаётся художником в процессе создания ассета.
Что нужно знать про лайтмапы и как их эффективно создавать?
Другими словами, если я хочу увеличить разрешение тени отбрасываемой стеной с дверным проёмом,я буду настраивать не стену с дверным проёмом, а увеличу разрешение лайтмапы пола.Там куда проецируется тень и запекается в лайтмапу.
Теперь нам надо увеличить разрешение лайтмапы для некоторых мешей.Каждый меш имеет свою собственную лайтмапу, разрешение которой можно установить в details panel, когда наш меш выбран в mesh editor.
В данном примере рассматриваем разрешение лайпмапы пола, и только его.
Когда изменяете разрешение лайтмапы, используйте значения только кратные двум (32(по умолчанию),64,128,и т.д.) за исключением BSP представленных ниже.
Качество разрешения лайтмапы зависит от двух факторов : размер меша и размер UV шела на развёртке лайтмапы.
Разница лайтмапы BSP от статического меша в том, что значение лайтмапы BSP уменьшается в пользу лучшего качества.
Как и везде, при настройке лайтмапы есть свои ухищрения.Использование маленького меша позволит вам добиться лучшего качества для пола с низким разрешением лайтмапы, в то время как для большего меша вам понадобится увеличить разрешение лайтмапы, что в свою очередь затребует больше ресурсов.
Лог после запекания освещения
В данном случае вам надо установить 2й канал развёртки для вашей лайтмапы. В противном случае редактор будет использовать имеющуюся развёртку со всеми имеющимися ошибками.
Вы можете сделать это прямо в редакторе (картинка ниже) либо же с вашем 3d редакторе.
Оригинальные UV и результаты
Перекрывающиеся UVs
Результат в редакторе
Правильные UV и результаты
Заметьте, что финальные UV не имеют перекрытий что даёт теням/свету правильно запечся в текстуру.
Как сгенерировать UV в редакторе
Откройте меш, лайтмапу которого ваш нужно отредактировать.
Найдите панельку похожую на эту:
Static Mesh Editor Details Panel
Generate Lightmap UVs = удостоверьтесь в том, что данная галочка стоит.
Min Lightmap Resolution =Минимальный размер разрешения лайтмапы которое вы хотите.
Source Lightmap Index = Источник с которого генерируем лайтмапу
Destination Lightmap Index = Индекс развёртки которую мы хотим использовать в качестве лайтмапы.
Для большинства ассетов это достаточно хорошие настройки.Ключевой момент тут- выбор нужного индекса источника лайтмапы.Это UV который обычной используют для текстур.UV шелы в этой UV будут перепакованы, и не будут образовывать перекрытия поверхностей.Разрешение лайтмапы не влияет на качество развёртки, этот параметр влияет лишь на качество теней которые будут запекаться на эту развёртку.Если вы хотите проверить, какая у вас получилась развёртка после генерации, выберите UV channel 1 (показано на картинке):
Редактор статик мешей, выбор UV Channel
Теперь, после генерации лайтмап UV, осталось выбрать нужный id в настройках самого меша.
В редакторе меша перейдите в details panel, во вкладку “Static Mesh Settings”
В этой вкладке нужно установить разрешение лайтмапы которое нам нужно.
32 — дефолтное разрешение.для маленьких объектов оно вполне подходит, но чем больше объект, тем больше разрешение нужно указывать.
Удостоверьтесь, что значение кратно 2 (пример: 32, 64, 128, 256, и тд.)
В следующем параметре, удостоверьтесь, что индекс координат лайтмапы установлен на правильный канал.
Обычно для лайтмапы стоит значение 1.
Static Mesh Editor Details, Настройки лайтмапы
После использования данных настроек у вас есть правильное разрешение лайтмапы.
А вообще, лайтмапы лучше создавать прямо в 3d редакторе который вы используете, там вы сможете сделать идеальную развёртку для лайтмапы.Какой бы автогенерация не была, но ошибки будут всегда.
Если вы используете в своём пайплайне 3ds max или maya, посмотрите видео ниже, на них человек доступным языком объясняет как сделать отличную развёртку для лайтмапы.
Сказать автору видео «Спасибо» можете в виде like’ов и подписки на канал (там ещё много полезного видео на РУССКОМ языке (всё как вы любите)).
Когда вы используете статическое освещение, вам необходимо забилдить освещение чтобы увидеть результаты.Лайтмасс (Lightmass) используют для генерации и компиляции текстур, которые будут хранить информацию об освещении и тенях запечённую в лайтмапы.
По умолчанию, значение лайтмасс = 3 световых отскока, дабы получить GI (глобальная иллюминация/освещение) используя статическое освещение.Если необходимо изменить данное значение, то его можно найти во вкладке World Settings.
Lightmass World Settings по умолчанию
Global Illumination пример сцены.Одинарный источник света в 250 единиц (15w примерно)
Первый отскок занимает наибольшее время просчёта.Последующие отскоки будут меньше влиять на время просчёта, но и их влияние будет меньше заметно.
Хотите узнать больше про лайтмасс и глобальное освещение?
После постройки освещения получаются такие вот результаты:
Первоначальное освещение, дефолтные настройки
Первоначальное освещение, дефолтные настройки
В этом примере множество артефактов было исправлено за счёт повышения разрешения лайтмапы, но это также увеличивает потребление памяти.Это наиболее дружественное к производительности решение для непрямого освещения.
Настройки Lightmass изменяются тут :
Indirect Lighting Quality: увеличивает значение Global Illumination для получения требуемого качества.
Indirect Lighting Smoothness: фактор сглаживания применяемого в Indirect Lighting.
Осторожно! используя значение более чем 1 в Indirect Lighting Quality сильно увеличивает время билдинга
Вы также можете настроить количество отскоков непрямого освещения для получения требуемого результа:
количество отскоков непрямого освещения= 5
На данный момент настройки освещения установлены в достаточных значениях для сокрытия любых артефактов с текстурами. Но если нет возможности производить данные манипуляции, то можно просто поднять значение разрешение лайтмапы. Тут это значение изменили с 256 до 512 и получили такой вот результат.
Не изменённые косвенные параметры с разрешением лайтмапы = 1024.
В начале этого урока было показано, как с помощию разрешения лайтмапы в 1024 исправить некоторые артефакты.Но подкрутив некоторые настройки лайтмасс можно добиться лучшего результата с меньшим значением разрешения лайтмапы.
Хотя этот метод и показывает методы решения проблем с «загрязнением» лайтмап без использования света, следует помнить,что добавление в нужное место небольшого источника света, пусть и с низкой интенсивность, без теней- может дать результат получше.Методы описанные выше являются лишь отправной точкой, и лишь методом проб и ошибок вы можете добиться требуемого результата.
Что такое “Lighting needs to be rebuilt” в левом верхнем углу?
Если вы в режиме : игра в редакторе, симуляция, standalone, в левом верхнем углу видиту надпись Lighting needs to be rebuilt, это означает, что вы должны заново запечь/простроить освещение в вашей сцене.Данное явление происходит только при статическом и стационарном освещении.Динамическое освещение не требует билдить освещение.Данное сообщение появляется в случае если источник света был передвинут или модифицирован.
Сообщение об ошибке
Сравнение качества освещения
Настройки качества освещения.
Для данной демонстрации будет использоваться закрытая комната как и в предыдущем параграфе.Как исправить дырки в стенах и грязность лайтмап
Продакшн
В данном примере легко заметить разницу между качеством превью и продакшн. По сравнению с другими настройками, в продакшине исчезают недочёты/баги, которые имеют место быть в предыдущих качествах.Именно поэтому, если вы наблюдаете при запекании света ошибки/баги/артефакты, рекомендуется забилдить освещение на продакшине, и в том случае, если баги/ошибки не исчезли, идти в лайтмапы и проверять уже их на правильность.
На примере этой статуи заметить разницу между качествами не так уж и легко.Но разница есть.
Улучшение развёртки лайтмапы — залог качественных теней.
качество освещения статуи
Источник