Типы данных: перечисления и структуры
Перечисления и структуры, предоставляемые 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 |
SingleRender | SDK автоматически выбирает путь рендеринга на основе размера данных |
Применимо только к платформам 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; // Количество граней
}
| Поле | Тип | Описание |
|---|---|---|
id | string | id узла, соответствует LCCMeshBlock.id |
boundsWorld | Bounds | AABB в мировом пространстве, используется для выбора id |
boundsLocal | Bounds | AABB в локальном пространстве |
vertexCount | int | Количество вершин |
faceCount | int | Количество граней |
LCCMeshBlock
Геометрические данные блока коллизионного Mesh. Возвращаются методом Renderer.GetMeshes().
public struct LCCMeshBlock {
public string id; // id узла
public Vector3[] vertices; // Вершины, в локальных координатах
public int[] triangles; // Индексы треугольников, по три на группу
public Bounds boundsLocal; // Ограничивающий параллелепипед в том же пространстве, что и вершины
}
| Поле | Тип | Описание |
|---|---|---|
id | string | id узла |
vertices | Vector3[] | Массив вершин, в локальной системе координат объекта |
triangles | int[] | Индексы треугольников, по три на группу |
boundsLocal | Bounds | Ограничивающий параллелепипед в том же пространстве, что и вершины |
vertices/boundsLocalнаходятся в локальной системе координат объекта; размещение GameObject, несущего Mesh, подRenderer.Transformвыравнивает их автоматически. Один блок может иметь более 65535 вершин, поэтому перед построением Mesh необходимо задатьmesh.indexFormat = IndexFormat.UInt32.