Quest 3 开发指南
Quest 3 的 LCC 开发流程与 Meta 官方创建 VR 项目略有不同:Meta 官方对 Unity 配置的修改会导致 LCC 渲染无法与其开发文档中的推荐流程兼容。Meta 官方流程见 Set up Unity for XR development。本指南在其基础上,说明如何接入 LCC Unity SDK 渲染 3DGS 场景。
版本要求
本指南使用的软件及插件版本如下,建议使用相同版本开发,其他未经测试的版本可能存在兼容问题:
| 软件 / 插件 | 版本 |
|---|---|
| Unity | v6000.0.69f1 |
| Meta XR All-in-One SDK | v205.0.0 |
| LCC Unity SDK | v2.1.35 及以上 |
注意:
- Meta SDK 只支持 URP 的 Linear 线性颜色空间,LCC 场景在此颜色空间下渲染颜色会略微发白。
- Unity 版本、Meta SDK 版本、LCC SDK 版本均会影响渲染与性能,请尽量保持各软件版本与本指南一致。
开发流程
步骤 1:创建 URP 工程
在工程模板中选择 Universal 3D,如下图所示:

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

在 Build Profiles 中将平台切换为 Android
步骤 3:导入 Unity OpenXR
通过 Unity 菜单 Window → Package Manager 打开 UPM 窗口,在左侧列表中选择 Unity Registry,在搜索框中输入 OpenXR,从检索列表中选择 OpenXR Plugin 并安装,如下图所示:

从 Unity Registry 安装 OpenXR Plugin
步骤 4:导入 XR Interaction Toolkit
在左侧列表中选择 Unity Registry,在搜索框中输入 XR,从检索列表中选择 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
步骤 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
完成以上步骤后,请重启 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

在 Android 平台勾选 Initialize XR on Startup
选择 XR Plug-in Management 下的 OpenXR 项,将 Desktop 和 Android 平台的 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 颜色空间
设置 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 颜色空间
设置公司名与产品名
在 Player 选项卡中,正确设置 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
检查 Graphics 与 Quality
在 Project Settings 左侧选中 Graphics 项,查看 Mobile 平台所使用的 Default Render Pipeline 对应的 Render Asset,本示例中为 Mobile_RPAsset,如下图所示:

查看 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 与垂直同步
配置 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 Scale = 0.7
找到该 Render Asset 的配套 Renderer,本示例中为 Mobile_Renderer(Universal Renderer Data),在属性窗口(Inspector)中设置其相关属性,如下图所示:

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

Project Validation 处理前(存在标红验证项)
处理后如下图所示:

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

通过右键菜单创建 XR Origin (VR)
步骤 9:配置场景
在层级窗口(Hierarchy)中选中 XR Origin (VR) 游戏对象,在属性窗口(Inspector)的 XR Origin 组件中,将 Tracking Origin Mode 设为 Floor,如下图所示:

将 XR Origin 的 Tracking Origin Mode 设为 Floor
在层级窗口(Hierarchy)中选中 XR Origin (VR) 下的 Main Camera 游戏对象,在属性窗口(Inspector)中设置 Camera 各属性:
| 属性 | 推荐值 | 说明 |
|---|---|---|
| Field of View | 60 | FOV |
| Clipping Planes → Near | 0.2 ~ 0.3 | 近裁剪面 |
| Clipping Planes → Far | 3000 ~ 5000 | 远裁剪面,覆盖大范围场景 |
| Anti-aliasing | No Anti-aliasing | 默认关闭抗锯齿 |
| Opaque Texture | Off | 默认关闭 |
| Depth Texture | Off | 默认关闭 |
| Background Type | Solid Color | 建议设为纯色 |
| Background | 黑色 | 默认背景色建议设为黑色 |
| HDR Rendering | Off | 默认关闭 |
| MSAA | Off | 默认关闭 |
| URP Dynamic Resolution | Off | 默认关闭 |
其他属性如下图所示:

设置 XR Origin (VR) 下 Main Camera 的 Camera 组件属性
步骤 10:编写代码,加载场景
在层级窗口(Hierarchy)中右键 Create Empty 创建一个空对象,命名为 LCCManager,将其 Transform 归一,并为其挂载 LCCManager 脚本,如下图所示:

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

创建 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 与文件路径
为方便在 Unity Editor 中调试并直接打包到 Android 真机,代码使用编译宏区分运行环境:在 Unity Editor 中使用 PC 平台,在 Quest 真机设备上使用 Quest 平台。
对 Quest 设备,推荐将数据源放置在服务器上;测试时也可以直接使用设备上的数据源,具体操作为:
- 先将打包好的应用在 Quest 设备上运行一次。
- 应用安装后,进入其数据目录(一般为 Quest 设备存储盘 → Android → data → 应用 BundleID → Files,具体目录可查阅 Android 应用安装路径),在 Files 子目录下创建
LccData文件夹。 - 将 LCC 数据源全部拷贝到
LccData文件夹下。
注意:
- 实际使用中,建议将 Quest 应用的数据源放在服务器上,而不是直接打包进应用。
- Quest 3 设备的 3DGS 同屏渲染能力约为 70 万高斯基元,相比 PC 端约 2500 万的渲染能力有约两个数量级的差异,建议主要用于小场景、单物体的渲染展示;大场景使用 PC 串流会更流畅。
- 渲染 LCC 大场景时,建议将 StartLOD 设为
2并关闭环境数据显示(如示例代码所示)。
相关参考
- 工程项目与性能优化,请参见工程设置优化指南 、渲染性能参数设置指南 章节。
- Meta 开发的其它流程,请参考其官方文档:Meta 开发者文档。
- 开发 Quest 过程中,需要在 Project Settings → OpenXR 中将 Desktop 平台的 Render Mode 设为 Multi-pass,否则无法在 Unity 中正常渲染 LCC 场景(包括 Editor 与 Runtime)。