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

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

Quest 3 开发指南

Quest 3 的 LCC 开发流程与 Meta 官方创建 VR 项目略有不同:Meta 官方对 Unity 配置的修改会导致 LCC 渲染无法与其开发文档中的推荐流程兼容。Meta 官方流程见 Set up Unity for XR development。本指南在其基础上,说明如何接入 LCC Unity SDK 渲染 3DGS 场景。

版本要求

本指南使用的软件及插件版本如下,建议使用相同版本开发,其他未经测试的版本可能存在兼容问题:

软件 / 插件版本
Unityv6000.0.69f1
Meta XR All-in-One SDKv205.0.0
LCC Unity SDKv2.1.35 及以上

注意:

  1. Meta SDK 只支持 URP 的 Linear 线性颜色空间,LCC 场景在此颜色空间下渲染颜色会略微发白。
  2. Unity 版本、Meta SDK 版本、LCC SDK 版本均会影响渲染与性能,请尽量保持各软件版本与本指南一致。

开发流程

步骤 1:创建 URP 工程

在工程模板中选择 Universal 3D,如下图所示:

创建 Universal 3D(URP)工程

创建 Universal 3D(URP)工程

步骤 2:切换平台

工程创建完成后,在 Unity 菜单中选择 File → Build Profiles 打开应用构建窗口,将平台切换为 Android,如下图所示:

在 Build Profiles 中将平台切换为 Android

在 Build Profiles 中将平台切换为 Android

步骤 3:导入 Unity OpenXR

通过 Unity 菜单 Window → Package Manager 打开 UPM 窗口,在左侧列表中选择 Unity Registry,在搜索框中输入 OpenXR,从检索列表中选择 OpenXR Plugin 并安装,如下图所示:

从 Unity Registry 安装 OpenXR Plugin

从 Unity Registry 安装 OpenXR Plugin

步骤 4:导入 XR Interaction Toolkit

在左侧列表中选择 Unity Registry,在搜索框中输入 XR,从检索列表中选择 XR Interaction Toolkit 并安装,如下图所示:

从 Unity Registry 安装 XR Interaction Toolkit

从 Unity Registry 安装 XR Interaction Toolkit

步骤 5:导入 Meta XR All-in-One SDK

Meta XR All-in-One SDK 是 Meta 的 XR 开发工具包,详见 Meta XR All-in-One SDK (UPM)。

使用该 SDK 前,需先在 Unity Asset Store 将其添加到个人资产:https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657。然后通过 Window → Package Manager 打开 UPM,选择左侧 My Assets,在检索框中输入 Meta XR,安装 Meta XR All-in-One SDK,如下图所示:

从 My Assets 安装 Meta XR All-in-One SDK

从 My Assets 安装 Meta XR All-in-One SDK

步骤 6:导入 LCC Unity SDK

通过 Unity 菜单 Window → Package Manager 打开 UPM 窗口,单击左侧 +,在下拉菜单中选择 Install package from disk,定位到 LCC Unity SDK,选择 package.json 文件导入,如下图所示:

通过 Install package from disk 导入 LCC Unity SDK

通过 Install package from disk 导入 LCC Unity SDK

完成以上步骤后,请重启 Unity,再进行后续设置操作。

步骤 7:设置 Unity 环境

配置 XR Plug-in Management

在 Unity 菜单栏中选择 File → Project Settings,在左侧选择 XR Plug-in Management,在 Desktop 平台和 Android 平台下均勾选 Initialize XR on Startup,如下图所示:

在 Desktop 平台勾选 Initialize XR on Startup

在 Desktop 平台勾选 Initialize XR on Startup

在 Android 平台勾选 Initialize XR on Startup

在 Android 平台勾选 Initialize XR on Startup

选择 XR Plug-in Management 下的 OpenXR 项,将 Desktop 和 Android 平台的 Render Mode 均设为 Multi-pass,如下图所示:

将 OpenXR 的 Render Mode 设为 Multi-pass

将 OpenXR 的 Render Mode 设为 Multi-pass

注意:Meta XR All-in-One SDK 会修改 Render Mode 的值,请在打包前确保该值为 Multi-pass。

设置 Player(Desktop 平台)

在 Project Settings 左侧选中 Player,切换到 Desktop 平台,展开 Other Settings 卷展栏,取消勾选 Auto Graphics API,将 Graphics APIs 设为 Vulkan、Direct3D12、Direct3D11,并移除其它图形 API;将 Color Space 设为 Linear,如下图所示:

Desktop 平台设置图形 API 与 Linear 颜色空间

Desktop 平台设置图形 API 与 Linear 颜色空间

设置 Player(Android 平台)

在 Project Settings 左侧选中 Player,切换到 Android 平台,展开 Other Settings 卷展栏,取消勾选 Auto Graphics API,将 Graphics APIs 设为 Vulkan,并移除其它图形 API;将 Color Space 设为 Linear(Meta SDK 只支持 Linear 线性颜色空间),如下图所示:

Android 平台设置图形 API 为 Vulkan 与 Linear 颜色空间

Android 平台设置图形 API 为 Vulkan 与 Linear 颜色空间

设置公司名与产品名

在 Player 选项卡中,正确设置 Company Name 和 Product Name,如下图所示:

设置 Company Name 与 Product Name

设置 Company Name 与 Product Name

设置 Android 平台脚本后端与输入

在 Android 平台的 Other Settings 选项卡中向下滑动,设置 Minimum API Level = Android 12L (API Level 32) 及以上、Scripting Backend = IL2CPP、Target Architectures = ARM64、Active Input Handling = Input System Package (New),如下图所示:

设置 Minimum API Level、Scripting Backend、Target Architectures 与 Active Input Handling

设置 Minimum API Level、Scripting Backend、Target Architectures 与 Active Input Handling

检查 Graphics 与 Quality

在 Project Settings 左侧选中 Graphics 项,查看 Mobile 平台所使用的 Default Render Pipeline 对应的 Render Asset,本示例中为 Mobile_RPAsset,如下图所示:

查看 Mobile 平台的 Default Render Pipeline Render Asset

查看 Mobile 平台的 Default Render Pipeline Render Asset

在 Project Settings 左侧选中 Quality 项,查看 Mobile 平台所使用的 Default Render Pipeline 对应的 Render Asset(本示例中为 Mobile_RPAsset),设置 Resolution Scaling Fixed DPI Factor = 0.7、VSync Count = Don't Sync,如下图所示:

在 Quality 中设置 DPI Factor 与垂直同步

在 Quality 中设置 DPI Factor 与垂直同步

配置 Render Asset

找到 Mobile 平台所使用的 Default Render Pipeline 对应的 Render Asset(本示例中为 Mobile_RPAsset),点击后在工程窗口(Project)会定位到该 Asset,选中该 Asset,然后在属性窗口(Inspector)中:取消勾选 Depth Texture、Opaque Texture、HDR,设置 Anti Aliasing (MSAA) = Disabled、Render Scale = 0.7、Upscaling Filter = Automatic,如下图所示:

在 Render Asset 中关闭 Depth/Opaque Texture、HDR、MSAA 并设置超分

在 Render Asset 中关闭 Depth/Opaque Texture、HDR、MSAA 并设置 Render Scale = 0.7

找到该 Render Asset 的配套 Renderer,本示例中为 Mobile_Renderer(Universal Renderer Data),在属性窗口(Inspector)中设置其相关属性,如下图所示:

配置 Mobile_Renderer(Universal Renderer Data)属性

配置 Mobile_Renderer(Universal Renderer Data)属性

Project Validation

在 Project Settings 左侧选中 XR Plug-in Management,选择 Project Validation。需要修复标红的验证项——点击每个标红项右侧的 Fix 按钮进行修复;标黄的 warning 项可按需修复,也可暂不处理。处理前如下图所示:

Project Validation 处理前(存在标红验证项)

Project Validation 处理前(存在标红验证项)

处理后如下图所示:

Project Validation 处理后(标红项已修复)

Project Validation 处理后(标红项已修复)

步骤 8:创建场景

本示例从一个全新的场景(Scene)开始。创建 Unity 场景后,在层级窗口(Hierarchy)中删除 Main Camera 游戏对象,然后在窗口空白处单击鼠标右键,在弹出菜单中选择 XR → XR Origin (VR),如下图所示:

通过右键菜单创建 XR Origin (VR)

通过右键菜单创建 XR Origin (VR)

步骤 9:配置场景

在层级窗口(Hierarchy)中选中 XR Origin (VR) 游戏对象,在属性窗口(Inspector)的 XR Origin 组件中,将 Tracking Origin Mode 设为 Floor,如下图所示:

将 XR Origin 的 Tracking Origin Mode 设为 Floor

将 XR Origin 的 Tracking Origin Mode 设为 Floor

在层级窗口(Hierarchy)中选中 XR Origin (VR) 下的 Main Camera 游戏对象,在属性窗口(Inspector)中设置 Camera 各属性:

属性推荐值说明
Field of View60FOV
Clipping Planes → Near0.2 ~ 0.3近裁剪面
Clipping Planes → Far3000 ~ 5000远裁剪面,覆盖大范围场景
Anti-aliasingNo Anti-aliasing默认关闭抗锯齿
Opaque TextureOff默认关闭
Depth TextureOff默认关闭
Background TypeSolid Color建议设为纯色
Background黑色默认背景色建议设为黑色
HDR RenderingOff默认关闭
MSAAOff默认关闭
URP Dynamic ResolutionOff默认关闭

其他属性如下图所示:

设置 XR Origin (VR) 下 Main Camera 的 Camera 组件属性

设置 XR Origin (VR) 下 Main Camera 的 Camera 组件属性

步骤 10:编写代码,加载场景

在层级窗口(Hierarchy)中右键 Create Empty 创建一个空对象,命名为 LCCManager,将其 Transform 归一,并为其挂载 LCCManager 脚本,如下图所示:

创建 LCCManager 空对象并挂载 LCCManager 脚本

创建 LCCManager 空对象并挂载 LCCManager 脚本

在层级窗口(Hierarchy)中右键 Create Empty 创建另一个空对象,命名为 LCCRenderer,将其 Transform 设置 Rotation.x = -90、Scale.x = -1,如下图所示:

创建 LCCRenderer 空对象并设置坐标系对齐的 Transform

创建 LCCRenderer 空对象,设置 Rotation.x = -90、Scale.x = -1 以对齐坐标系

Rotation.x = -90、Scale.x = -1 是 LCC 数据坐标系(Z-up 右手)到 Unity 坐标系(Y-up 左手)的对齐变换,详见 Unity SDK 简介 中的「LCC 数据坐标系」。

编写一个 C# 脚本,命名为 LCCRenderer.cs,代码如下:

using LCCCore;
using UnityEngine;

public class LCCRenderer : MonoBehaviour
{
    public LCCManager m_manager;
    public string m_FilePath;

    private LCCCore.Renderer m_renderer;

    void Start()
    {
#if UNITY_EDITOR
        m_manager.SetPlatformType(PlatformType.PC);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
#else
        m_manager.SetPlatformType(PlatformType.Quest);
        m_renderer = m_manager.GetRender(this.gameObject.transform);
        m_renderer.Load(m_FilePath, onProgress, onLoaded);
        //m_renderer.Load($"{Application.persistentDataPath}/LccData/meta.lcc2", onProgress, onLoaded);
#endif
    }

    private void onProgress(float v)
    {
        Debug.Log("progress:" + v);
    }

    private void onLoaded()
    {
        m_manager.SetStartLod(2);
        m_renderer.SetEnvironment(false);
        Debug.Log("Data loaded");
    }
}

将该脚本挂载到层级窗口(Hierarchy)中的 LCCRenderer 游戏对象上,然后在属性窗口(Inspector)中将 LCCManager 游戏对象拖到脚本的 Manager 属性上,最后填写 LCC 文件的路径地址,打包运行即可。

将 LCCRenderer 脚本挂载到对象并绑定 Manager 与文件路径

将 LCCRenderer 脚本挂载到对象,绑定 Manager 与文件路径

为方便在 Unity Editor 中调试并直接打包到 Android 真机,代码使用编译宏区分运行环境:在 Unity Editor 中使用 PC 平台,在 Quest 真机设备上使用 Quest 平台。

对 Quest 设备,推荐将数据源放置在服务器上;测试时也可以直接使用设备上的数据源,具体操作为:

  1. 先将打包好的应用在 Quest 设备上运行一次。
  2. 应用安装后,进入其数据目录(一般为 Quest 设备存储盘 → Android → data → 应用 BundleID → Files,具体目录可查阅 Android 应用安装路径),在 Files 子目录下创建 LccData 文件夹。
  3. 将 LCC 数据源全部拷贝到 LccData 文件夹下。

注意:

  1. 实际使用中,建议将 Quest 应用的数据源放在服务器上,而不是直接打包进应用。
  2. Quest 3 设备的 3DGS 同屏渲染能力约为 70 万高斯基元,相比 PC 端约 2500 万的渲染能力有约两个数量级的差异,建议主要用于小场景、单物体的渲染展示;大场景使用 PC 串流会更流畅。
  3. 渲染 LCC 大场景时,建议将 StartLOD 设为 2 并关闭环境数据显示(如示例代码所示)。

相关参考

  • 工程项目与性能优化,请参见工程设置优化指南 、渲染性能参数设置指南 章节。
  • Meta 开发的其它流程,请参考其官方文档:Meta 开发者文档。
  • 开发 Quest 过程中,需要在 Project Settings → OpenXR 中将 Desktop 平台的 Render Mode 设为 Multi-pass,否则无法在 Unity 中正常渲染 LCC 场景(包括 Editor 与 Runtime)。