Quest 3 開発ガイド
Quest 3 向けの LCC 開発手順は、Meta 公式の VR プロジェクト作成手順と若干異なります。Meta 公式が Unity 設定に加える変更により、LCC レンダリングが開発ドキュメントの推奨手順と非互換になるためです。Meta 公式の手順は Set up Unity for XR development を参照してください。このガイドでは、その手順に基づいて 3DGS シーンをレンダリングするために LCC Unity SDK を統合する方法を説明します。
バージョン要件
このガイドで使用するソフトウェアとプラグインのバージョンは以下のとおりです。同じバージョンでの開発を推奨します。テストされていない他のバージョンには互換性の問題がある場合があります。
| ソフトウェア / プラグイン | バージョン |
|---|---|
| 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 に設定
Company Name と Product Name を設定
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 と VSync を設定
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 ボタンをクリックして修正します。黄色の警告項目は必要に応じて修正するか、当面未処理のままにできます。処理前は以下のとおりです。

処理前の Project Validation(赤マーク項目あり)
処理後は以下のとおりです。

処理後の Project Validation(赤マーク項目を修正済み)
手順 8:シーンを作成する
この例では新しいシーン(Scene)から開始します。Unity シーンを作成したら、ヒエラルキーウィンドウ(Hierarchy)で Main Camera GameObject を削除し、ウィンドウの空の領域を右クリックし、ポップアップメニューから XR → XR Origin (VR) を選択します。以下のとおりです。

右クリックメニューで XR Origin (VR) を作成
手順 9:シーンを設定する
ヒエラルキーウィンドウ(Hierarchy)で XR Origin (VR) GameObject を選択し、プロパティウィンドウ(Inspector)の XR Origin コンポーネントで Tracking Origin Mode を Floor に設定します。以下のとおりです。

XR Origin の Tracking Origin Mode を Floor に設定
ヒエラルキーウィンドウ(Hierarchy)で XR Origin (VR) 配下の Main Camera GameObject を選択し、プロパティウィンドウ(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 | Black | デフォルトの背景色は黒を推奨 |
| 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 軸上・右手系)から Unity 座標系(Y 軸上・左手系)へのアライメント変換です。詳しくは Unity SDK の概要 の「LCC データの座標系」を参照してください。
LCCRenderer.cs という名前の C# スクリプトを以下のコードで作成します。
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("進捗:" + v);
}
private void onLoaded()
{
m_manager.SetStartLod(2);
m_renderer.SetEnvironment(false);
Debug.Log("データが読み込まれました");
}
}
スクリプトをヒエラルキーウィンドウ(Hierarchy)の LCCRenderer GameObject にアタッチし、プロパティウィンドウ(Inspector)で LCCManager GameObject をスクリプトの Manager プロパティへドラッグし、最後に LCC ファイルパスを入力して、ビルドして実行します。

オブジェクトに LCCRenderer スクリプトをアタッチし、Manager とファイルパスをバインド
Unity Editor でのデバッグと Android デバイスへの直接ビルドを容易にするため、コードではコンパイルマクロで実行環境を区別しています。Unity Editor では PC プラットフォーム、Quest デバイスでは Quest プラットフォームを使用します。
Quest デバイスでは、データソースをサーバーに配置することを推奨します。テスト中はデバイス上のデータソースを直接使用することもできます。具体的な手順は以下のとおりです。
- ビルドしたアプリを Quest デバイスで 1 回実行します。
- アプリのインストール後、そのデータディレクトリ(一般的に Quest デバイスのストレージ → Android → data → アプリ BundleID → Files。具体的なディレクトリは Android アプリのインストールパスを参照)へ移動し、Files サブディレクトリの下に
LccDataフォルダを作成します。 - すべての LCC データソースを
LccDataフォルダにコピーします。
注:
- 実務では、Quest アプリのデータソースはアプリに直接パッケージ化するのではなく、サーバーに配置することを推奨します。
- Quest 3 デバイスの 3DGS オンスクリーンレンダリング能力は約 70 万ガウスプリミティブで、PC 側の約 2500 万より約 2 桁少ないです。主に小規模シーンや単一オブジェクトのレンダリング・表示に推奨します。大規模シーンは PC ストリーミングの方が滑らかです。
- 大規模 LCC シーンをレンダリングする場合は、StartLOD を
2に設定し、環境データ表示を無効にすることを推奨します(サンプルコードのとおり)。
関連ドキュメント
- プロジェクト設定とパフォーマンス最適化については、プロジェクト設定の最適化ガイド と レンダリングパフォーマンスパラメータガイド の章を参照してください。
- その他の Meta 開発手順については、公式ドキュメント Meta 開発者ドキュメント を参照してください。
- Quest 開発中は、Project Settings → OpenXR で Desktop プラットフォームの Render Mode を Multi-pass に設定してください。さもないと、Unity で LCC シーンが正常にレンダリングできません(Editor と Runtime の両方を含む)。