XGRIDS文档
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 灵视 P 系列

    • 灵视 P1

      • 产品概述
      • 设备基本操作
      • 使用 LCC Scan App
      • 维护及保养
      • 常见问题
  • 灵光 K 系列

    • 灵光 K1

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 地图融合
      • 典型场景路线规划建议
      • 注意事项
      • 常见问题
    • 灵光 K2

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 地图融合
      • 典型场景路线规划建议
      • 注意事项
      • 常见问题
  • 灵光 L 系列

    • 灵光 L2 Pro

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 实时测量功能
      • 附录
      • 常见问题
    • 灵光 L3

      • 产品概述
      • 设备基本功能
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据操作流程
      • 附录
  • 配件

    • 补光灯

      • 安装指导
      • 基本操作
      • 常见问题
  • Lixel Studio

    • 版权
    • 安装与激活
    • 界面说明
    • 文件
    • 工程处理
    • 工具
    • 平面绘制
    • 行业应用
    • 设置
    • 设备感知
    • 常见问题 / FAQ
  • Lixel CyberColor

    • LCC Studio

      • 入门
      • 版本与更新
      • 下载与安装
      • 界面概览与导航
      • 重建前工作
      • 模型重建
      • 单模型重建
      • 地图融合
      • 空地融合
      • 航拍重建
      • 我的模型
      • 其他功能
      • 设置与账号
      • 转换工具
      • 视频重建
      • 常见问题 / FAQ
    • LCC Scene Editor

      • 版本与更新
      • 账号与登录
      • 产品概览与主页
      • 编辑器界面介绍
      • 三种场景漫游快捷操作
      • 文件
      • 设置
      • 编辑操作
      • 窗口
      • 视图工具栏
      • 资产与属性
      • 左侧工具栏
      • 视点
      • 跳转点
      • 天空盒
      • 标注
      • 测量
      • 场景漫游
      • 场景报告
      • 智能户型图(3D Layout)
      • 小地图
      • 预览模式(Viewer)
      • 帮助
      • 常见问题 / FAQ
      • 出生点
    • LCC Model Editor

      • 版本与更新
      • 新手指引
      • 概览与界面
      • 文件操作
      • 选择器
      • 编辑操作
      • 测量
      • 调色
      • 资产管理
      • 设置与帮助
      • 常见问题 / FAQ
    • 采集指南

      • 概述
      • 采集设备总览
      • 通用采集原则
      • 室内场景采集
      • 室外场景采集
      • 大场景采集(地图融合)
      • 空地融合采集
      • 物体采集
      • 人物采集
      • 视频重建采集
      • 高清补拍
      • 控制点(灵视 P1)
      • 常见问题与排查
    • LCC Studio Linux

      • 产品概要说明
      • 基本架构说明书
      • 安装部署说明书
      • 容器启动参数说明书
      • CodeMeter离线授权部署说明书
      • API指令集说明书
      • 附录-开发者数据说明书
      • 附录-错误码列表
      • 单机多卡集群部署QuickStart
    • 使用技巧

      • 多个大型 3DGS 模型融合工作流
    • 历史版本
  • Plugin & SDK

    • Unreal

      • 介绍
      • 快速入门 - Windows
      • 快速入门 - Linux
      • 快速入门 - Quest3
      • 版本与授权
      • 渲染
      • Tiled 光栅化(实验性)
      • 画面调节
      • 法线与光照
      • 场景编辑
      • 性能参数说明
      • 性能优化指南
      • 第三方与引擎插件集成
      • 代理网格
      • 加载动画
      • 碰撞
      • 寻路系统支持
      • 单层水支持
      • 本地化
      • 常见问题
      • 故障排查
      • 日志与诊断
      • 联系我们
      • 最佳实践

        • 用 LixelStudio 网格为 3DGS 重打光
      • API 参考

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • 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 企业串流指南
      • 术语表
      • 常见问题
      • 联系我们
      • 功能开发指南

        • 多场景混合渲染开发指南
        • 阴影接收开发指南
        • 实时光照开发指南
        • 多相机渲染开发指南
        • 高清图像渲染开发指南
        • LCC 与 LCC2 数据格式兼容开发指南
        • 加载特效开发指南
        • Mip 渲染模式切换开发指南
        • 边角点吸附开发指南
        • 投影贴花开发指南
        • 视频流投影开发指南
        • 高亮显示开发指南
        • 实时裁剪开发指南
        • 调色开发指南
        • 获取场景 Mesh 数据开发指南
        • 编辑器模式开发指南
        • 渲染性能参数设置指南
        • 应用与数据协同打包开发指南
        • 碰撞系统开发指南
        • macOS 开发权限问题操作指南
        • iOS 设备编译打包开发指南
      • API 参考

        • LCCManager
        • Renderer
        • 数据类型
      • 更新日志

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • X-Brain

      • 产品概述
      • 硬件接口
      • 快速开始
      • 核心概念
      • 集成指南
      • API 参考
      • 数据类型
      • ROS2 桥接
      • 示例程序
      • 部署与网络
      • 排障与 FAQ
      • 版本与发布
    • Web

      • 介绍
      • 渲染性能优化指南
      • 显卡配置
      • 常见开发问题
      • API参考

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • 更新日志

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0
    • Lixel OpenAPI

      • 概述
      • 连接与鉴权
      • 消息模型与编解码
      • 接口清单
      • 实时数据
      • 项目文件访问
      • 错误码
      • Python

        • 快速开始
        • 客户端封装与工具
        • 常见问题
      • C++

        • 快速开始
        • 客户端与示例
        • 常见问题

Renderer:渲染实例

LCC 渲染实例,负责单个 3DGS 场景的数据加载与渲染控制。通过 LCCManager.GetRender() 创建,不可直接实例化。

命名空间LCCCore

属性

属性类型访问说明
TransformTransform只读渲染实例挂载的 Transform 组件
IsEnablebool只读渲染实例是否处于激活状态,默认 true
IsRenderAllbool只读是否正在全量渲染 LOD0 数据(相对于流式 / LOD 遍历模式),默认 false

方法

方法按用途分为以下两组:

  • 数据加载与生命周期
  • 运行时控制与查询

数据加载与生命周期

Load

public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)

加载 3DGS 数据文件。支持 .lcc2(本地文件或 HTTP 远程)以及原生格式 .ply / .sog / .spz / .splat / .ksplat(仅本地文件)。

参数类型说明
_filePathstring数据文件路径(本地路径或 HTTP URL)
_onProgressAction<float>加载进度回调,可为 null
_onCompleteAction加载完成回调,可为 null
_onErrorAction<string>加载失败回调(可选),参数为错误描述

说明:

  • 完成回调 _onComplete 在数据真正落 GPU 后触发。
  • 阴影接收、特效触发等操作需在 _onComplete 回调中调用。
  • 原生格式固定走 SingleRender 全量加载路径(无 LOD 分块),进度经 _onProgress 上报、失败经 _onError 回调。
  • MultiRender 模式不允许 HTTP 数据源,也不允许原生格式。
  • HTTP 仅支持 .lcc2;原生格式仅本地路径、仅 SingleRender 模式。
  • 必须先完成 SetPlatformType() / SwitchRenderPass() / SetMainCamera() 等前置配置。
  • 重新 Load 前必须先调用 Unload() 或 Dispose();加载进行中再次 Load 会被拒绝并触发 _onError。

调用示例:

renderer.Load("D:/data/scene.lcc2",
    p => Debug.Log($"Loading {p:P0}"),
    () => {
        Debug.Log("Load complete");
        lccManager.SetShadowReceive(true);
    });

Unload

public void Unload()

释放当前已加载数据,回到「已创建未加载」状态,保留实例的管理器注册。可反复 Load → Unload → Load 循环复用同一个 Renderer 实例。

说明:

  • 与 Dispose() 的差异:不移除管理器注册,实例可继续复用。
  • Unload() 后 IsEnable 为 false,再次 Load() 会重置所有数据状态。
  • 仅在数据已加载完成时执行;未加载或已 Dispose() 时直接返回。

调用示例:

renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Reloaded"));

Dispose

public void Dispose()

销毁渲染实例,释放所有 GPU 资源和内存。销毁后实例不可再使用,所有公共方法自动失效。

说明:

  • 调用后自动通知 LCCManager 移除引用。

调用示例:

renderer.Dispose();
renderer = null;

运行时控制与查询

SetEnable

public void SetEnable(bool _enable)

设置渲染实例的激活状态。禁用后不参与渲染和 LOD 选择。

参数类型说明
_enablebool是否激活

说明:

  • 不释放资源,可随时重新激活。

调用示例:

renderer.SetEnable(false); // 隐藏
renderer.SetEnable(true);  // 显示

SetAlpha

public void SetAlpha(float alpha)

设置当前 Renderer 独立的透明度。区别于 LCCManager.SetAlpha() 的进程级全局 alpha,本接口只影响当前 Renderer。最终 alpha = splat 覆盖率 × LCCManager 全局 alpha × 本 Renderer alpha。

参数类型说明
alphafloat当前 Renderer 独立透明度,范围 [0, 1],超出自动钳制

说明:

  • 仅在 MultiRender / RenderCore 路径(PC / Mac)生效;该路径下每个 splat 携带 renderID,shader 按 renderID 索引 per-Renderer alpha 数组。
  • FullRender / Mobile 路径无 renderID,本接口对其为 no-op(值已缓存,后续切入 RenderCore 路径会自动应用)。

调用示例:

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

设置是否使用全量渲染模式(全量渲染 LOD0 数据)。设置后在下次 Load() 调用时生效,不影响当前已加载的数据集。

参数类型说明
_renderAllbool是否全量渲染

说明:

  • 仅 PC / Mac 平台支持,移动端 / VR 调用无效。
  • 配合 IsRenderAll 属性查询当前状态。

调用示例:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Full loaded"));

SetColliderEnable

// 返回值:bool,true=设置成功,false=数据不含碰撞体或实例未激活
public bool SetColliderEnable(bool _enable)

开关碰撞体功能。启用后 IntersectsSphere() / IntersectsCapsule() 和 RaycastMesh() 可用。

参数类型说明
_enablebool是否启用碰撞体

说明:

  • 数据必须包含 Collider 节点,否则返回 false。
  • 需要 Renderer 处于激活状态。

调用示例:

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("数据不含碰撞体");

SetEnvironment

public void SetEnvironment(bool _env)

开关环境数据渲染。环境数据为低精度背景点云,用于填充远景。

参数类型说明
_envbool是否渲染环境数据

说明:

  • 数据需包含环境节点。
  • 环境数据独立于主数据的 LOD 系统。

调用示例:

renderer.SetEnvironment(true);

GetBounds

public void GetBounds(out Vector3 max, out Vector3 min)

获取渲染数据的轴对齐包围盒(世界坐标)。

参数类型说明
maxout Vector3包围盒最大点(世界坐标)
minout Vector3包围盒最小点(世界坐标)

说明:

  • 数据未加载完成时返回 Vector3.zero。
  • 可用于相机定位和视角计算。

调用示例:

renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;

GetSourceType

// 返回值:SourceType
public SourceType GetSourceType()

获取已加载数据的来源类型,取值见 SourceType。

说明:

  • 数据未加载时返回 SourceType.None。

GetDataType

// 返回值:DataType
public DataType GetDataType()

获取已加载数据的格式类型,取值见 DataType。

说明:

  • 数据未加载时返回 DataType.None。

GetMeta(从文件路径)

// 返回值:bool,true=读取成功
public bool GetMeta(string _filePath, out SplatMeta _metaData)

从指定文件路径读取 3DGS 数据的元信息,无需完整加载数据。

参数类型说明
_filePathstring数据文件路径
_metaDataout SplatMeta输出的元数据

说明:

  • 支持本地路径和 HTTP URL。
  • 仅读取文件头部元信息,不加载点云数据。
  • 路径为空或文件不存在时返回 false。

调用示例:

if (renderer.GetMeta(filePath, out SplatMeta meta))
{
    Debug.Log(meta.source);
    Debug.Log(meta.dataType);
}

GetMeta(从已加载数据)

// 返回值:bool,true=读取成功
public bool GetMeta(out SplatMeta _metaData)

获取当前已加载数据的元信息。若数据尚未加载完成,则尝试从文件路径读取。

参数类型说明
_metaDataout SplatMeta输出的元数据

调用示例:

if (renderer.GetMeta(out SplatMeta meta))
{
    Debug.Log(meta.source);
}

GetMeshBlockInfos

// 返回值:List<LCCMeshBlockInfo>,碰撞 Mesh 分块元信息;无 Mesh 或不可用时返回 null
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

返回全部碰撞 Mesh 分块的元信息(id、世界 / 本地包围盒、顶点数、面数)。零 I/O、零解析,只读内存中已有的 meta。字段见 LCCMeshBlockInfo。

说明:

  • 仅 PC / Mac 平台 + 本地数据源;只能主线程调用。
  • 典型用法:先用它拿各块世界 BBox,挑出需要的 id,再调 GetMeshes(ids) 只读那几块。
  • 原生格式(PLY / SOG / SPZ / splat / ksplat)无 Mesh,返回 null(属正常情况,不打日志)。

调用示例:

var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
    Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}

GetMeshes

// 返回值:List<LCCMeshBlock>,全部碰撞 Mesh 几何数据;不可用时返回 null
public List<LCCMeshBlock> GetMeshes()

同步返回全部碰撞 Mesh 分块的几何数据(顶点 + 三角形索引,本地坐标系)。这是重操作(同步读盘 + 解析 + 分配),请调用一次并自行缓存,切勿每帧调用。字段见 LCCMeshBlock。

说明:

  • 仅 PC / Mac 平台 + 本地数据源;只能主线程调用。
  • 大场景请改用 GetMeshBlockInfos() 挑 id + GetMeshes(ids),避免一次性分配海量托管内存。
  • 单块顶点数可超 65535,自建 Mesh 前必须设 mesh.indexFormat = IndexFormat.UInt32。

调用示例:

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles 在物体本地坐标系
}

GetMeshes(按 id)

// 返回值:List<LCCMeshBlock>,指定 id 的碰撞 Mesh 几何数据;无命中时返回 null
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

同步返回指定 id 的碰撞 Mesh 分块几何数据(本地坐标系)。id 由 GetMeshBlockInfos() 提供。

参数类型说明
_idsIEnumerable<string>目标分块 id 集合(由 GetMeshBlockInfos() 提供)

说明:

  • 未知 id 跳过并告警;重复 id 去重(不重复读盘);返回顺序为 ids 的遍历顺序(去重后)。
  • 入参为 null、为空、或无一命中时返回 null 并告警。
  • 其余约束同 GetMeshes()。

调用示例:

var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);