OpenXR で開発する

対象となる XR デバイス
このガイダンスは、次のようなタイプの XR デバイス向けのエクスペリエンスを構築する際に役立ちます。
XR ヘッドセット
有線 XR グラス

 

OpenXR のテキストロゴ

Android XR は、OpenXR 1.1 仕様と一部のベンダー拡張機能をサポートすることで、OpenXR で構築されたアプリをサポートしています。OpenXR は、幅広い XR デバイスで共通の API セットを使用して、没入型でインタラクティブなエクスペリエンスを作成できるオープン スタンダードです。

機能

Android XR は、OpenXR を使用して XR デバイスの独自の機能を最大限に活用するアプリを構築できる機能をサポートしています。主な機能は次のとおりです。

Spatial Entity フレームワーク
シーンの理解と空間推論のための統合基盤。アプリケーションが、環境内の物理的な空間エンティティ(平面、3D メッシュ、境界ボックス、画像、マーカー、アノテーションなど)を検出、クエリ、追跡できるようにします。また、空間境界を使用した検出のフィルタリング、エンティティ アーキタイプのクエリ、エンティティにアタッチされた空間アンカーの作成、空間エンティティとメッシュのレイキャストの実行、アプリケーション セッション間での空間エンティティの保持も可能にします。
空間コンテナ
クロス プラットフォームの空間ウィンドウ API(XR_EXT_spatial_container と XR_EXT_spatial_container_self_rendering)を使用すると、アプリケーションは OpenXR スワップチェーンとコンポジション レイヤを使用して、表示可能な 3D 空間コンテナ(境界付きと没入型の両方)を作成してレンダリングできます。これにより、ユーザーは複数の空間コンテナを同時に体験できます。
Geospatial と Geospatial アンカー
Google のビジュアル ポジショニング サービス(VPS)と GPS を使用して地球を基準としたポーズを追跡し、Google Cloud サービスで認証を行い、特定の緯度、経度、高度に Geospatial アンカーとサーフェス アンカーを配置できるようにします。
トラッキング可能なオブジェクト
平面検出をサポートしています。これは、環境内の平面を識別して追跡する機能です。これにより、現実世界に関連して仮想オブジェクトを配置できます。また、アンカーは、現実世界のオブジェクトや場所に関連付けることができる仮想参照ポイントです。これにより、ユーザーが移動しても、仮想コンテンツの位置と向きが正確に維持されます。
レイキャスト
仮想レイとシーン内のオブジェクトまたはワールド メッシュの交点を特定するために使用される手法。仮想要素の選択や操作などのインタラクションを容易にします。
アンカーの永続性
複数のセッションにわたってアンカーを保存して復元する機能。これにより、環境内で仮想コンテンツを永続的かつ一貫して配置できます。
オブジェクト トラッキング
現実世界のマウス、キーボード、その他の物理オブジェクトを追跡する機能。
画像とマーカーのトラッキング
環境内の平面参照画像と物理マーカー(AprilTag や ArUco マーカーなど)を検出して追跡する機能。
QR コードのトラッキング
物理環境で QR コードを追跡し、そのデータをデコードする機能。
深度テクスチャ
カメラとシーン内のオブジェクト間の距離に関する情報を提供する深度マップの生成。これにより、よりリアルなオクルージョンとインタラクション効果を実現できます。
パススルー
現実世界のカメラ映像と仮想コンテンツを融合し、物理世界とデジタル世界をシームレスに組み合わせた複合現実エクスペリエンスを作成する機能。
グローバル パススルー減光
アプリケーションがグローバル パススルー減光レベルを設定してクエリし、仮想コンテンツを物理環境とブレンドできるようにします。また、減光レベルが変更されたときにイベントを受信できるようにします。
ビューポートのフェザリング
ランタイムによって適用されたフェザリングされた境界領域を公開し、アプリケーションが周辺のフェザリングの影響を受けずに安全な領域内に UI 要素を配置できるようにします。
シーンのメッシュ化
環境の 3D メッシュを取得する機能。物理、オクルージョン、その他の世界認識インタラクションに使用できます。
コンポジション レイヤのパススルー
ポリゴン パススルー コンポジション レイヤのカットアウトを可能にします。現実世界のオブジェクトをシーンに取り込むために使用できます。
顔追跡
視覚データソースと音声データソースからユーザーの顔の特徴を追跡する機能。これにより、よりリアルで表現力豊かなアバターやバーチャル キャラクターを作成できます。
アイ トラッキング
ユーザーの目の位置と向きを提供します。これは、アバターの目のポーズをよりリアルにするために設計されています。
ハンド トラッキング
ユーザーの手の位置と動きを追跡する機能。
手のメッシュ
ユーザーの手をローポリ メッシュとして正確に表現します。プラットフォームからアプリケーションへの配信に最適化されており、可能な限り最高のパフォーマンスを実現します。これは、バインドポーズとブレンド ウェイトを使用する他の拡張機能の代わりに使用できます。
ボディ トラッキング
頭部と手のトラッキング入力を使用して、ユーザーの体の関節の位置と比率を推定します。
光推定
ユーザーの実際の照明条件に一致するように、照明モデル(指向性、アンビエント、球面調和関数、キューブマップ照明など)に使用されます。

サポートされている入力デバイス

Android XR は、次の入力デバイスもサポートしています。

手の操作
ピンチ、スワイプ、ポインティングなどの特定のハンド ジェスチャーを認識し、ユーザーがジェスチャーや手の動きを使用して仮想オブジェクトを操作できるようにします。
視線操作
ユーザーの目の動きを追跡し、視線を使用して仮想オブジェクトを選択して操作できるようにする機能。
6DoF モーション コントローラ
コントローラのポジションと動きを追跡する機能。アクションをトリガーする D-pad とボタンのバインディング、またはアプリ内のホバーイベント。
マウス操作
ユーザーが 3D 空間でマウスポインタを使用してオブジェクトを操作できる機能

サポートされているパフォーマンス機能

Android XR は、パフォーマンスに関連する次の機能をサポートしています。

アイ トラッキングによる中心窩レンダリング
アプリが目の焦点にのみ高解像度のコンテンツをレンダリングできるようにします。
スペースワープ
速度ベクトルと深度テクスチャ情報を使用してトゥイーン フレームを生成し、ユーザーがエクスペリエンスに没頭し続けるために必要なフレームレートを効果的に向上させます。
フレーム合成
アプリケーションが提供するモーション ベクトルとフレームデータを使用して中間フレームを合成し、視覚的な滑らかさとフレームレートを向上させます。
パフォーマンス指標
現在の XR デバイス、コンポジタ、XR アプリの実行時に Android XR のパフォーマンス指標を提供します。これには、CPU フレーム時間、GPU フレーム時間、GPU 使用率、CPU 周波数、フレーム/秒などが含まれます。

サポートされている機能と拡張機能の一覧については、OpenXR 機能の概要をご覧ください。

サポートされているエンジン

Android XR での OpenXR 開発では、次のエンジンがサポートされています。

Unity

Android XR の Unity サポートは OpenXR 上に構築されており、デベロッパーは Unity 6 を使用してエクスペリエンスを作成できます。Unity を使用した XR アプリの作成について詳しくは、Unity の概要をご覧ください。

Unreal Engine

Unreal Engine は OpenXR 標準を介して Android XR をサポートしているため、Unreal Engine 5 の標準ツールとワークフローを使用できます。Unreal Engine を使用した XR アプリの構築について詳しくは、Unreal Engine の概要をご覧ください。

Godot

Godot は OpenXR 統合を通じて Android XR をサポートしており、標準の Godot ワークフローを使用して Android 向けの XR アプリをビルドしてエクスポートできます。Godot で XR アプリを構築する方法については、Godot の概要をご覧ください。


OpenXR™ および OpenXR ロゴは、The Khronos Group Inc. が所有する商標であり、中国、欧州連合、日本、英国で商標として登録されています。