数据类型:枚举与结构体
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 Buffer,可同时渲染最多 255 个 Renderer |
SingleRender | 由 SDK 根据数据量自动选择渲染路径 |
仅 PC / Mac 平台适用;移动端 / 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 | 使用 mipmap 采样(默认) |
Non_Mip | 禁用 mipmap,渲染细节更好但性能开销更高 |
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; // 被击中椭球的 Alpha
public float dist2Origin; // 到射线源的距离
public float scale; // 椭球 scale
public SnapType snapType; // 吸附类型(None / Edge / Corner)
public Vector3 originalHitPos; // 吸附前原始命中点
}
命中点世界坐标字段名为
hitPos。
SnapPreviewState
吸附预览状态。由 GetSnapPreviewState() 返回。
public struct SnapPreviewState {
public bool hasTarget; // 是否有吸附目标
public SnapType snapType; // None / Edge / Corner
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; // normal / invert
}
Data3D
3D 几何体选区。用于 3D 几何体裁切 / 高亮。
public struct Data3D {
public ShapeType type; // box / sphere
public Matrix4x4 invMat; // 几何体逆变换矩阵
public OperationMode operation; // normal=并集, erase=差集
public SelectMode mode; // normal / invert / clip
}
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 颜色(无 alpha 分量)
public float intensity; // 光照强度
public float3 direction; // 聚光灯朝向(点光源忽略)
public float range; // 光照范围
public float spotAngle; // 聚光灯锥角(度,点光源忽略)
public float3 pad; // 对齐填充,无需赋值
}
字段类型为
Unity.Mathematics.float3,不是Vector4;color不含 alpha 分量。lightType为0时是点光源(忽略direction/spotAngle),为1时是聚光灯。
DecalOcclusionSettings
贴花遮挡剔除质量参数。用于 SetDecalOcclusionSettings()。
public struct DecalOcclusionSettings {
public float opacityCutoff; // [0,1] splat 参与深度图的最低 opacity,默认 0(全部参与)
public float depthBias; // 相对深度容差比例,默认 0.05
public int footprintMaxPx; // 方形足迹半径上限(px),0~16,默认 2
public int resolution; // 深度图分辨率(px,2 的幂,256~4096),默认 1024
public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
| 字段 | 说明 |
|---|---|
opacityCutoff | 只有不透明度 ≥ 此值的 splat 参与深度图,可滤掉漂浮 / 雾状 splat。默认 0(全部参与)。 |
depthBias | 相对深度容差比例,按距离成比例吸收点云表面厚度。默认 0.05。过小会出现自遮挡噪点,过大会漏挡。 |
footprintMaxPx | 保守方形足迹半径上限(像素),用于盖满邻域、避免穿透漏染。0 为单纹素,范围 0~16,默认 2。过大会导致轮廓外扩、过遮挡。 |
resolution | 深度图分辨率(像素,2 的幂,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; // 三角形索引,每 3 个一组
public Bounds boundsLocal; // 与 vertices 同空间的包围盒
}
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 节点 id |
vertices | Vector3[] | 顶点数组,物体本地坐标系 |
triangles | int[] | 三角形索引,每 3 个一组 |
boundsLocal | Bounds | 与 vertices 同空间的包围盒 |
vertices/boundsLocal都在物体本地坐标系,把承载 Mesh 的 GameObject 挂到Renderer.Transform之下即可自动对齐。单块顶点数可超过 65535,自建 Mesh 前必须设置mesh.indexFormat = IndexFormat.UInt32。