Уровень детализации системы частиц – LOD в Unreal Engine 4

0
4
Уровень детализации системы частиц - LOD ue4

Уровни детализации (LODs) обеспечивают способ для художников – исполнителей создавать эффекты частиц, которые максимально эффективно используют пространство экрана, в зависимости от диапазона игроков. Рассмотрим систему частиц пожара в лагере: здесь может быть задействовано несколько излучателей, например:

  • Ядро пламени
  • Наружное пламя
  • Ядро
  • Искры и угли
  • Один или несколько слоев дыма

При просмотре крупным планом ваша система может выглядеть примерно так:1 система частиц ue4

Однако, когда игрок уходит далеко, он будет занимать гораздо меньше места на экране, например, как здесь:2 система частиц ue4

В таком случае были бы аспекты системы частиц, которые слишком малы для рендеринга (меньше пикселя), например, как углей. Однако эти частицы все равно будут вычисляться и обрабатываться. Здесь LODs входят. LODs позволяют упростить систему частиц на основе расстояния, так что излучатели и модули внутри системы могут отключить их настройку или полностью отключиться – когда игрок слишком далеко, чтобы эффективно оценить эффект.

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

Элементы управления Cascade LOD

Следующий раздел панели инструментов Cascade охватывает элементы управления LOD.

Элементы управления Cascade LODЭлементы управления Cascade LOD ue4

Ниже приводится разбивка каждого элемента управления:

КнопкаИмяОписание
Cascade_Toolbar_RegenLOD_Duplicating.pngRegenerate Lowest LOD Duplicating Highest ButtonКогда нажата кнопка Regenerate Lowest LOD Duplicating Highest, система частиц удалит все существующие уровни LOD и восстановит новый самый низкий, который является точной копией самого высокого уровня.
Cascade_Toolbar_RegenLOD.pngRegen Lowest LOD ButtonКогда нажата кнопка Regen Lowest LOD, система частиц удалит все существующие уровни LOD и восстановит новый самый низкий.
Cascade_Toolbar_LowestLOD.pngJump to Lowest LOD ButtonКогда нажата кнопка Jump to Lowest LOD, система будет установлена ​​на самый доступный статический LOD.
Cascade_Toolbar_LowerLOD.pngJump to Lower LOD ButtonКогда нажата кнопка Jump Lower to LOD, система будет установлена ​​на следующий доступный более низкий статический LOD, чем текущая настройка LOD.
Cascade_Toolbar_AddLOD_Before.pngAdd LOD before current ButtonКогда нажата кнопка Add LOD before current, система добавит новый статический уровень LOD до текущего загруженного LOD.
Cascade_Toolbar_CurrentLOD.pngCurrent LODТекущие информационные поля LOD показывают, какой LOD загружен, а также количество LOD в системе частиц.
Cascade_Toolbar_AddLOD_After.pngAdd LOD after current ButtonКогда нажата кнопка Add LOD after current, система введет новый статический уровень LOD после текущего загруженного LOD.
Cascade_Toolbar_HigherLOD.pngJump to Higher LOD ButtonКогда нажата кнопка Jump to Higher LOD, система будет установлена ​​на следующий доступный более высокий статический LOD, чем текущая настройка LOD.
Cascade_Toolbar_HighestLOD.pngJump to Highest LOD ButtonКогда нажата кнопка Jump to Highest LOD, система будет установлена ​​на самый высокий доступный статический LOD.
Cascade_Toolbar_DeleteLOD.pngDelete LOD ButtonКогда нажата кнопка Delete LOD, выбранный статический уровень LOD будет удален из системы частиц.

Создание уровней LOD в системе частиц

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

  • Создайте свой общий желаемый эффект. Это будет самый высокий уровень LOD.
  • Затем создайте самый низкий уровень LOD.
  • Добавьте любые другие уровни LOD между ними, чтобы создать плавный переход от самого высокого качества к самому низкому.
Модули можно добавлять / удалять только при редактировании на самом высоком уровне LOD.

В этом примере у нас есть один эмиттер SubUV. Он настроен таким образом, что координата SubUV 0 показывает номер 1, координата 1 показывает номер 2 и т.д. Приложенная текстура выглядит так:эмиттер SubUV ue4

Мы установили самый высокий уровень LOD

Высокий уровень LODВысокий уровень LOD ue4

Как только дизайнер почувствует, что система частиц готова к разработке LOD, он должен выбрать Regenerate Lowest LOD с панели инструментов. Это заставит систему восстановить самый низкий уровень LOD. (Это также удалит любые статические уровни LOD, которые были созданы в промежутке времени.) В настоящее время это просто дублирует самый высокий уровень LOD с более низкой скоростью появления.

Выбрав самый низкий уровень LOD, можно начать настройку значений, чтобы получить соответствующий вид. Следует отметить, что по умолчанию все модули на статическом уровне LOD отмечены как не редактируемые (un-editable). Это представлено модулем, показывающим мраморный фон.

Модули, просмотренные на самом высоком LODМодули, просмотренные на самом низком LOD
Модули на высоком LOD ue4 Модули на низком LOD ue4

Чтобы отредактировать модуль на статическом уровне LOD, он должен быть включен. Это делается щелчком правой кнопки мышки по модулю и выбором Duplicate from Higher из контекстного меню.

Доступные опции работают следующим образом:

ОпцияОписание
Duplicate from HigherВключает модуль для редактирования путем дублирования настроек следующего более высокого LOD.
Share from HigherВключает модуль для редактирования, разделяя настройки следующего более высокого LOD. Это означает, что редактирование будет автоматически редактировать другой модуль таким же образом.
Duplicate from HighestВключает модуль для редактирования путем дублирования настроек самого высокого LOD.

В нашем примере мы включили модуль индекса SubImage для редактирования и установили индекс в 3. Это приводит к тому, что эмиттер показывает желтый цвет 4 и показан ниже:

Самый низкий уровень LODСамый низкий уровень LOD ue4

Обратите внимание, что скорость спавна автоматически устанавливается на 10% от самого высокого уровня LOD.

Следующим шагом будет добавление статического LOD между максимальным и самым низким, при нажатии кнопки Add LOD before current (при условии, что вы все еще просматриваете самый низкий LOD). Модуль индекса SubImage включен и имеет индекс, равный 1. Это приводит к тому, что эмиттер показывает синий 2 , как показано ниже:

LOD Уровень 1

LOD Уровень 1 ue4То же самое было сделано для другого статического LOD между первым статическим LOD и самым низким LOD, нажав кнопку Add LOD after current и включив индексный модуль SubImage. Индекс SubImage был установлен на 2, в результате чего эмиттер отображал зеленый 3 , как показано ниже:

LOD Уровень 2

LOD Уровень 2 ue4LOD Method и настройки Distance

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

На следующем рисунке показано окно свойств нашего примера системы частиц:

Окно свойств LODDistances

Окно свойств LODDistances ue4В этом примере LOD 0 (самый высокий) будет использоваться, когда эмиттер находится от [0..1249] единиц от камеры. LOD 1 будет от [1250..1874], LOD2 от [1875..2499] и LOD3, когда расстояние больше 2500 единиц.

LODDistanceCheckTime используется для определения того, как часто (в секундах) каждый параметр ParticleSystemComponent, установленный в автоматический режим, будет выполнять проверку расстояния для определения LOD во время выполнения. В этом случае каждый экземпляр этой системы частиц на уровне будет выполнять свою дистанционную проверку каждую четверть секунды.

СвойствоОписание
LOD
LOD Distance Check TimeТак часто (в секундах) система должна выполнить дистанционную проверку, чтобы определить уровень LOD для использования. (Используется только тогда, когда для параметра LODMethod установлено значение – Automatic).
LOD MethodЭто перечисление указывает метод, который система должна использовать для выбора соответствующих уровней LOD. Доступны два метода:

МетодОписание
AutomaticУстанавливает уровень LOD на основе расстояния LOD и проверяет время автоматически.
DirectSetВ игре будет установлен уровень LOD для использования системой напрямую.
ActivateAutomaticLOD определяется, когда эффект порождается, исходя из параметров расстояния, определенных в LOD.
LODDistancesМассив расстояний для определения того, какой уровень LOD использовать. (Используется только тогда, когда для параметра LODMethod установлено значение – Automatic.) Эти цифры рекомендуют минимальное расстояние для уровня LOD. Например, рассмотрим систему с тремя уровнями LOD:

LODDistanceIndexЗначениеДиапазонвыбранный уровень LOD
00.00.0 – 2499.90 (наивысший)
12500.0

2500.0 – 4999.9

1
25000.05000.0 – далее2
LODSettingsМассив структур, определяющих конкретные настройки для каждого отдельного LOD. В настоящее время единственный параметр Lit определяет, принимает ли ParticleSystem свет, когда используется данный LOD.