Enums: справочник перечислений
Перечисления, которые модуль LCC4UnrealRuntime предоставляет вне себя.
| Модуль | LCC4UnrealRuntime |
| Заголовочный файл | Core/LCCEnum.h |
#include "Core/LCCEnum.h"
Перечисления с пометкой BlueprintType доступны в Blueprint напрямую: их можно подключить к узлу Switch и использовать как тип переменной.
Рендеринг
ERenderMode
Режим отображения. Используется в ULCCComponentBase::RenderMode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Splatting | 3DGS | Отображение как 3D гауссово splatting, качество высокое, затраты большие |
PointCloud | Point Cloud | Отображение как облако точек, качество ниже, затраты меньше |
Переход к облаку точек заметно снижает затраты и подходит для обзорных видов, мини-карт и дальнего плана, где детали не нужны. В режиме облака точек параметры, специфичные для 3DGS (сферические гармоники, SplatScale, GlobalAlpha), не действуют.
Связанные интерфейсы: SetRenderMode, ToggleRenderMode
ELoadMode
Режим фильтрации при загрузке. Используется в ULCCComponentBase::LoadMode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Both | Both | Рендерить основную часть и окружение |
OnlyMain | OnlyMain | Рендерить только основную часть |
OnlyEnvironment | OnlyEnvironment | Рендерить только окружение |
None | None | Не рендерить ничего |
Основная часть — это ключевая область съёмки, а окружение — дополнительные данные по периферии. None равносильно временному скрытию с сохранением данных в памяти, поэтому восстановление гораздо быстрее повторной загрузки.
Связанные интерфейсы: SetLoadMode
ELightMode
Режим освещения. Используется в ULCCComponentBase::LightMode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Unlit | Unlit | Не подвержен освещению сцены, показывает исходный цвет со съёмки |
Lit | Lit | Участвует в освещении сцены и взаимодействует с динамическим светом |
В данных съёмки освещение места уже запечено, поэтому переход к Lit добавляет ещё один слой и легко приводит к пересвету. Для LCC2 нужно вместе с этим понизить исходную яркость через LightingScale. Действует только в режиме 3DGS.
Связанные интерфейсы: SetLightMode, ToggleLightMode
EShadowMode
Режим теней.
| Значение | Отображение в панели | Описание |
|---|---|---|
None | None | Тени не принимаются |
Static | Static | Принимаются статические тени |
Dynamic | Dynamic | Принимаются динамические тени |
EColorationMode
Режим раскраски.
Способ раскраски в режиме отображения облаком точек. Используется в ULCCComponentBase::ColorationMode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Elevation | Evelation | Раскраска по высоте, перекрывает исходный цвет |
Data | Data | Используется RGB из самих данных |
Elevation вместе с ElevationColorBottom и ElevationColorTop даёт визуализацию высоты рельефа; Data показывает реальные цвета объектов. Действует только при режиме отображения облаком точек, см. Настройку изображения — облако точек.
ELCC2NormalGenerationMode
Режим генерации нормалей в LCC2. Используется в ULCC2Component::NormalMode.
У данных 3DGS нет геометрических нормалей, а освещению нормали нужны. Первые три режима строят приближение, и только ProxyMesh даёт настоящие нормали.
| Значение | Отображение в панели | Настоящая светотень | Описание |
|---|---|---|---|
Fixed | Fixed | Нет | Вся область 3DGS использует одну заданную пользователем мировую нормаль, по умолчанию направленную вверх. Яркость всей области равна dot(нормаль, направление света) |
ViewFacing | View Facing | Нет | Вся область обращена к камере и освещается равномерно |
Hemispherical | Hemispherical | Нет | Нормали, не зависящие от камеры, отображаются из положения на экране в фиксированную мировую полусферу |
ProxyMesh | Proxy Mesh | Да | Настоящие глубину и нормали даёт ALCC2ProxyMesh в сцене, а 3DGS отвечает только за цвет |
Компромиссы режимов:
| Режим | Достоинства | Недостатки |
|---|---|---|
Fixed | Нет диагональных световых полос, полная стабильность при движении камеры, минимальные затраты | Совсем нет объёмной светотени; когда свет приходит с обратной стороны нормали, вся область темнеет |
ViewFacing | Не требует настройки, нет диагональных световых полос | Нет объёмной светотени; при повороте камеры общая яркость плывёт |
Hemispherical | Нет диагональных световых полос, стабильность при движении камеры, самый плавный переход при движении солнца | Светотень по-прежнему не настоящая; нужно подбирать NormalPole и NormalHemiSpread |
ProxyMesh | Настоящие геометрические нормали и глубина | Нужно изготовить и разместить подходящий прокси-меш; требуется лицензия, без неё происходит откат к Fixed |
Рекомендации по выбору: по умолчанию Fixed; для плавного движения солнца — Hemispherical; для настоящей объёмной светотени — ProxyMesh; ViewFacing подходит только для быстрой проверки результата.
Связанные страницы: ULCC2Component, ALCC2ProxyMesh
Обрезка и сечение
EClipType
Направление обрезки. Используется в ALCCClippingVolume::Mode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Inside | Inside | Обрезается внутренняя часть объёма |
Outside | Outside | Обрезается внешняя часть объёма |
Inside применяют, чтобы вырезать проёмы и раскрыть оболочку; Outside — чтобы оставить только интересующую область.
EClipVolumeType
Форма объёма обрезки. Используется в ALCCClippingVolume::VolumeType.
| Значение | Описание |
|---|---|
Box | Объём в форме бокса |
Sphere | Объём в форме сферы |
ESectionType
Направление сечения. Используется в ALCCSectionPlane::Mode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Upside | Upside | Отсекается то, что выше плоскости |
Downside | Downside | Отсекается то, что ниже плоскости |
Верх и низ отсчитываются от собственной ориентации плоскости, а не от мировых координат. Поворот секущей плоскости даёт сечение в любом направлении.
ELoadRegion
Область загрузки. Используется в ALCCLoadVolume::Mode.
| Значение | Отображение в панели | Описание |
|---|---|---|
Inside | Inside | Загружаются только данные внутри объёма |
Outside | Outside | Загружаются только данные вне объёма |
Отличие от EClipType: здесь выбирается, какую часть загружать, а не какую обрезать. Отсеянные области вообще не читаются, поэтому объём загрузки и расход видеопамяти снижаются. Проверка идёт по узлам, поэтому граница грубее, чем у объёма обрезки.
ELoadVolumeType
Форма объёма загрузки. Используется в ALCCLoadVolume::VolumeType.
| Значение | Описание |
|---|---|
Box | Объём в форме бокса |
Sphere | Объём в форме сферы |
Связанные страницы: ALCCClippingVolume, ALCCSectionPlane, Объёмы загрузки
Данные и форматы
ELCCVersion
Версия данных.
| Значение | Описание |
|---|---|
LCC | Формат LCC1 |
LCC2 | Формат LCC2 |
Связанные интерфейсы: ULCCComponentBase::GetLccVersion
EFileFormat
Формат файла. Тип возвращаемого значения ULCCUtilLibrary::DetermineFileFormat.
| Значение | Соответствующее расширение |
|---|---|
None | Не распознано или путь не существует |
LCC | .lcc |
Splats | .splats |
LAS | .las |
PLY | .ply |
Обрати внимание, что охват распознавания у DetermineFileFormat ограничен: для .lcc2, .sog и .spz возвращается None. Эти форматы определяй прямо по расширению, подробнее см. DetermineFileFormat.
EDataSourceType
Формат источника данных дерева LCC2. Используется в FLCC2MetaInfo::SplatType.
| Значение | Описание |
|---|---|
SOG | Источник данных .sog |
SPZ | Источник данных .spz |
PLY | Источник данных .ply |
Это обычное перечисление C++ без пометки UENUM, в Blueprint оно не видно.
EFileType
Тип содержимого данных.
| Значение | Отображение в панели | Описание |
|---|---|---|
Portable | Portable | Только RGB, без сферических гармоник |
Quality | Quality | И RGB, и сферические гармоники |
У данных Portable сферических гармоник нет, поэтому bUseShcoef в этом случае недоступно для изменения. Метод CanSetShcoef() фактически лишь проверяет, равен ли тип Quality.
ELCCSourceType
Источник данных. Тип возвращаемого значения ULCCUtilLibrary::DetermineSourceType.
| Значение | Описание |
|---|---|
Local | Локальный файл |
Http | Сетевой адрес |
ECollisionType
Формат данных коллизий. Тип возвращаемого значения ULCCUtilLibrary::DetermineCollisionType.
| Значение | Описание |
|---|---|
None | Данных коллизий нет |
Bin | Старый формат .bin |
Lci | Новый формат .lci |
Ply | Коллизии из облака точек .ply |
Когда возвращается None, включение bEnableCollision не даёт эффекта.
ELoadStatus
Состояние загрузки.
| Значение | Описание |
|---|---|
Success | Успешно |
Failure | Неудачно |
Progress | Выполняется |
States
Перечисления состояний для запроса состояния и событий ULCCComponentBase, определённые в Core/LCCEventTypes.h.
Значения перечислений только добавляются, но не изменяются (Blueprint хранит их по значению), поэтому в последующих версиях могут появиться новые значения, и колбэки должны терпимо относиться к незнакомым им значениям.
ELCCLoadState
Состояние загрузки — от Load() до первого кадра. После Loaded данные продолжают поступать вокруг камеры, и состояние из-за этого не откатывается.
| Значение | Описание |
|---|---|
Unloaded | Модель не загружена |
Loading | Загрузка началась, bounds и метаинформация доступны для чтения, данные для вида загружаются потоково; смотрите прогресс через GetLoadProgress |
Loaded | Загрузка текущего вида завершена. Это не значит, что каждый блок данных прочитан верно: при неудачном чтении части данных сообщает OnLoadFailed, и модель может отображаться не полностью. Остаётся Loaded, пока модель не будет выгружена |
Failed | Прошлая загрузка не удалась, модели нет |
ELCCCollisionState
Состояние коллизий — от включения коллизий до готовности первой сетки коллизий. Коллизии загружаются вокруг камеры и поступают по мере движения; Loaded означает готовность коллизий рядом с камерой, а не наличие коллизий у всей модели.
| Значение | Описание |
|---|---|
NoCollision | Коллизии выключены или нет модели |
Generating | Только для одиночных моделей (PLY/SPZ/SOG): сетка коллизий генерируется из гауссиан, это занимает от нескольких секунд до нескольких минут; при наличии кеша шаг пропускается |
Loading | Сетка коллизий рядом с камерой загружается и проходит cook; пока в пределах дистанции загрузки нет данных коллизий, состояние остаётся Loading |
Loaded | Коллизии рядом с камерой готовы впервые, близкие объекты больше не проходят насквозь; остаётся Loaded, пока коллизии продолжают поступать при движении камеры |
Failed | Коллизии включены, но предоставить их нельзя: нет данных коллизий, нет лицензии на генерацию или генерация не удалась. См. Output Log; выключите и снова включите, чтобы повторить |
ELCCLoadAnimationState
Состояние анимации загрузки (bEnableAnimation). Анимация отсчитывается по времени загрузки и не ждёт данных: Finished означает, что анимация проигралась, а не что модель полна на экране.
| Значение | Описание |
|---|---|
NoAnimation | Анимация выключена или нет модели |
Playing | Анимация загрузки воспроизводится; Load / Refresh / SetEnableAnimation начинают её заново |
Finished | Анимация проиграна и окружение появилось. В прямом направлении — модель отображается полностью, в обратном — уже исчезла. При повторе из-за смены настроек анимации возвращается в Playing |
ELCCLoadError
Причина сбоя загрузки, используется в FLCCLoadFailure::Error.
| Значение | Описание |
|---|---|
None | Ошибок нет |
FileNotFound | Файл, переданный в Load, не найден (для модели .lcc это также соседние data.bin / index.bin). Ничего не загружено, уже загруженная модель сохраняется. Проверьте путь |
InvalidData | Файл найден, но повреждён, в нём не хватает файлов данных или это не читаемая плагином модель. Либо ничего не загружено (GetLoadState — Failed), либо модель загружена, но часть данных прочитать не удалось и она отображается не полностью (GetLoadState — Loading или Loaded). Подробности в Message и Output Log |
Производительность и планирование
ETraversalType
Способ обхода узлов. Используется для пункта Default Traversal Type в настройках проекта (Project Settings → Plugins → LCC4Unreal).
| Значение | Отображение в панели | Описание |
|---|---|---|
Circle | Circle | Круговой обход с центром в камере и радиусом, равным максимальной дистанции рендеринга |
Sector | Frustum | Обход на основе пирамиды видимости камеры |
Frustum обрабатывает только узлы в поле зрения и обычно экономнее, но при быстром повороте обзора узлы вне поля зрения не предзагружены, из-за чего возможна задержка их подгрузки.
Обрати внимание: имя элемента перечисления — Sector, а в панели отображается Frustum.
ESortMethod
Способ сортировки полупрозрачности. Используется для пункта Default Sort Method в настройках проекта.
| Значение | Описание |
|---|---|
GPU | Сортировка на GPU |
CPU | Сортировка на CPU |
Обычно используют GPU.
ESortMode
Порядок сортировки.
| Значение | Описание |
|---|---|
Ascending | По возрастанию |
Descending | По убыванию |
EComputeType
Тип вычислительного конвейера.
| Значение | Описание |
|---|---|
Compute | Compute на графическом конвейере |
AsyncCompute | Асинхронный вычислительный конвейер |
Текущая реализация использует Compute; у AsyncCompute есть проблемы с рендерингом, и он пока не включён.
Локализация
ELocale
Языковая среда. Тип возвращаемого значения ULCCUtilLibrary::GetLocale.
| Значение | Описание |
|---|---|
EN_US | Английский |
ZH_CN | Упрощённый китайский |
ELanguagePreference
Предпочтение языка интерфейса плагина. Используется для пункта Language в настройках проекта.
| Значение | Отображение в панели | Описание |
|---|---|---|
FollowEditor | Follow Editor | Следовать текущей языковой настройке редактора |
AlwaysEnglish | Always English | Всегда английский, независимо от языка редактора |
Использование перечислений в Blueprint
В Blueprint по перечислению можно ветвиться узлом Switch:
[Get Render Mode]
Target = (LCC Component)
│ Return Value ──┐
▼ │
[Switch on ERenderMode] ◀┘
│ Splatting ──▶ (3DGS branch logic)
│ Point Cloud ─▶ (point cloud branch logic)
Можно и сравнивать напрямую:
[Get Effective Normal Generation Mode]
│ Return Value ──┐
▼ │
[Equal (Enum)] ◀─────────┘
A = (Return Value)
B = Proxy Mesh
│
▼
[Branch]
Смотрите также
- ULCCComponentBase: применение
ERenderMode,ELoadMode,ELightMode - ULCC2Component: применение
ELCC2NormalGenerationMode - ULCCUtilLibrary: вспомогательные функции, возвращающие перечисления форматов
- Structs: структуры, использующие эти перечисления