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.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

Типы данных: перечисления и структуры

Перечисления и структуры, предоставляемые LCC Unity SDK, используемые методами LCCManager и Renderer.

Перечисления

PlatformType

Целевая платформа выполнения. Используется методом SetPlatformType().

public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }

ActiveRenderMode

Глобальный режим архитектуры рендеринга. Используется методом SwitchRenderPass().

public enum ActiveRenderMode { MultiRender, SingleRender }
ЗначениеОписание
MultiRenderИспользует общий буфер GPU и может одновременно рендерить до 255 Renderer
SingleRenderSDK автоматически выбирает путь рендеринга на основе размера данных

Применимо только к платформам PC / Mac; платформы mobile / VR автоматически принимают адаптивную стратегию, а вызов SwitchRenderPass() отклоняется.

SourceType

Тип источника данных. Возвращается методом Renderer.GetSourceType().

public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }

DataType

Тип формата данных. Возвращается методом Renderer.GetDataType().

public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }

MipMode

Режим рендеринга Mip. Используется методом SetMipMode().

public enum MipMode { Mip, Non_Mip }
ЗначениеОписание
MipИспользует сэмплирование мипмапов (по умолчанию)
Non_MipОтключает мипмапы, с более тонкой детализацией рендеринга, но более высокими накладными расходами на производительность

SnapType

Тип привязки. Используется полями HitResult.snapType и SnapPreviewState.snapType.

public enum SnapType { None, Edge, Corner }

SelectionMode

Стратегия выбора узлов. Используется методом SetSelectionMode().

public enum SelectionMode { Auto, Normal, Large }
ЗначениеОписание
AutoРешается автоматически на основе общего ограничивающего параллелепипеда сцены (по умолчанию)
NormalПодходит для малых и средних сцен
LargeПодходит для очень больших сцен (более 1000 метров)

RenderMode

Режим рендеринга облака точек / 3DGS. Используется методом SwitchRenderMode().

public enum RenderMode { PointCloud, LCCGS }
ЗначениеОписание
PointCloudРендеринг облака точек
LCCGSРендеринг 3DGS

SelectMode

Режим взятия/исключения выделения. Используется данными выделения, такими как Data2D и Data3D.

public enum SelectMode { normal, invert, clip }

OperationMode

Режим булевых операций нескольких геометрий. Используется данными выделения, такими как Data3D и DataMix.

public enum OperationMode { normal = 0, erase = 1 }
ЗначениеОписание
normalОбъединение
eraseВычитание

EditType

Тип записи в смешанном выделении. Используется структурами DataMix и ToneMix.

public enum EditType { Edit2D, Edit3D }

ShapeType

Тип геометрии 3D-обрезки / подсветки. Используется структурами Data3D, DataMix и ToneMix.

public enum ShapeType { box, sphere }

Структуры

HitResult

Результат попадания рейкаста. Возвращается методами Raycast(), RaycastMesh() и RaycastWithSnap().

public struct HitResult {
    public bool isHit;             // Произошло ли попадание
    public float distance;         // Расстояние
    public Vector3 hitPos;         // Точка попадания в мировых координатах
    public Vector3 normal;         // Нормаль попадания
    public float hitAlpha;         // Альфа попавшего эллипсоида
    public float dist2Origin;      // Расстояние до начала луча
    public float scale;            // Масштаб эллипсоида
    public SnapType snapType;      // Тип привязки (нет / ребро / угол)
    public Vector3 originalHitPos; // Исходная точка попадания до привязки
}

Поле мировых координат точки попадания называется hitPos.

SnapPreviewState

Состояние предпросмотра привязки. Возвращается методом GetSnapPreviewState().

public struct SnapPreviewState {
    public bool hasTarget;          // Есть ли цель привязки
    public SnapType snapType;       // нет / ребро / угол
    public Vector2 screenPos;       // Экранные координаты цели привязки
    public float distanceToMouse;   // Расстояние в пикселях до позиции мыши
}

screenPos — в экранных координатах (пикселях), а не в мировых координатах. Когда нужны мировые координаты, используйте RaycastWithSnap() для получения HitResult.hitPos.

Data2D

Выделение проекцией 2D-текстуры. Используется для обрезки / подсветки 2D-текстурой.

public struct Data2D {
    public Texture2D texture;  // R8-текстура маски 1024x1024
    public Matrix4x4 mv;       // Матрица ModelView
    public Matrix4x4 mvp;      // Матрица ModelViewProjection
    public SelectMode mode;    // обычное / инверсия
}

Data3D

Выделение 3D-геометрией. Используется для обрезки / подсветки 3D-геометрией.

public struct Data3D {
    public ShapeType type;          // бокс / сфера
    public Matrix4x4 invMat;        // Обратная матрица преобразования геометрии
    public OperationMode operation; // normal=объединение, erase=вычитание
    public SelectMode mode;         // обычное / инверсия / обрезка
}

DataMix

Смешанное выделение 2D + 3D. Используется для обрезки / подсветки в смешанном режиме.

public struct DataMix {
    public EditType editType;       // Edit2D / Edit3D
    public ShapeType type;          // тип 3D-геометрии
    public Matrix4x4 invMat;        // обратная матрица преобразования 3D
    public Texture2D texture;       // 2D-текстура маски
    public Matrix4x4 mv;            // 2D ModelView
    public Matrix4x4 mvp;           // 2D MVP
    public OperationMode operation;
    public SelectMode mode;
}

ToneMix

Выделение тона, добавляющее параметры тона поверх DataMix. Используется методом SetTone().

public struct ToneMix {
    public EditType editType;       // Edit2D / Edit3D
    public ShapeType type;          // тип 3D-геометрии
    public Matrix4x4 invMat;        // обратная матрица преобразования 3D
    public Texture2D texture;       // 2D-текстура маски
    public Matrix4x4 mv;            // 2D ModelView
    public Matrix4x4 mvp;           // 2D MVP
    public OperationMode operation;
    public SelectMode mode;
    public float brightness;        // Яркость (по умолчанию 1.0)
    public float saturation;        // Насыщенность (по умолчанию 1.0)
    public float contrast;          // Контрастность (по умолчанию 1.0)
    public int lutid;               // Индекс LUT-фильтра (0 = не используется)
}

PointLightData

Данные пользовательского точечного / прожекторного источника света. Используются методом SetLights().

public struct PointLightData {
    public float3 position;    // Мировые координаты
    public int lightType;      // 0=точечный источник, 1=прожектор
    public float3 color;       // Цвет RGB (без компонента альфа)
    public float intensity;    // Интенсивность света
    public float3 direction;   // Направление прожектора (игнорируется для точечного источника)
    public float range;        // Дальность света
    public float spotAngle;    // Угол конуса прожектора (в градусах, игнорируется для точечного источника)
    public float3 pad;         // Выравнивающее заполнение, назначать не нужно
}

Тип поля — Unity.Mathematics.float3, а не Vector4; color не имеет компонента альфа. Когда lightType равен 0, это точечный источник света (direction / spotAngle игнорируются), а когда 1 — прожектор.

DecalOcclusionSettings

Параметры качества отсечения окклюзией декали. Используются методом SetDecalOcclusionSettings().

public struct DecalOcclusionSettings {
    public float opacityCutoff;   // Минимальная непрозрачность в [0,1] для участия сплата в карте глубины, по умолчанию 0 (участвуют все)
    public float depthBias;       // Относительный коэффициент допуска глубины, по умолчанию 0.05
    public int   footprintMaxPx;  // Максимальный квадратный радиус следа (px), 0~16, по умолчанию 2
    public int   resolution;      // Разрешение карты глубины (px, степень двойки, 256~4096), по умолчанию 1024

    public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
ПолеОписание
opacityCutoffТолько сплаты с непрозрачностью ≥ этого значения участвуют в карте глубины, что позволяет отфильтровать плавающие / туманные сплаты. По умолчанию 0 (участвуют все).
depthBiasОтносительный коэффициент допуска глубины, поглощающий толщину поверхности облака точек пропорционально расстоянию. По умолчанию 0.05. Слишком малое вызывает шум самоокклюзии; слишком большое пропускает окклюзии.
footprintMaxPxКонсервативный максимальный квадратный радиус следа (в пикселях), используемый для покрытия окрестности и предотвращения утечек проникновения. 0 — один тексель, диапазон 0~16, по умолчанию 2. Слишком большое вызывает расширение контура и избыточную окклюзию.
resolutionРазрешение карты глубины (пиксели, степень двойки, 256~4096). Его уменьшение заполняет разреженные дыры ценой чуть более грубых границ окклюзии. По умолчанию 1024.

SplatMeta

Метаданные данных 3DGS. Выводятся методом Renderer.GetMeta(), содержат метаданные, такие как источник данных (source) и формат данных (dataType), и могут быть прочитаны без полной загрузки данных.

LCCMeshBlockInfo

Метаданные блока коллизионного Mesh. Возвращаются методом Renderer.GetMeshBlockInfos().

public struct LCCMeshBlockInfo {
    public string id;           // id узла, соответствует LCCMeshBlock.id
    public Bounds boundsWorld;  // AABB в мировом пространстве, используется для выбора id
    public Bounds boundsLocal;  // AABB в локальном пространстве
    public int vertexCount;     // Количество вершин
    public int faceCount;       // Количество граней
}
ПолеТипОписание
idstringid узла, соответствует LCCMeshBlock.id
boundsWorldBoundsAABB в мировом пространстве, используется для выбора id
boundsLocalBoundsAABB в локальном пространстве
vertexCountintКоличество вершин
faceCountintКоличество граней

LCCMeshBlock

Геометрические данные блока коллизионного Mesh. Возвращаются методом Renderer.GetMeshes().

public struct LCCMeshBlock {
    public string id;           // id узла
    public Vector3[] vertices;  // Вершины, в локальных координатах
    public int[] triangles;     // Индексы треугольников, по три на группу
    public Bounds boundsLocal;  // Ограничивающий параллелепипед в том же пространстве, что и вершины
}
ПолеТипОписание
idstringid узла
verticesVector3[]Массив вершин, в локальной системе координат объекта
trianglesint[]Индексы треугольников, по три на группу
boundsLocalBoundsОграничивающий параллелепипед в том же пространстве, что и вершины

vertices / boundsLocal находятся в локальной системе координат объекта; размещение GameObject, несущего Mesh, под Renderer.Transform выравнивает их автоматически. Один блок может иметь более 65535 вершин, поэтому перед построением Mesh необходимо задать mesh.indexFormat = IndexFormat.UInt32.