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)。