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

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

    • Stick Light

      • 取り付けガイド
      • 基本操作
      • よくある質問
  • 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

OpenXR 開発ガイド

OpenXR は、Khronos Group が定義・維持するオープンでロイヤリティフリーの XR(VR/AR/MR)インターフェース標準です。その中核的な目標は、開発者が「一度書けばどこでも動く」ことを可能にし、デバイスごとに異なる API セットが存在するという断片化問題を解決することです。LCC Unity SDK は現在 OpenXR 標準に対応しているため、特定の VR デバイスベンダーが提供する SDK なしで、OpenXR 対応デバイス上で 3DGS データをレンダリングできます。

バージョン要件

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

ソフトウェア / プラグインバージョン
Unityv6000.0.69f1
LCC Unity SDKv2.3.0 以上

注:

  1. OpenXR は標準であり、各 VR デバイスベンダーはその全機能を対応する場合もあれば一部のみ対応する場合もあるため、使用前に特定デバイスの対応状況を確認する必要があります。
  2. OpenXR 標準は共通の技術仕様を定義しますが、デバイス固有の機能にはベンダー SDK やベンダーの OpenXR Extension が必要です。たとえば ATW(Asynchronous Time Warp)、PTW(Late Stage Reprojection)など、フレーム間の滑らかさを向上させる技術が該当します。
  3. このガイドは主に実 VR デバイスでの OpenXR 開発を実演します。LCC Unity SDK は OpenXR のデスクトップアプリケーション開発には対応していません(PCVR を除く)。

開発手順

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

プロジェクトテンプレートで Universal 3D(URP レンダーパイプライン)タイプを選択します。以下のとおりです。

Universal 3D プロジェクトを作成

Universal 3D プロジェクトを作成

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

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

Build Profiles でプラットフォームを Android に切り替え

Build Profiles でプラットフォームを Android に切り替え

手順 3:Unity OpenXR をインポートする

Unity メニュー Window → Package Manager から UPM ウィンドウを開き、左のリストで Unity Registry を選択し、検索ボックスに OpenXR を入力し、検索結果から OpenXR Plugin を選択してインストールします。以下のとおりです。

Unity Registry から OpenXR Plugin をインストール

Unity Registry から OpenXR Plugin をインストール

手順 4:XR Interaction Toolkit をインポートする

左のリストで Unity Registry を選択し、検索ボックスに XR を入力し、検索結果から XR Interaction Toolkit を選択してインストールします。以下のとおりです。

Unity Registry から XR Interaction Toolkit をインストール

Unity Registry から XR Interaction Toolkit をインストール

手順 5: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 をインポート

手順 6:Unity 環境を設定する

XR Plug-in Management を設定(Android プラットフォーム)

Unity メニューバーから File → Project Settings を選択し、左側の XR Plug-in Management を選択し、Android プラットフォームタブで OpenXR にチェックを入れ、Initialize XR on Startup にチェックを入れます。以下のとおりです。

Android プラットフォームで OpenXR と Initialize XR on Startup にチェック

Android プラットフォームで OpenXR と Initialize XR on Startup にチェック

XR Plug-in Management を設定(Desktop プラットフォーム)

LCC Unity SDK はデスクトップの OpenXR 開発に対応していないため、Desktop プラットフォームでは OpenXR と Initialize XR on Startup にチェックを入れないでください。以下のとおりです。

Desktop プラットフォームでは OpenXR と Initialize XR on Startup にチェックしない

Desktop プラットフォームでは OpenXR と Initialize XR on Startup にチェックしない

注:デスクトップの PCVR については PCVR ストリーミング を参照してください。

OpenXR のレンダーモードとインタラクション設定を設定

XR Plug-in Management の OpenXR 項目を選択し、Android プラットフォームの Render Mode を Single Pass Instanced または Multi-View に設定します。OpenXR では Interaction Profiles の設定が必要なため、通常は Oculus Touch Controller Profile または類似のデバイス性能特性を持つプロファイルを選択します。以下のとおりです。

OpenXR の Render Mode と Interaction Profiles を設定

OpenXR の Render Mode と Interaction Profiles を設定

Project Validation

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

Project Validation で Fix All をクリック

Project Validation で Fix All をクリック

Player を設定(Desktop プラットフォーム)

Project Settings 左側の Player を選択し、Desktop プラットフォームに切り替え、Other Settings セクションを展開し、Auto Graphics API のチェックを外し、Graphics APIs を Direct3D12、Vulkan、Direct3D11 に設定して他のグラフィックス API を削除します。Color Space を Gamma に設定します。以下のとおりです。

Desktop プラットフォームでグラフィックス API と Gamma 色空間を設定

Desktop プラットフォームでグラフィックス API と Gamma 色空間を設定

注:一部の VR デバイスは Gamma 色空間に対応していません。その場合は Linear 色空間を選択するしかなく、Linear 色空間でレンダリングした LCC シーンはわずかに白っぽく見えます。

Player を設定(Android プラットフォーム)

Project Settings 左側の Player を選択し、Android プラットフォームに切り替え、Other Settings セクションを展開し、Auto Graphics API のチェックを外し、Graphics APIs を Vulkan に設定して他のグラフィックス API を削除します。Color Space を Gamma に設定します。以下のとおりです。

Android プラットフォームでグラフィックス API を Vulkan、色空間を Gamma に設定

Android プラットフォームでグラフィックス API を Vulkan、色空間を Gamma に設定

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) または Both に設定します。以下のとおりです。

Minimum API Level、Scripting Backend、Target Architectures、Active Input Handling を設定

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 を確認

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

Quality で DPI Factor と VSync を設定

Render Asset を設定

Mobile プラットフォームが使用する Default Render Pipeline に対応する Render Asset(この例では Mobile_RPAsset)を見つけ、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 を設定

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) のプロパティを設定

Mobile_Renderer (Universal Renderer Data) のプロパティを設定

手順 7:シーンを作成する

Unity で新しいシーンを作成し、Main Camera と Directional Light を削除し、ヒエラルキーウィンドウ(Hierarchy)の空の領域を右クリックし、ポップアップメニューから XR → XR Origin (VR) を選択して必要な XR オブジェクトを作成します。

手順 8:シーンを設定する

ヒエラルキーウィンドウ(Hierarchy)で XR Origin (VR) GameObject を選択し、プロパティウィンドウ(Inspector)の XR Origin コンポーネントで Tracking Origin Mode を Floor に設定します。その他の関連プロパティは以下のとおりです。

XR Origin の Tracking Origin Mode を Floor に設定

XR Origin の Tracking Origin Mode を Floor に設定

ヒエラルキーウィンドウ(Hierarchy)で XR Origin (VR) 配下の Main Camera GameObject を選択し、プロパティウィンドウ(Inspector)で Camera コンポーネントのプロパティを設定します。Clipping Planes Near = 0.3、Far = 5000、Anti-aliasing = No Anti-aliasing、Opaque Texture = Off、Depth Texture = Off、Background Type = Solid Color、Background = 黒、HDR = Off、MSAA = Off。その他のプロパティは以下のとおりです。

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

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

手順 9:シーンを読み込むコードを書く

ヒエラルキーウィンドウ(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 データの座標系」を参照してください。

この時点で、ヒエラルキーウィンドウ(Hierarchy)の GameObject 構成は以下のとおりです。

Hierarchy ウィンドウの構成

Hierarchy ウィンドウの構成

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;

    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.OpenXR);
        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 ファイルパスを入力します。

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

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

注:実務では、アプリのデータソースはアプリに直接パッケージ化するのではなく、サーバーに配置することを推奨します。

最適化の実践

上記の手順により VR デバイスで LCC データを正常にレンダリングできますが、主に 2 つの問題があります。

2D アプリウィンドウの表示

デバイスベンダー SDK なしで OpenXR 標準向けに開発されたアプリは、VR デバイス上で必ずしも 3D アプリとして認識されません。通常、VR デバイスのシステムはそれらを 2D アプリとして扱うため、2D アプリウィンドウが表示されます。この問題を解決するには 2 つの方法があります。

  • デバイスベンダー SDK またはデバイスベンダーの OpenXR 拡張を導入します。デバイスベンダーのソフトウェアが関連問題を処理します。
  • AndroidManifest.xml をカスタマイズします。

Manifest をカスタマイズする具体的な手順は次のとおりです。Project Settings 左側の Player を選択し、Android プラットフォームに切り替え、Publishing Settings セクションを展開し、Custom Main Manifest にチェックを入れると、カスタム Manifest ファイルが生成されます。以下のとおりです。

Custom Main Manifest にチェックしてカスタム Manifest ファイルを生成

Custom Main Manifest にチェックしてカスタム Manifest ファイルを生成

AndroidManifest.xml ファイルを見つけ、VR マーカーを追加して VR デバイスに 3D 没入型アプリとして認識させます。起動したアプリは 3D 空間として表示されます。例:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application>

        <!--Application Entry が GameActivity に設定されている場合に使用。それ以外はこのアクティビティブロックを削除-->
        <activity android:name="com.unity3d.player.UnityPlayerGameActivity"
                  android:theme="@style/BaseUnityGameActivityTheme"
                  android:resizeableActivity="false">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
            <meta-data android:name="android.app.lib_name" android:value="game" />
        </activity>
    </application>
</manifest>

レンダリングフレームレートが 90FPS を下回る場合のカクつき

OpenXR 標準自体はフレーム補間やスムージングなどを定義していません。フレームレートが 90FPS に達しない場合、頭を回転させたり移動したりすると顕著なカクつきを感じます。より良い体験、特に限られたハードウェア性能下での滑らかさ向上のため、デバイスベンダーは通常トゥイーン、フレーム補間、スムージングなどの技術を提供します。たとえば ATW(Asynchronous Time Warp)、PTW(Late Stage Reprojection)などです。

デバイスが OpenXR に対応している場合、デバイスベンダーは通常 OpenXR Extension や OpenXR を直接対応する SDK を提供します。この場合はより滑らかな体験のため、デバイスベンダー SDK を導入するのが最善です。

関連ドキュメント

  • プロジェクト設定とパフォーマンス最適化については、プロジェクト設定の最適化ガイド と レンダリングパフォーマンスパラメータガイド の章を参照してください。
  • VR デバイスの 3DGS オンスクリーンレンダリング能力は約 70 万ガウスプリミティブです。大規模シーンをレンダリングする場合は StartLOD を 2 に設定し、環境データ表示を無効にすることを推奨します。大規模シーンは PC ストリーミングの方が滑らかです。