Почему мои тени чёрные?
По правилам освещения, чёрные тени обычно используются, если у вас нет заполняющего света.Это часто происходит по тому, что окружающая среда имеет единично направленный поток света, представленный как солнце.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
Когда вы создаёте вашу геометрию в программе для моделирования, по умолчанию стоят настройки, позволяющие видеть геометрию с двух сторон.
В UE4 невидимые полигоны не рендерятся для сохранения производительности.Это не всегда необходимо для получения дополнительных полигонов или плоскостей для рендера, так как в противном случае будут дополнительные «draw calls», которые могут вызвать уменьшение производительности.С несколькими инстансами это возможно не будет иметь значительного различия, но когда вы разрабатываете под определённую платформу или имеете лимит на «draw calls»- это преобретает значительный смысл.
Для понимания почему мы можем видеть только одну сторону нашей геометрии, мы должны открыть нашу геометрию в редакторе геометрии и включить отображение нормалей.Мы увидим зелёные линии указывающие направление полигона(имеется ввиду, что зелёная линия (нормаль) направлена перпендикулярно плоскости полигона). На изображении снизу, мы видим, что линии идут в направлении центра геометрии. Это направление которое даёт возможность увидеть геометрию.
Совет:Вы можете проверить направление нормалей в редакторе ue4 дабы увидеть, где именно у вас проблема.
Итак, у нас некоторые объекты с невидимыми сторонами, всё то нам нужно сделать, дабы это исправить:
1.(ТОЛЬКО ДЛЯ СТАТИКИ) Двухстороннее освещение
- Включить данную опцию в details panel для выделенного ассета в Level Viewport.
- С включённой данной опцией когда свет построится ,lightmass будут считать что освещение для геометрии запечено.Это будет давать тень, даже если мы не можем видеть её с такого ракурса.Это не работает для подвижных/днамических источников света, т.к. Unreal Engine 4 использует отложенный рендер.
Details Panel ассета в Level Viewport
Финальный результат
2. Создание двухстороннего материала
- Откройте редактор материалов и слева в details panel выберите опцию “Two-sided”.
- Сохраните и скомпилируйте ваш материал, чтобы увидеть результат.
- Данный метод может быть использован с Статическим/Стационарным/Подвижным освещением.Теперь материл рендерит плоскости, которые ранее не были видны.
Как упоминалось ранее, это не актуально для небольших сцен, но если вы ограничены в ресурсах, то это может повлиять на производительность.
Атрибуты материала details панелька
Финальный результат
Почему это выглядит так, как будто я ничего не делал до этого или Масштабируемые настройки
Масштабируемые настройки располагаются в Settings > Engine Scalability опции на тулбаре.
Цель данного масштабирования заключается в том, что бы не шибко производительные компьютеры не умирали от ультра настроек.По умолчанию редактор занижает настройки если FPS падает слишком низко.
Опция “Shadows” непосредственно влияет на дальность прорисовки всех динамических теней.Это верно когда используется “Movable” освещение или когда освещение ещё не запекалось для статического освещения, так как те используют динамические тени до тех пор, пока освещение не будет запечено в lightmaps.
Масштабируемые настройки располагаются в Settings > Engine Scalability опции на тулбаре.
Цель данного масштабирования заключается в том, что бы не шибко производительные компьютеры не умирали от ультра настроек.По умолчанию редактор занижает настройки если FPS падает слишком низко.
Опция “Shadows” непосредственно влияет на дальность прорисовки всех динамических теней.Это верно когда используется “Movable” освещение или когда освещение ещё не запекалось для статического освещения, так как те используют динамические тени до тех пор, пока освещение не будет запечено в lightmaps.
Engine Scalability Settings
Изображения снизу демонстрируют тени на дистанции при разных качествах теней указанных в настройках.
Изображения снизу демонстрируют тени на дистанции при разных качествах теней указанных в настройках.
Epic
High
Medium
Low
Если у вас топовой ПеКа, но теней нет или с ними что-то не то, стоит сначала потыкать в этих настройках, прежде чем искать проблемы в других местах.Также редактор может занижать настройки если просадки фпс слишком велики.
Если вы не испытываете нужны в автоматическом подборе настроек, то вы можете выключить данную опцию, нажав на галочке внизу окошка.
Want to know more about Engine Scalability?
Почему на источниках света появился красный Х ?
Стационарные источники света ограничены 4 пересекающимися источниками. Когда добавляется ещё и 5й, появляется красный «Х», являясь индикатором того, что ИС с малым радиусом будут переведены в динамические ИС.Это может привести к проблемам производительности, так как динамические ИС потребляют больше ресурсов для запекания теней.
Если у вас топовой ПеКа, но теней нет или с ними что-то не то, стоит сначала потыкать в этих настройках, прежде чем искать проблемы в других местах.Также редактор может занижать настройки если просадки фпс слишком велики.
Если вы не испытываете нужны в автоматическом подборе настроек, то вы можете выключить данную опцию, нажав на галочке внизу окошка.
Want to know more about Engine Scalability?
Почему на источниках света появился красный Х ?
Стационарные источники света ограничены 4 пересекающимися источниками. Когда добавляется ещё и 5й, появляется красный «Х», являясь индикатором того, что ИС с малым радиусом будут переведены в динамические ИС.Это может привести к проблемам производительности, так как динамические ИС потребляют больше ресурсов для запекания теней.
Пересекающиеся Стационарные источники света
Если освещение будет запечено с любым стационарным светом который имеет перекрытия, будет выдано предупреждение с описанием ИС который является источником проблемы и последующими из-за этого последствиями.
Чтобы это исправить, нужно уменьшить количество ИС до четырёх или уменьшить радиус ИС которые пересекаются.
Если же у вас 3 ИС в сцене и появляется красный «Х»,то убедитесь, что у вас на сцене нет других ИС с огромным радиусом.Часто это происходит по тому, что Directional light переключён в режим Stationary, измените этот параметр на Статический или Динамический, дабы исправить проблему.
Что ещё нужно знать про Стационарные источники освещения?
Если освещение будет запечено с любым стационарным светом который имеет перекрытия, будет выдано предупреждение с описанием ИС который является источником проблемы и последующими из-за этого последствиями.
Чтобы это исправить, нужно уменьшить количество ИС до четырёх или уменьшить радиус ИС которые пересекаются.
Если же у вас 3 ИС в сцене и появляется красный «Х»,то убедитесь, что у вас на сцене нет других ИС с огромным радиусом.Часто это происходит по тому, что Directional light переключён в режим Stationary, измените этот параметр на Статический или Динамический, дабы исправить проблему.
Что ещё нужно знать про Стационарные источники освещения?
Динамическое (Подвижное) Освещение
Некорректное качество теней
В данной части пособия мы рассмотрим решения, направленные на улучшение качества теней соответствующих геометрии.Это также поможет улучшить качество динамических теней.
Пример некорректного затенения геометрии.
Только! для Directional Light : Настройки Cascaded Shadow Maps:
Только! для 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: Количество каскадов на которое будет делится фрустум.Больше каскакодов- лучше качество, но и ресурсоёмкость возрастает.
Внимание! обязательно тыкните в ссылочку ниже, ибо наверняка не все знают что такое фрустум.
Dynamic Shadow Distance Movable: Расстояние от камеры, на котором тени будут исчезать.Значение 0 отключает их.
Dynamic Shadow Distance Stationary: Расстояние от камеры, на котором тени будут исчезать.По умолчанию стоит 0 для Directional Stationary Lights.
Num Dynamic Shadow Cascades: Количество каскадов на которое будет делится фрустум.Больше каскакодов- лучше качество, но и ресурсоёмкость возрастает.
Внимание! обязательно тыкните в ссылочку ниже, ибо наверняка не все знают что такое фрустум.
Больше информации про фрустум: http://en.wikipedia.org/wiki/Viewing_frustum
Num Dynamic Shadow Cascades Примеры:
Количество каскадов = 0
Количество каскадов = 1
Количество каскадов = 2
Количество каскадов = 3
Количество каскадов = 4
Количество каскадов = 1
Количество каскадов = 2
Количество каскадов = 3
Количество каскадов = 4
Cascade Distribution Exponent: Параметр регулирующий, на каком расстоянии от камеры распределение ближе (выше значение) или дальше (меньше значение) от камеры.Значение 1 означает, что переход будет пропорционален разрешению экрана.
Cascade Distribution Exponent Примеры:
Cascade Distribution Exponent Примеры:
Распределение = 1
Распределение = 2
Распределение = 3
Распределение = 4
Cascade Transition Exponent: Параметр регулирующий затухающий регион между каскадами. Низкое значение даст жёсткие грани, высокое- мягкие.
Cascade Transition Exponent Пример:
Распределение = 2
Распределение = 3
Распределение = 4
Cascade Transition Exponent: Параметр регулирующий затухающий регион между каскадами. Низкое значение даст жёсткие грани, высокое- мягкие.
Cascade Transition Exponent Пример:
Эффект перехода
Cascade Transition Exponent
Cascade Transition Exponent
Жёсткая грань (низкое значение)
Смешивание граней (высокое значение)
Shadow Distance Fadeout Fraction: Параметр регулирующий на каком расстоянии тени будут затухать. Высокое значение ослабляет тени, в то время как низкое значение оставляет тени тёмными.
Shadow Distance Fadeout Fraction Пример:
Смешивание граней (высокое значение)
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 для лучшего качества:
Затухание = 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 юнитов.Данное значение не всегда обязательно и может быть изменено в большую или меньшую сторону.
В этой сцене настройки распределения, дистанции теней и количество каскадов просветов и их точность — на приемлемом уровне.
Сфокусируем внимание на минимизации просветов теней, в пределах разумного. По умолчанию, дистанция динамических теней установлена в 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 Filter Sharpness — помогает скрыть некоторые артефакты при низких значениях и помогает создавать более резкие тени на краях.
Принимая во внимание то, что предыдущие настройки не были применены для текущих примеров, то ниже идут 2 примера с демонстрацией этих параметров ( Shadow Bias и Shadow Filter Sharpen):
Shadow Bias
Shadow Bias = 0.5 (Дефолтное значение)
Shadow Bias = 0, установлено слишком низкое значение и поэтому появляются артефакты
Решение данной проблемы- нахождение баланса между установкой не слишком низкого значения и подбором нужного значения в Cascaded Shadows
Shadow Filter Sharpen — делает края тени более резкими при высоких значениях.
Решение данной проблемы- нахождение баланса между установкой не слишком низкого значения и подбором нужного значения в Cascaded Shadows
Shadow Filter Sharpen — делает края тени более резкими при высоких значениях.
Filter Sharpen = 0
Filter Sharpen = 1
Высокое значение параметра даёт резкий край тени, низкое- плавный край тени.
Почему мой подвижный источник света светится сквозь меш на дистанции?
Высокое значение параметра даёт резкий край тени, низкое- плавный край тени.
Почему мой подвижный источник света светится сквозь меш на дистанции?
Динамическое освещение , в частности точечные ИС,могут создавать проблемы такого рода.Unreal Engine 4 достаточно хорошо справляется с подобной оптимизацией, поэтому вам не стоит сильно об этом волноваться.Но иногда возникает подобная проблема и метод её решения не всегда очевиден.
Что получается в итоге.Камера в отдалении.
Что же делать?
Чтобы понять что происходит, нужно учитывать, что движок использует глубину сцены, дабы определить, что будет видимым и что будет невидимым при рендере.Тут же мы имеем точечный источник света который испускает свет по всему радиусу до тех пор пока не встретит преграду или пока не столкнётся с границей сферы.
На картинке ниже вы можете наблюдать, как при отдалении камеры появляется halo эффект вокруг внешних граней меша из-за того, что свет не встречает преград на своём пути и исходит во всех направлениях.
Что же делать?
Чтобы понять что происходит, нужно учитывать, что движок использует глубину сцены, дабы определить, что будет видимым и что будет невидимым при рендере.Тут же мы имеем точечный источник света который испускает свет по всему радиусу до тех пор пока не встретит преграду или пока не столкнётся с границей сферы.
На картинке ниже вы можете наблюдать, как при отдалении камеры появляется halo эффект вокруг внешних граней меша из-за того, что свет не встречает преград на своём пути и исходит во всех направлениях.
Проход света сквозь меш
Вы можете заметить, что если вы на дистанции выберете/выделите такой меш, то освещение вернётся в нормальное состояние.Это объясняется тем, что вы сфокусировались в данный момент на данном меше.
Дабы сохранить меш пропускания света, вам нужно выделить меш, и перейти в details panel.Тут вам нужно найти во вкладке Rendering , параметр Bounds Scale.
Вы можете заметить, что если вы на дистанции выберете/выделите такой меш, то освещение вернётся в нормальное состояние.Это объясняется тем, что вы сфокусировались в данный момент на данном меше.
Дабы сохранить меш пропускания света, вам нужно выделить меш, и перейти в 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.
По умолчанию значение установлено в 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
Как и везде, при настройке лайтмапы есть свои ухищрения.Использование маленького меша позволит вам добиться лучшего качества для пола с низким разрешением лайтмапы, в то время как для большего меша вам понадобится увеличить разрешение лайтмапы, что в свою очередь затребует больше ресурсов.
В данной сцене 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’ов и подписки на канал (там ещё много полезного видео на РУССКОМ языке (всё как вы любите)).
Как контролировать Глобальное Освещение при использовании статического освещения
Теперь, после генерации лайтмап 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 примерно)
Global Illumination пример сцены.Одинарный источник света в 250 единиц (15w примерно)
Настройки сцены
0 отскоков
1 отскок
2 отскока
3 отскока
100 отскоков
Первый отскок занимает наибольшее время просчёта.Последующие отскоки будут меньше влиять на время просчёта, но и их влияние будет меньше заметно.
Хотите узнать больше про лайтмасс и глобальное освещение?
0 отскоков
1 отскок
2 отскока
3 отскока
100 отскоков
Первый отскок занимает наибольшее время просчёта.Последующие отскоки будут меньше влиять на время просчёта, но и их влияние будет меньше заметно.
Хотите узнать больше про лайтмасс и глобальное освещение?
Почему тени пятнистые или как избавится от загрязнения лайтмап?
Пятна, загрязнения, ну или как вы там это называете, не суть;данная ошибка часто возникает при использовании статического освещения в ue4.Не стоит паниковать, ведь исправить это можно через настройки лайтмасс.
Первое что приходит на ум- это то, что это связанно с непрямым освещением от отскоков GI при построении лайтмасс.
Что бы показать как это наиболее эффективно исправить, будем использовать 2 комнаты в качестве примера.
Пятна, загрязнения, ну или как вы там это называете, не суть;данная ошибка часто возникает при использовании статического освещения в ue4.Не стоит паниковать, ведь исправить это можно через настройки лайтмасс.
Первое что приходит на ум- это то, что это связанно с непрямым освещением от отскоков GI при построении лайтмасс.
Что бы показать как это наиболее эффективно исправить, будем использовать 2 комнаты в качестве примера.
В данной сцене будет использоваться продакшн (PRODUCTION) качество освещения.В данной сцене используются ассеты из Starter Content pack .Все меши в этой сцене используют разрешение лайтмап = 256, в других случаях об этом будет написано.Пост процессы установлены в дефолтные значения , с адаптацией глаз для того, чтобы лучше видеть тёмные места комнаты.
После постройки освещения получаются такие вот результаты:
Первоначальное освещение, дефолтные настройки
интерьер 2й комнаты , освещается полностью непрямым светом
Brute force может быть использовано для удаления некоторых артефактов путём увеличения разрешения лайтмапы , но это решение не всегда верно и не всегда помогает.
Как пример, во второй интерьерной комнате, разрешение лайтмапы увеличили до 1024:
Первоначальное освещение, дефолтные настройки
Brute force может быть использовано для удаления некоторых артефактов путём увеличения разрешения лайтмапы , но это решение не всегда верно и не всегда помогает.
Как пример, во второй интерьерной комнате, разрешение лайтмапы увеличили до 1024:
Первоначальное освещение, дефолтные настройки
интерьер 2й комнаты , разрешение лайтмапы 1024
В этом примере множество артефактов было исправлено за счёт повышения разрешения лайтмапы, но это также увеличивает потребление памяти.Это наиболее дружественное к производительности решение для непрямого освещения.
В этом примере множество артефактов было исправлено за счёт повышения разрешения лайтмапы, но это также увеличивает потребление памяти.Это наиболее дружественное к производительности решение для непрямого освещения.
Настройки Lightmass изменяются тут :
Indirect Lighting Quality: увеличивает значение Global Illumination для получения требуемого качества.
Indirect Lighting Smoothness: фактор сглаживания применяемого в Indirect Lighting.
Осторожно! используя значение более чем 1 в Indirect Lighting Quality сильно увеличивает время билдинга
Indirect Lighting Quality: увеличивает значение Global Illumination для получения требуемого качества.
Indirect Lighting Smoothness: фактор сглаживания применяемого в Indirect Lighting.
Осторожно! используя значение более чем 1 в Indirect Lighting Quality сильно увеличивает время билдинга
Пример настроек #1
Вы также можете настроить количество отскоков непрямого освещения для получения требуемого результа:
Вы также можете настроить количество отскоков непрямого освещения для получения требуемого результа:
количество отскоков непрямого освещения= 5
На данный момент настройки освещения установлены в достаточных значениях для сокрытия любых артефактов с текстурами. Но если нет возможности производить данные манипуляции, то можно просто поднять значение разрешение лайтмапы. Тут это значение изменили с 256 до 512 и получили такой вот результат.
На данный момент настройки освещения установлены в достаточных значениях для сокрытия любых артефактов с текстурами. Но если нет возможности производить данные манипуляции, то можно просто поднять значение разрешение лайтмапы. Тут это значение изменили с 256 до 512 и получили такой вот результат.
Не изменённые косвенные параметры с разрешением лайтмапы = 1024.
В начале этого урока было показано, как с помощию разрешения лайтмапы в 1024 исправить некоторые артефакты.Но подкрутив некоторые настройки лайтмасс можно добиться лучшего результата с меньшим значением разрешения лайтмапы.
Хотя этот метод и показывает методы решения проблем с «загрязнением» лайтмап без использования света, следует помнить,что добавление в нужное место небольшого источника света, пусть и с низкой интенсивность, без теней- может дать результат получше.Методы описанные выше являются лишь отправной точкой, и лишь методом проб и ошибок вы можете добиться требуемого результата.
Хочешь узнать больше про Lightmass Basics?
Хочешь узнать больше про Lightmass Global Illumination?
В начале этого урока было показано, как с помощию разрешения лайтмапы в 1024 исправить некоторые артефакты.Но подкрутив некоторые настройки лайтмасс можно добиться лучшего результата с меньшим значением разрешения лайтмапы.
Хотя этот метод и показывает методы решения проблем с «загрязнением» лайтмап без использования света, следует помнить,что добавление в нужное место небольшого источника света, пусть и с низкой интенсивность, без теней- может дать результат получше.Методы описанные выше являются лишь отправной точкой, и лишь методом проб и ошибок вы можете добиться требуемого результата.
Хочешь узнать больше про Lightmass Basics?
Хочешь узнать больше про Lightmass Global Illumination?
Что такое “Lighting needs to be rebuilt” в левом верхнем углу?
Если вы в режиме : игра в редакторе, симуляция, standalone, в левом верхнем углу видиту надпись Lighting needs to be rebuilt, это означает, что вы должны заново запечь/простроить освещение в вашей сцене.Данное явление происходит только при статическом и стационарном освещении.Динамическое освещение не требует билдить освещение.Данное сообщение появляется в случае если источник света был передвинут или модифицирован.
Сообщение об ошибке
Сравнение качества освещения
Если вы в режиме : игра в редакторе, симуляция, standalone, в левом верхнем углу видиту надпись Lighting needs to be rebuilt, это означает, что вы должны заново запечь/простроить освещение в вашей сцене.Данное явление происходит только при статическом и стационарном освещении.Динамическое освещение не требует билдить освещение.Данное сообщение появляется в случае если источник света был передвинут или модифицирован.
Сообщение об ошибке
Сравнение качества освещения
Когда вам требуется запечь освещение в необходимом качестве, вы можете выбрать качество перейдя во вкладку Build>Lighting Quality>выбрать нужное качество.
По умолчанию качество установлено в Preview.Данный уровень качества быстрее при просчёте нежели Production, но не столь аккуратное.
Настройки качества освещения.
Для данной демонстрации будет использоваться закрытая комната как и в предыдущем параграфе.Как исправить дырки в стенах и грязность лайтмап
Для данной демонстрации будет использоваться закрытая комната как и в предыдущем параграфе.Как исправить дырки в стенах и грязность лайтмап
Превью
Среднее
Высокое
Продакшн
В данном примере легко заметить разницу между качеством превью и продакшн. По сравнению с другими настройками, в продакшине исчезают недочёты/баги, которые имеют место быть в предыдущих качествах.Именно поэтому, если вы наблюдаете при запекании света ошибки/баги/артефакты, рекомендуется забилдить освещение на продакшине, и в том случае, если баги/ошибки не исчезли, идти в лайтмапы и проверять уже их на правильность.
На примере этой статуи заметить разницу между качествами не так уж и легко.Но разница есть.
Качество освещения
В данном примере легко заметить разницу между качеством превью и продакшн. По сравнению с другими настройками, в продакшине исчезают недочёты/баги, которые имеют место быть в предыдущих качествах.Именно поэтому, если вы наблюдаете при запекании света ошибки/баги/артефакты, рекомендуется забилдить освещение на продакшине, и в том случае, если баги/ошибки не исчезли, идти в лайтмапы и проверять уже их на правильность.
На примере этой статуи заметить разницу между качествами не так уж и легко.Но разница есть.
Качество освещения
Улучшение развёртки лайтмапы — залог качественных теней.
качество освещения статуи
качество освещения статуи
Источник: www.redcomrade.ru
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.