XGRIDSДокументация
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel CyberColor

    • Руководство пользователя LCC Studio

      • Начало работы
      • Версия и обновления
      • Загрузка и установка
      • Обзор интерфейса и навигация
      • Перед реконструкцией
      • Реконструкция модели
      • Реконструкция одиночной модели
      • Объединение карт
      • Воздушно-наземное объединение
      • Воздушная реконструкция
      • Мои модели
      • Другие функции
      • Настройки и учётная запись
      • Конвертер
      • Реконструкция по видео
      • Часто задаваемые вопросы
    • LCC Scene Editor

      • Версия и обновления
      • Учётная запись и вход
      • Обзор продукта и главная страница
      • Интерфейс редактора
      • Режимы навигации по сцене
      • Файл
      • Настройки
      • Операции редактирования
      • Окно
      • Глобальная панель инструментов
      • Ресурсы и свойства
      • Левая панель инструментов
      • Точки обзора
      • Портал
      • Skybox
      • Аннотации
      • Измерение
      • Flythrough
      • Отчёт по сцене
      • 3D Layout
      • Мини-карта
      • Preview Mode (Viewer)
      • Справка
      • Часто задаваемые вопросы
      • Точка появления
    • LCC Model Editor

      • Версия и обновления
      • Руководство пользователя
      • Обзор и интерфейс
      • Операции с файлами
      • Инструменты выбора
      • Редактирование моделей
      • Измерение
      • Цветокоррекция
      • Управление ресурсами
      • Настройки и справка
      • Часто задаваемые вопросы
    • Рекомендации по применению

      • Объединение нескольких крупных моделей 3DGS
  • Plugin & SDK

    • Unreal

      • Введение
      • Быстрый старт — Windows
      • Быстрый старт — Linux
      • Быстрый старт — Quest3
      • Редакции и лицензирование
      • Рендеринг
      • Растеризация Tiled (экспериментально)
      • Визуальные настройки
      • Нормали и освещение
      • Редактирование сцены
      • Параметры производительности
      • Руководство по оптимизации производительности
      • Интеграция со сторонними и движковыми плагинами
      • Прокси-меш
      • Анимация загрузки
      • Коллизии
      • Поддержка системы навигации
      • Поддержка однослойной воды
      • Локализация
      • Частые вопросы
      • Устранение неполадок
      • Журналы и диагностика
      • Свяжитесь с нами
      • Рекомендуемые практики

        • Переосвещение 3DGS с помощью меша LixelStudio
        • Независимый рендеринг для каждой камеры
      • Справочник API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Журнал изменений

        • v3.5.0
        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Введение в Unity SDK
      • Технические возможности
      • Требования к среде разработки
      • Руководство по быстрому старту для PC
      • Руководство по оптимизации настроек проекта
      • Руководство по разработке для Pico 4 Ultra
      • Руководство по стримингу Pico 4 Ultra с PC
      • Руководство по разработке для Quest 3
      • Руководство по стримингу Quest 3 с PC
      • Руководство по разработке OpenXR
      • Руководство по бизнес-стримингу Pico 4 Ultra
      • Глоссарий
      • FAQ
      • Свяжитесь с нами
      • Руководство по разработке функций

        • Руководство по разработке смешанного рендеринга нескольких сцен
        • Руководство по разработке приёма теней
        • Руководство по разработке освещения в реальном времени
        • Руководство по разработке многокамерного рендеринга
        • Руководство по разработке рендеринга изображений высокого разрешения
        • Руководство по разработке совместимости форматов данных LCC и LCC2
        • Руководство по разработке эффекта загрузки
        • Руководство по разработке переключения режима рендеринга Mip
        • Руководство по разработке привязки к рёбрам и углам
        • Руководство по разработке проецируемых декалей
        • Руководство по разработке видеопроецируемой декали
        • Руководство по разработке подсветки
        • Руководство по разработке обрезки в реальном времени
        • Руководство по разработке коррекции цвета
        • Руководство по разработке получения данных Mesh сцены
        • Руководство по разработке в режиме редактора
        • Руководство по настройке параметров производительности рендеринга
        • Руководство по разработке совместной упаковки приложения и данных
        • Руководство по разработке системы коллизий
        • Руководство по проблемам с разрешениями при разработке на macOS
        • Руководство по разработке компиляции и упаковки для устройств iOS
      • Справочник по API

        • LCCManager
        • Renderer
        • Типы данных
      • Журнал изменений

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
  • API

    • Структурированное пространственное моделирование

      • Руководство по подключению
      • Процесс моделирования
      • Справочник по API
      • Временные учётные данные для загрузки
      • Коды ошибок

Enums: справочник перечислений

Перечисления, которые модуль LCC4UnrealRuntime предоставляет вне себя.

МодульLCC4UnrealRuntime
Заголовочный файлCore/LCCEnum.h
#include "Core/LCCEnum.h"

Перечисления с пометкой BlueprintType доступны в Blueprint напрямую: их можно подключить к узлу Switch и использовать как тип переменной.

Рендеринг

ERenderMode

Режим отображения. Используется в ULCCComponentBase::RenderMode.

ЗначениеОтображение в панелиОписание
Splatting3DGSОтображение как 3D гауссово splatting, качество высокое, затраты большие
PointCloudPoint CloudОтображение как облако точек, качество ниже, затраты меньше

Переход к облаку точек заметно снижает затраты и подходит для обзорных видов, мини-карт и дальнего плана, где детали не нужны. В режиме облака точек параметры, специфичные для 3DGS (сферические гармоники, SplatScale, GlobalAlpha), не действуют.

Связанные интерфейсы: SetRenderMode, ToggleRenderMode

ELoadMode

Режим фильтрации при загрузке. Используется в ULCCComponentBase::LoadMode.

ЗначениеОтображение в панелиОписание
BothBothРендерить основную часть и окружение
OnlyMainOnlyMainРендерить только основную часть
OnlyEnvironmentOnlyEnvironmentРендерить только окружение
NoneNoneНе рендерить ничего

Основная часть — это ключевая область съёмки, а окружение — дополнительные данные по периферии. None равносильно временному скрытию с сохранением данных в памяти, поэтому восстановление гораздо быстрее повторной загрузки.

Связанные интерфейсы: SetLoadMode

ELightMode

Режим освещения. Используется в ULCCComponentBase::LightMode.

ЗначениеОтображение в панелиОписание
UnlitUnlitНе подвержен освещению сцены, показывает исходный цвет со съёмки
LitLitУчаствует в освещении сцены и взаимодействует с динамическим светом

В данных съёмки освещение места уже запечено, поэтому переход к Lit добавляет ещё один слой и легко приводит к пересвету. Для LCC2 нужно вместе с этим понизить исходную яркость через LightingScale. Действует только в режиме 3DGS.

Связанные интерфейсы: SetLightMode, ToggleLightMode

EShadowMode

Режим теней.

ЗначениеОтображение в панелиОписание
NoneNoneТени не принимаются
StaticStaticПринимаются статические тени
DynamicDynamicПринимаются динамические тени

EColorationMode

Режим раскраски.

Способ раскраски в режиме отображения облаком точек. Используется в ULCCComponentBase::ColorationMode.

ЗначениеОтображение в панелиОписание
ElevationEvelationРаскраска по высоте, перекрывает исходный цвет
DataDataИспользуется RGB из самих данных

Elevation вместе с ElevationColorBottom и ElevationColorTop даёт визуализацию высоты рельефа; Data показывает реальные цвета объектов. Действует только при режиме отображения облаком точек, см. Настройку изображения — облако точек.

ELCC2NormalGenerationMode

Режим генерации нормалей в LCC2. Используется в ULCC2Component::NormalMode.

У данных 3DGS нет геометрических нормалей, а освещению нормали нужны. Первые три режима строят приближение, и только ProxyMesh даёт настоящие нормали.

ЗначениеОтображение в панелиНастоящая светотеньОписание
FixedFixedНетВся область 3DGS использует одну заданную пользователем мировую нормаль, по умолчанию направленную вверх. Яркость всей области равна dot(нормаль, направление света)
ViewFacingView FacingНетВся область обращена к камере и освещается равномерно
HemisphericalHemisphericalНетНормали, не зависящие от камеры, отображаются из положения на экране в фиксированную мировую полусферу
ProxyMeshProxy MeshДаНастоящие глубину и нормали даёт ALCC2ProxyMesh в сцене, а 3DGS отвечает только за цвет

Компромиссы режимов:

РежимДостоинстваНедостатки
FixedНет диагональных световых полос, полная стабильность при движении камеры, минимальные затратыСовсем нет объёмной светотени; когда свет приходит с обратной стороны нормали, вся область темнеет
ViewFacingНе требует настройки, нет диагональных световых полосНет объёмной светотени; при повороте камеры общая яркость плывёт
HemisphericalНет диагональных световых полос, стабильность при движении камеры, самый плавный переход при движении солнцаСветотень по-прежнему не настоящая; нужно подбирать NormalPole и NormalHemiSpread
ProxyMeshНастоящие геометрические нормали и глубинаНужно изготовить и разместить подходящий прокси-меш; требуется лицензия, без неё происходит откат к Fixed

Рекомендации по выбору: по умолчанию Fixed; для плавного движения солнца — Hemispherical; для настоящей объёмной светотени — ProxyMesh; ViewFacing подходит только для быстрой проверки результата.

Связанные страницы: ULCC2Component, ALCC2ProxyMesh

Обрезка и сечение

EClipType

Направление обрезки. Используется в ALCCClippingVolume::Mode.

ЗначениеОтображение в панелиОписание
InsideInsideОбрезается внутренняя часть объёма
OutsideOutsideОбрезается внешняя часть объёма

Inside применяют, чтобы вырезать проёмы и раскрыть оболочку; Outside — чтобы оставить только интересующую область.

EClipVolumeType

Форма объёма обрезки. Используется в ALCCClippingVolume::VolumeType.

ЗначениеОписание
BoxОбъём в форме бокса
SphereОбъём в форме сферы

ESectionType

Направление сечения. Используется в ALCCSectionPlane::Mode.

ЗначениеОтображение в панелиОписание
UpsideUpsideОтсекается то, что выше плоскости
DownsideDownsideОтсекается то, что ниже плоскости

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

ELoadRegion

Область загрузки. Используется в ALCCLoadVolume::Mode.

ЗначениеОтображение в панелиОписание
InsideInsideЗагружаются только данные внутри объёма
OutsideOutsideЗагружаются только данные вне объёма

Отличие от 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

Тип содержимого данных.

ЗначениеОтображение в панелиОписание
PortablePortableТолько RGB, без сферических гармоник
QualityQualityИ 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).

ЗначениеОтображение в панелиОписание
CircleCircleКруговой обход с центром в камере и радиусом, равным максимальной дистанции рендеринга
SectorFrustumОбход на основе пирамиды видимости камеры

Frustum обрабатывает только узлы в поле зрения и обычно экономнее, но при быстром повороте обзора узлы вне поля зрения не предзагружены, из-за чего возможна задержка их подгрузки.

Обрати внимание: имя элемента перечисления — Sector, а в панели отображается Frustum.

ESortMethod

Способ сортировки полупрозрачности. Используется для пункта Default Sort Method в настройках проекта.

ЗначениеОписание
GPUСортировка на GPU
CPUСортировка на CPU

Обычно используют GPU.

ESortMode

Порядок сортировки.

ЗначениеОписание
AscendingПо возрастанию
DescendingПо убыванию

EComputeType

Тип вычислительного конвейера.

ЗначениеОписание
ComputeCompute на графическом конвейере
AsyncComputeАсинхронный вычислительный конвейер

Текущая реализация использует Compute; у AsyncCompute есть проблемы с рендерингом, и он пока не включён.

Локализация

ELocale

Языковая среда. Тип возвращаемого значения ULCCUtilLibrary::GetLocale.

ЗначениеОписание
EN_USАнглийский
ZH_CNУпрощённый китайский

ELanguagePreference

Предпочтение языка интерфейса плагина. Используется для пункта Language в настройках проекта.

ЗначениеОтображение в панелиОписание
FollowEditorFollow EditorСледовать текущей языковой настройке редактора
AlwaysEnglishAlways 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: структуры, использующие эти перечисления