XGRIDSドキュメント
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel PortalCam シリーズ

    • PortalCam P1

      • 製品概要
      • デバイスの基本操作
      • LCC Scan App の使用
      • メンテナンスとお手入れ
      • FAQ
  • Lixel K シリーズ

    • Lixel K1

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
    • Lixel K2

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
  • Lixel L シリーズ

    • Lixel L2 Pro

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • 実時計測機能
      • 付録
      • FAQ
    • Lixel L3

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標点群データの取得
      • 付録
  • Lixel Studio

    • バージョンと著作権
    • インストールとアクティベーション
    • ソフトウェアインターフェース
    • ファイル操作
    • プロジェクト処理
    • ツール
    • 2D 作図
    • 業界応用
    • 設定
    • デバイス接続
    • よくある質問
  • Lixel CyberColor

    • LCC Studio

      • はじめに
      • バージョンと更新
      • ダウンロードとインストール
      • インターフェース概要とナビゲーション
      • 再構築前の準備
      • モデル再構築
      • 単一モデル再構築
      • 地図合成
      • 空地融合
      • 航空撮影再構築
      • マイモデル
      • その他の機能
      • 設定とアカウント
      • Converter
      • 動画再構築
      • よくある質問 / FAQ
    • LCC Scene Editor

      • バージョンと更新情報
      • アカウントとサインイン
      • 製品概要とホーム画面
      • エディター画面
      • ナビゲーションモード
      • ファイル
      • 設定
      • 編集
      • ウィンドウ
      • グローバルツールバー
      • アセットとプロパティ
      • 左ツールバー
      • ビューポイント
      • ポータル
      • スカイボックス
      • アノテーション
      • 測定
      • フライスルー
      • シーンレポート
      • 3D レイアウト
      • ミニマップ
      • プレビューモード(Viewer)
      • ヘルプ
      • よくある質問(FAQ)
      • スポーンポイント
    • LCC Model Editor

      • バージョンと更新
      • ユーザーガイド
      • 概要とインターフェース
      • ファイル操作
      • セレクター
      • モデルの編集
      • 測定
      • カラーグレーディング
      • アセット管理
      • 設定とヘルプ
      • よくある質問
    • Capture Guide

      • 概要
      • 撮影デバイス概要
      • 一般的な撮影の原則
      • 屋内シーンの撮影
      • 屋外シーンの撮影
      • 大規模撮影(マップフュージョン)
      • 空地マップフュージョン撮影
      • オブジェクト撮影
      • 人物撮影
      • ビデオ再構築撮影
      • HD Enhancement
      • 制御点(Lixel P1)
      • FAQ とトラブルシューティング
    • LCC Studio Linux

      • 製品概要説明
      • 基本アーキテクチャマニュアル
      • インストールと展開説明書
      • コンテナ起動パラメータ説明書
      • CodeMeter オフラインライセンス展開説明書
      • APIコマンドセット
      • 付録-開発者データマニュアル
      • 付録-エラーコード一覧
      • シングルノードマルチGPUクラスタ展開QuickStart
    • 活用テクニック

      • 複数の大規模 3DGS モデルの統合ワークフロー
    • バージョン履歴
  • プラグインと SDK

    • Unreal

      • 概要
      • クイックスタート - Windows
      • クイックスタート - Linux
      • クイックスタート - Quest3
      • エディションとライセンス
      • レンダリング
      • Tiled ラスタライズ(実験的機能)
      • 画面調節
      • 法線とライティング
      • シーン編集
      • パフォーマンスパラメーター
      • パフォーマンス最適化ガイド
      • サードパーティおよびエンジンプラグインとの連携
      • プロキシメッシュ
      • 読み込みアニメーション
      • コリジョン
      • ナビゲーションシステム対応
      • Single layer water 対応
      • ローカライズ
      • よくある質問
      • トラブルシューティング
      • ログと診断
      • お問い合わせ
      • ベストプラクティス

        • 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 Business Streaming ガイド
      • 用語集
      • FAQ
      • お問い合わせ
      • 機能開発ガイド

        • 複数シーン混合レンダリング開発ガイド
        • 影の受光開発ガイド
        • リアルタイムライティング開発ガイド
        • マルチカメラレンダリング開発ガイド
        • 高解像度画像レンダリング開発ガイド
        • LCC / LCC2 データ形式互換性開発ガイド
        • 読み込みエフェクト開発ガイド
        • Mip レンダリングモード切り替え開発ガイド
        • エッジ・コーナースナップ開発ガイド
        • 投影デカール開発ガイド
        • ビデオ投影デカール開発ガイド
        • ハイライト開発ガイド
        • リアルタイムクリッピング開発ガイド
        • カラー調整開発ガイド
        • シーン Mesh データ取得開発ガイド
        • エディターモード開発ガイド
        • レンダリングパフォーマンスパラメータ設定ガイド
        • アプリケーションとデータの同梱パッケージ開発ガイド
        • コリジョンシステム開発ガイド
        • macOS 開発の権限問題ガイド
        • iOS デバイスのコンパイル・パッケージ化開発ガイド
      • API リファレンス

        • LCCManager
        • Renderer
        • データ型
      • 変更履歴

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • 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

Pico 4 Ultra 開発ガイド

Pico 4 Ultra 向けの LCC 開発手順は、PICO 公式の VR プロジェクト作成手順と基本的に同じです。詳しくは PICO Unity Integration SDK ドキュメントを参照してください。このガイドでは、その手順に基づいて 3DGS シーンをレンダリングするために LCC Unity SDK を統合する方法を説明します。

バージョン要件

このガイドで使用するソフトウェアとパッケージのバージョンは以下のとおりです。同じバージョンでの開発を推奨します。テストされていない他のバージョンには互換性の問題がある場合があります。

ソフトウェア / パッケージバージョン説明
Unityv2022.3.62f3Unity 2022 LTS を使用
PICO Unity Integration SDKv3.4.0PICO 公式チャンネルから入手
LCC Unity SDKv2.1.27 以降Built-in 対応版。Unity 2022 LTS 互換版をダウンロード

ハードウェアとソフトウェアの詳細な要件については 開発環境の要件 を参照してください。

注:

  1. PICO Unity Integration SDK は URP パイプラインで深刻な性能問題があるため、Built-in レンダーパイプラインを推奨します。詳しくは 既知の問題 を参照してください。
  2. Unity v6000.0.69f1 でテストしてアプリがフリーズやクラッシュする場合は、Unity v2022.3 LTS に切り替えてください。PICO 4 シリーズデバイスは Unity 6 と Vulkan を併用するアプリに互換性の問題があります。詳しくは 既知の問題 を参照してください。
  3. Unity バージョン、PICO SDK バージョン、LCC SDK バージョンはすべてレンダリングと性能に影響します。各ソフトウェアのバージョンをこのガイドと一致させるよう努めてください。

開発手順

手順 1:プロジェクトを作成する

プロジェクトテンプレートで 3D (Built-in Render Pipeline) タイプを選択します。PICO Unity Integration SDK は URP パイプラインで深刻な性能問題があるため、URP パイプラインを選択しないでください。以下のとおりです。

3D (Built-in Render Pipeline) プロジェクトを作成

3D (Built-in Render Pipeline) プロジェクトを作成

手順 2:プラットフォームを切り替える

Unity メニューで File → Build Profiles を選択してビルドウィンドウを開き、プラットフォームを Android に切り替えます。以下のとおりです。

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 をインポート

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 をインポート

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 で Initialize XR on Startup にチェック

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

PICO の Render Mode を MultiView に設定

PICO の Render Mode を MultiView に設定

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

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 を作成

Keystore Manager で新しい Keystore を作成

会社名と製品名を設定

PICO 開発ではデフォルトの defaultCompany は使用できません。Player タブで正しい Company Name と Product Name を設定します。以下のとおりです。

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 を設定

Quality タブでアンチエイリアスを無効化し DPI Factor と VSync を設定

AppID を入力

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

PICO Platform Setting で AppID を入力

PICO Platform Setting で AppID を入力

Graphics を設定

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

Graphics タブで Android プラットフォームを設定

Graphics タブで Android プラットフォームを設定

Player を設定

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

Color Space を Gamma に設定しグラフィックス 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 を設定

Minimum API Level、Scripting Backend、API Compatibility Level、Target Architectures を設定

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

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) に PXR_Manager コンポーネントを追加・設定

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

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 コンポーネントプロパティを設定

XR Origin (VR) 配下の Main Camera の Camera コンポーネントプロパティを設定

Hierarchy ウィンドウで右クリックして Create Empty で LCCManager という名前の空のオブジェクトを作成し、その Transform を正規化し、Add Component で 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 軸上・右手系)から 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 とファイルパスをバインド

LCCRenderer スクリプトをアタッチし Manager とファイルパスをバインド

Unity Editor でのデバッグと Android デバイスへの直接パッケージ化を容易にするため、コードではコンパイルマクロで実行環境を区別しています。Editor では m_FilePath で指定したパスを使用し、Android デバイスではオンデバイスのデータソースを使用します。オンデバイスデータの配置方法は以下のとおりです。

  1. まずパッケージ化したアプリを PICO デバイスで 1 回実行します。
  2. アプリのインストール後、そのデータディレクトリ(一般的に PICO デバイスのストレージ → Android → data → アプリ BundleID → Files。具体的なディレクトリは Android アプリのインストールパスを参照)へ移動し、Files サブディレクトリの下に LccData フォルダを作成します。
  3. すべての LCC データソースを LccData フォルダにコピーします。

注:

  1. 実務では、PICO アプリのデータソースはアプリに直接パッケージ化するのではなく、サーバーに配置することを推奨します。
  2. Pico 4 Ultra デバイスが一度に画面にレンダリングできるのは約 70 万ガウスプリミティブで、PC の約 2500 万より約 2 桁少ないです。主に小規模シーンや単一オブジェクトのレンダリング・表示に推奨します。大規模シーンは PC ストリーミングの方が滑らかです。
  3. 大規模 LCC シーンをレンダリングする場合は、StartLOD を 2 に設定し、環境データ表示を無効にすることを推奨します(サンプルコードのとおり)。

関連ドキュメント

  • プロジェクト設定とパフォーマンス最適化については、プロジェクト設定の最適化ガイド と レンダリングパフォーマンスパラメータ設定ガイド を参照してください。
  • その他の PICO 開発手順については、公式ドキュメント PICO 開発者ドキュメント を参照してください。