Проблемы с освещением и методы их решения в Unreal Engine 4
По правилам освещения, чёрные тени обычно используются, если у вас нет заполняющего света. Это часто происходит по тому, что окружающая среда имеет один направленный поток света, представленный как солнце. UE4 построен на методе, обеспечивающем эффективное заполнение светом окружающего мира называемым SkyLight. Немного про Skylight.
Некорректные lightmap настройки при конвертировании BSP в Static Mesh
Когда вы сконвертируете свою BSP геометрию в static mesh , вы увидите данный результат:
Не беспокойтесь, это нормально. Так как мы только что сконвертировали наш BSP в static mesh, мы должны убедится в правильности назначенного канала для lightmap. Для того чтобы это было делать проще, lightmap автоматически генерируется когда вы конвертируете BSP. Единственное что вам осталось сделать — это выбрать нужный канал и разрешение.
Для того что бы это сделать — откройте новосозданный static mesh. Найдите панель details, расположенную справа в Static Mesh Settings.
Тут вам надо установить Lightmap Resolution. Это может быть любое значение кратное двум (к примеру, 32, 64, 128, и тд.). Это будет разрешением вашей lightmap текстуры. Высокое значение разрешения lightmap даст лучший результат, но в то же время займёт больше памяти и времени просчёта.
Далее, установите Lightmap Coordinate Index в 1 (UE4 использует этот канал для lightmap по умолчанию). Это положение вашей lightmap UV где нет наложения/пересечения UV шелов.
Если вы хотите увидеть как ваша lightmap выглядит, вы можете кликнуть по кнопке для UV в тулбаре и выбрать UV Channel 1 из выпадающего списка.
А если мне не нужны lightmap'ы ?
Бывают моменты когда игра не нуждается в lightmaps, т.к. оптимизирована для использования лишь динамического освещения. Опция которая отключает lightmaps , расположена в world settings и проверяется пунктиком “Force No Precomputed Lighting”. Когда освещение перестроится — все ранее запечённые lightmaps будут удалены.
Есть 2 способа для отключения статического освещения:
Project Settings: отключение статического освещения
Menu > Edit > Project Settings
Перейдите в Rendering Tab > Lighting Tab
Снимите галочку с «Allow Static Lighting«
Для восстановления полной функциональности данной опции вам необходимо перезапустить редактор
Level Settings: отключение статического освещения
Откройте World Settings
Перейдите в Lightmass Tab
Снимите галочку с «Force No Precomputed Lighting«
Вам будет показано предупреждение, нажмите ОК
Заново просчитайте освещение для полного обнуления ранее запечённого освещения
Двухстороннее освещения для односторонней геометрии или почему мой свет проходит сквозь объект?
На данном изображении показан ассет, который был сделан в 3ds max: плоскость и трубу.
В редакторе всё выглядит отлично, но когда я импортирую это в ue4, часть геометрии пропадает.
Так что же происходит, ведь данное явление не является нормой?
На самом деле- это нормальное явление.Если смотреть на плоскость, то она рендерится как и положено, но вот её задняя часть, как и ближние (к камере -прим.ред.)полигоны трубы- не рендерятся.
Когда вы создаёте вашу геометрию в программе для моделирования, по умолчанию стоят настройки, позволяющие видеть геометрию с двух сторон.
В UE4 невидимые полигоны не рендерятся для сохранения производительности. Это не всегда необходимо для получения дополнительных полигонов или плоскостей для рендера, так как в противном случае будут дополнительные вызовы отрисовки (draw calls), которые могут вызвать снижение производительности. С несколькими инстансами это, возможно, не будет играть особой роли, но когда вы разрабатываете под определённую платформу или имеете лимит на draw calls — данную особенность стоит учитывать.
Для понимания почему мы можем видеть только одну сторону нашей геометрии, мы должны открыть нашу геометрию в редакторе геометрии и включить отображение нормалей. Мы увидим зелёные линии указывающие направление полигона(имеется ввиду, что зелёная линия (нормаль) направлена перпендикулярно плоскости полигона). На изображении снизу, мы видим, что линии идут в направлении центра геометрии. Это направление которое даёт возможность увидеть геометрию.
Совет: Вы можете проверить направление нормалей в редакторе ue4 дабы увидеть, где именно у вас проблема.
Итак, у нас некоторые объекты с невидимыми сторонами, всё то нам нужно сделать, дабы это исправить:
1. (ТОЛЬКО ДЛЯ СТАТИКИ) Двухстороннее освещение
Включить данную опцию в details panel для выделенного ассета в Level Viewport.
С данной включённой опцией когда свет построится, lightmass будут считать что освещение для геометрии запечено. Это будет давать тень, даже если мы не можем видеть её с такого ракурса. Это не работает для подвижных/динамических источников света, т.к. Unreal Engine 4 использует deffered рендер.
Details Panel ассета в Level Viewport
2. Создание двухстороннего материала
Откройте редактор материалов и слева в details panel выберите опцию “Two-sided”.
Сохраните и скомпилируйте ваш материал, чтобы увидеть результат.
Данный метод может быть использован с Статическим/Стационарным/Подвижным освещением.Теперь материл рендерит плоскости, которые ранее не были видны.
Данный способ добавляет draw calls
Как упоминалось ранее, это не актуально для небольших сцен, но если вы ограничены в ресурсах, то это может повлиять на производительность.
Атрибуты материала details панелька
Финальный результат
Почему всё выглядит так, как будто я ничего не делал до этого или Масштабируемые настройки
Масштабируемые настройки располагаются в Settings > Engine Scalability опции на тулбаре.
Цель данного масштабирования заключается в том, что бы не шибко производительные компьютеры не умирали от ультра настроек. По умолчанию редактор занижает настройки если FPS падает слишком низко.
Опция “Shadows” непосредственно влияет на дальность прорисовки всех динамических теней. Это верно когда используется “Movable” освещение или когда освещение ещё не запекалось для статического освещения, так как те используют динамические тени до тех пор, пока освещение не будет запечено в lightmaps.
Engine Scalability Settings
Изображения снизу демонстрируют тени на отдалении при разном качестве теней указанных в настройках.
Если у вас топовой ПеКа, но теней нет или с ними что-то не то, стоит сначала потыкать в этих настройках, прежде чем искать проблемы в других местах. Также редактор может занижать настройки если просадки фпс слишком велики.
Если вы не испытываете нужды в автоматическом подборе настроек, то вы можете выключить данную опцию, нажав на галочке внизу окошка.
Почему на источниках света появился красный Х ?
Стационарные источники света ограничены 4 пересекающимися источниками. Когда добавляется ещё и 5й, появляется красный «Х», являясь индикатором того, что ИС с малым радиусом будут переведены в динамические ИС. Это может привести к проблемам производительности, так как динамические ИС потребляют больше ресурсов для запекания теней.
Если освещение будет запечено с любым стационарным светом который имеет перекрытия, будет выдано предупреждение с описанием ИС который является источником проблемы и последующими из-за этого последствиями.
Чтобы это исправить, нужно уменьшить количество ИС до четырёх или уменьшить радиус ИС которые пересекаются.
Если же у вас 3 ИС в сцене и появляется красный «Х», то убедитесь, что у вас на сцене нет других ИС с огромным радиусом. Часто это происходит по тому, что Directional light переключён в режим Stationary, измените этот параметр на Статический или Динамический, дабы исправить проблему.
Типовые ошибки при создании lightmap
Ключевым моментом от которого зависит качество ваших lightmap, как ни странно, является правильное создание этих самых lightmap, а именно корректное использование UV пространства. Когда шелы вашей UV развёртки накладываются друг на друга или выходят за пределы 0-1 UV пространства, то вам будет показано следующее предупреждение “Lightmap Overlapping by xx%”.
Ниже приведена ссылочка на подробный гайд о том, как правильно сделать lightmap’у. Крайне рекомендуется к прочтению, если вы впервые имеете дело с lightmap’ами или оные получаются у вас с артефактами.
Ключевые моменты про которые нельзя забывать при создании lightmap:
1. Никаких пересекающихся шелов в UV.
2. UV шелы не должны выходить за пределы 0-1 квадрата развёртки.
3. Flat-Mapping — не панацея и часто даёт артефакты на вашей lightmap’е.
4. Используйте максимум UV пространства.
5. Если у вас объекты больших размеров, целесообразнее будет разделить его на несколько объектов поменьше, чтобы разрешение lightmap’ы было адекватное, ну и для лучшей производительности в лице Occlusion Culling.
6. Используйте наименьшее разрешение lightmap текстуры, чтобы не увеличивать загрузку ОЗУ в итоговом билде проекта, а заодно уменьшить время запекание самих lightmap.
7. Создавая UV развёртку для lightmap под нужное вам разрешение, не забывайте, что расстояние между UV шелами должно быть не менее 2рх, дабы не допустить артефактов (light bleed).
Мощь Post Process Global Illumination
Post Process Volume (далее PPV) может стать ультимативным инструментом в вашей сцене, когда дело касается освещения, особенно областей со статическим освещением. Post Process Settings позволяют легко и непринуждённо выставлять нужные параметры.
В приведённом ниже примере всё управляется посредством emissive материала цилиндрика, одним слабым источником света в комнате, и двумя пересекающимися PPV. Это довольно дешёвый способ для имитации динамического глобального освещения с использованием PPV
GI Post Process настройки
Делаем то что на гифке ниже:
1. Тусклый источник света для номинального мягкого освещения в комнате.
2. На перемещающийся цилиндрик назначен простой emissive материал, с параметром регулирующим яркость оного.
3. Первый PPV нужен для окружающего пространства, на случай если нужно будет переопределить какие-либо глобальные параметры.
4. Второй PPV прикреплён к цилиндрику, имеет больший чем цилиндр размер; для более плавной работы PPV было скорректировано 3 параметра:
— Indirect Lighting Color имеет тот же цвет что и цилиндр, но немного ярче.
— Indirect Lighting Intensity настроен таким образом, что придаёт ощущение, будто цилиндрик освещает комнату.
— Post Process Volume’s Blend Radius настроен таким образом, чтобы при пересечении этих двух PPV, влияние обоих плавно смешивалось.
Всё это управляется посредством PPV и статического освещения! Способность контролировать запекание GI может дать больше контроля если вам нужно сделать разные варианты освещения и оградить от необходимости полагаться сугубо на запекания освещения для полного соответствия.
Capsule Shadows
Капсульные тени были добавлены в 4.11 версии и позволяют скелетал мешам органично вписываться в сцены с непрямым освещением и в сцены с прямым освещением но с мягкими тенями.
Материал размещённый по ссылке ниже раскроет данную тему.
Дата размещения: 4-11-2019, 10:20
- Раздел: Советы на все случаи жизни