Pico 4 Ultra 開発ガイド
Pico 4 Ultra 向けの LCC 開発手順は、PICO 公式の VR プロジェクト作成手順と基本的に同じです。詳しくは PICO Unity Integration SDK ドキュメントを参照してください。このガイドでは、その手順に基づいて 3DGS シーンをレンダリングするために LCC Unity SDK を統合する方法を説明します。
バージョン要件
このガイドで使用するソフトウェアとパッケージのバージョンは以下のとおりです。同じバージョンでの開発を推奨します。テストされていない他のバージョンには互換性の問題がある場合があります。
| ソフトウェア / パッケージ | バージョン | 説明 |
|---|---|---|
| Unity | v2022.3.62f3 | Unity 2022 LTS を使用 |
| PICO Unity Integration SDK | v3.4.0 | PICO 公式チャンネルから入手 |
| LCC Unity SDK | v2.1.27 以降 | Built-in 対応版。Unity 2022 LTS 互換版をダウンロード |
ハードウェアとソフトウェアの詳細な要件については 開発環境の要件 を参照してください。
注:
- PICO Unity Integration SDK は URP パイプラインで深刻な性能問題があるため、Built-in レンダーパイプラインを推奨します。詳しくは 既知の問題 を参照してください。
- Unity v6000.0.69f1 でテストしてアプリがフリーズやクラッシュする場合は、Unity v2022.3 LTS に切り替えてください。PICO 4 シリーズデバイスは Unity 6 と Vulkan を併用するアプリに互換性の問題があります。詳しくは 既知の問題 を参照してください。
- Unity バージョン、PICO SDK バージョン、LCC SDK バージョンはすべてレンダリングと性能に影響します。各ソフトウェアのバージョンをこのガイドと一致させるよう努めてください。
開発手順
手順 1:プロジェクトを作成する
プロジェクトテンプレートで 3D (Built-in Render Pipeline) タイプを選択します。PICO Unity Integration SDK は URP パイプラインで深刻な性能問題があるため、URP パイプラインを選択しないでください。以下のとおりです。

3D (Built-in Render Pipeline) プロジェクトを作成
手順 2:プラットフォームを切り替える
Unity メニューで File → Build Profiles を選択してビルドウィンドウを開き、プラットフォームを Android に切り替えます。以下のとおりです。

Build Profiles でプラットフォームを Android に切り替え
手順 3:PICO Unity Integration SDK をインポートする
PICO 公式サイトから PICO Unity Integration SDK をダウンロードし、PICO のチュートリアルに従ってインストールします。GitHub から https://github.com/Pico-Developer/PICO-Unity-Integration-SDK.git で直接インポートすることもできます。このガイドではバージョン v3.4.0 を使用します。以下のとおりです。

PICO Unity Integration SDK v3.4.0 をインポート
手順 4:LCC Unity SDK をインポートする
Unity メニュー Window → Package Manager から UPM ウィンドウを開き、左の + をクリックし、ドロップダウンから Install package from disk を選択し、LCC Unity SDK へ移動して package.json ファイルを選択してインポートします。以下のとおりです。

Install package from disk で LCC Unity SDK をインポート
手順 5:Unity 環境を設定する
XR Plug-in Management を設定
Unity メニューバーで File → Project Settings を選択し、左側の XR Plug-in Management を選択し、Android プラットフォームタブで Initialize XR on Startup にチェックを入れます。以下のとおりです。

XR Plug-in Management で Initialize XR on Startup にチェック
XR Plug-in Management の PICO 項目を選択し、Android プラットフォームの Render Mode を MultiView に設定します。以下のとおりです。

PICO の Render Mode を MultiView に設定
XR Plug-in Management の Project Validation 項目を選択し、Fix All をクリックして必要な設定を完了します(スキップして後で手動作成することもできます)。以下のとおりです。

Project Validation で Fix All をクリック
注:
- Fix All をクリックすると、現在開いているシーンに必要な GameObject が作成されるため、シーン内の Main Camera と Directional Light を削除する必要があります。
- この例では UIOrientation.LandscapeLeft のみを修正し、それ以外は手動で作成します。
Keystore を設定
PICO 開発には Keystore が必要です。Player → Android タブ → Publishing Settings → Keystore Manager に移動し、新しい Keystore を作成して設定を完了します。以下のとおりです。

Keystore Manager で新しい Keystore を作成
会社名と製品名を設定
PICO 開発ではデフォルトの defaultCompany は使用できません。Player タブで正しい Company Name と Product Name を設定します。以下のとおりです。

Company Name と Product Name を設定
品質オプションを設定
Project Settings で Quality タブを選択し、Anti Aliasing = Disabled、Resolution Scaling Fixed DPI Factor = 0.7、VSync Count = Don't Sync に設定します。以下のとおりです。

Quality タブでアンチエイリアスを無効化し DPI Factor と VSync を設定
AppID を入力
Unity メニューで PICO → Platform → Platform Setting を選択して設定パネルを開き、PICO 開発者プラットフォームで申請した AppID を Paste your App ID here に入力します。開発者アカウント・組織・アプリの作成 を参照してください。

PICO Platform Setting で AppID を入力
Graphics を設定
Project Settings で Graphics タブを選択し、Android プラットフォームを選択して以下のとおり設定します。

Graphics タブで Android プラットフォームを設定
Player を設定
Project Settings で Player タブを選択し、Android プラットフォームを選択し、Color Space = Gamma、Auto Graphics API のチェックを外して Vulkan のみを維持します。その他の設定は以下のとおりです。

Color Space を Gamma に設定しグラフィックス API は Vulkan のみ維持
現在のタブを下にスクロールし、Minimum API Level = Android 10.0、Scripting Backend = IL2CPP、API Compatibility Level = .NET Standard 2.1、Target Architectures = ARM64 に設定します。その他の設定は以下のとおりです。

Minimum API Level、Scripting Backend、API Compatibility Level、Target Architectures を設定
現在のタブをさらに下にスクロールし、Active Input Handling = Input System Package (New) に設定します。その他の設定は以下のとおりです。

Active Input Handling を Input System Package (New) に設定
手順 6:シーンを作成する
Unity で新しいシーンを作成し、Main Camera と Directional Light を削除します。Hierarchy ウィンドウの空の領域を右クリックし、ポップアップメニューから XR → XR Origin (VR) を選択して必要な XR オブジェクトを作成します。
XR Origin (VR) オブジェクトを選択し、Inspector ウィンドウの Add Component で PXR_Manager コンポーネントを追加し、関連プロパティを以下のとおり設定します。

XR Origin (VR) に PXR_Manager コンポーネントを追加・設定
XR Origin (VR) オブジェクトを選択し、Inspector ウィンドウの XR Origin コンポーネントで Tracking Origin Mode を Floor に設定します。その他のプロパティは以下のとおりです。

XR Origin コンポーネントの Tracking Origin Mode を Floor に設定
Main Camera(XR Origin (VR) の第 2 階層の子)を選択し、Inspector ウィンドウで Camera コンポーネントの関連プロパティを以下のとおり設定します。

XR Origin (VR) 配下の Main Camera の Camera コンポーネントプロパティを設定
Hierarchy ウィンドウで右クリックして Create Empty で LCCManager という名前の空のオブジェクトを作成し、その Transform を正規化し、Add Component で 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;
using UnityEngine.XR;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
private void Awake()
{
XRSettings.eyeTextureResolutionScale = 0.8f; // テクスチャ解像度を下げてパフォーマンスを向上させる
}
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.Pico);
m_renderer = m_manager.GetRender(this.gameObject.transform);
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 デバイスへの直接パッケージ化を容易にするため、コードではコンパイルマクロで実行環境を区別しています。Editor では m_FilePath で指定したパスを使用し、Android デバイスではオンデバイスのデータソースを使用します。オンデバイスデータの配置方法は以下のとおりです。
- まずパッケージ化したアプリを PICO デバイスで 1 回実行します。
- アプリのインストール後、そのデータディレクトリ(一般的に PICO デバイスのストレージ → Android → data → アプリ BundleID → Files。具体的なディレクトリは Android アプリのインストールパスを参照)へ移動し、Files サブディレクトリの下に
LccDataフォルダを作成します。 - すべての LCC データソースを
LccDataフォルダにコピーします。
注:
- 実務では、PICO アプリのデータソースはアプリに直接パッケージ化するのではなく、サーバーに配置することを推奨します。
- Pico 4 Ultra デバイスが一度に画面にレンダリングできるのは約 70 万ガウスプリミティブで、PC の約 2500 万より約 2 桁少ないです。主に小規模シーンや単一オブジェクトのレンダリング・表示に推奨します。大規模シーンは PC ストリーミングの方が滑らかです。
- 大規模 LCC シーンをレンダリングする場合は、StartLOD を
2に設定し、環境データ表示を無効にすることを推奨します(サンプルコードのとおり)。
関連ドキュメント
- プロジェクト設定とパフォーマンス最適化については、プロジェクト設定の最適化ガイド と レンダリングパフォーマンスパラメータ設定ガイド を参照してください。
- その他の PICO 開発手順については、公式ドキュメント PICO 開発者ドキュメント を参照してください。