OpenXR

OpenXR のロゴ

OpenXR は、Khronos によるオープンでロイヤリティフリーの API 標準であり、Mixed Reality スペクトル全体のさまざまなデバイスへのネイティブ アクセスをエンジンに提供します。

HoloLens 2 で OpenXR を使用するか、デスクトップで Windows Mixed Reality イマーシブ VR ヘッドセットを使用して開発できます。 ヘッドセットにアクセスできない場合は、代わりに HoloLens 2 エミュレーターまたは Windows Mixed Reality シミュレーターを使用できます。

OpenXR を使用する理由

OpenXR を使用すると、HoloLens 2 などのホログラフィック デバイスと、デスクトップ PC 用の Windows Mixed Reality ヘッドセットなどのイマーシブ VR デバイスの両方をターゲットとするエンジンを構築できます。 OpenXR により、コードを 1 回作成するだけで、その後、さまざまなハードウェア プラットフォームに移植できます。

OpenXR API ではローダーを使用して、アプリケーションをヘッドセットのネイティブ プラットフォーム サポートに直接接続します。 エンド ユーザーは、Windows Mixed Reality ヘッドセットまたはその他のヘッドセットのどちらを使用しているかにかかわらず、パフォーマンスを最大化し、待機時間を最小限に抑えることができます。

OpenXR とは

OpenXR API は、ホログラフィック デバイスとイマーシブ デバイスの両方をターゲットにできるエンジンを構築するために必要なコア ポーズ予測、フレーム タイミング、空間入力機能を提供します。

OpenXR API については、OpenXR 1.0 の仕様API リファレンスクイック リファレンス ガイドを参照してください。 詳細については、Khronos OpenXR のページを参照してください。

HoloLens 2 の完全な機能セットを対象にするには、ベンダー間およびベンダー固有の OpenXR 拡張機能も使用します。 これにより、多関節ハンド トラッキング、視線追跡、空間マッピング、空間アンカーなどの機能が有効になります。 詳細については、「 Roadmap」セクション 今年後半に提供される拡張機能を参照してください。

OpenXR 自体は、Mixed Reality エンジンではありません。 代わりに、OpenXR を使用することにより、Unity や Unreal などのエンジンで、移植可能なコードを 1 回作成し、その後、プラットフォームを構築したベンダーに関係なく、ユーザーのホログラフィックまたはイマーシブ デバイスのネイティブ プラットフォーム機能にアクセスできます。

ロードマップ

OpenXR 仕様では、ランタイム実装者が、base OpenXR 1.0 仕様で定義されているcore 機能を超えて他の機能を公開できるようにする拡張メカニズムを定義。

OpenXR 拡張機能には、次の 3 種類があります。

  • ベンダー拡張機能 (例: XR_MSFT_...): ハードウェアまたはソフトウェア機能のベンダーごとのイノベーションを実現します。 ランタイム ベンダーは、いつでもベンダー拡張機能を導入および出荷できます。
  • 試験的なベンダー拡張機能 (例: XR_MSFTX_...): フィードバックを収集するためにプレビューされる試験的なベンダー拡張機能。 XR_MSFTX_... 拡張機能は開発者デバイス専用であり、実際の拡張機能が出荷されると削除されます。 これらを試用する場合は、開発者デバイスでプレビュー機能を有効にすることができます。
  • クロスベンダーEXT拡張機能: 複数の企業が定義および実装するクロスベンダー拡張機能。 関心のある企業のグループは、いつでも EXT 拡張機能を導入できます。
  • 公式KHRの拡張機能: コア仕様のリリースの一部として承認された公式の Khronos 拡張機能。 KHR 拡張機能は、コア仕様自体と同じライセンスの対象になります。

Windows Mixed Reality OpenXR Runtime では、一連の MSFT および EXT 拡張機能がサポートされています。これらにより、完全な HoloLens 2 機能セットが OpenXR アプリケーションに提供されます。

機能 拡張機能の可用性
システム + セッション OpenXR 1.0 コア仕様:
XrInstanceXrSystemIdXrSession
参照スペース (ビュー、ローカル、ステージ) OpenXR 1.0 コア仕様:
XrSpace
ビューの構成 (モノ、ステレオ) OpenXR 1.0 コア仕様:
XrView...
スワップチェーン + フレーム タイミング OpenXR 1.0 コア仕様:
XrSwapchain... + xrWaitFrame
コンポジション レイヤー
(プロジェクション、クワッド)
OpenXR 1.0 コア仕様:
XrCompositionLayer... + xrEndFrame
入力とハプティクス (触覚) OpenXR 1.0 コア仕様:
XrAction...
Direct3D 11/12 統合 リリース済みの公式の KHR 拡張機能:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
非バインド参照スペース
(ワールド規模のエクスペリエンス)
リリース済みの MSFT 拡張機能:
XR_MSFT_unbounded_reference_space
空間アンカー

リリース済みの MSFT 拡張機能:
XR_MSFT_spatial_anchor

MSFT ランタイム 108: でリリースされた拡張機能 (HoloLens 2 のみ)
XR_MSFT_spatial_anchor_persistence

ハンド インタラクション
(握る/狙うポーズ、エアタップ、つかむ)

HoloLens 2 のみ

リリース済みの MSFT 拡張機能:
XR_MSFT_hand_interaction
ハンド アーティキュレーション + ハンド メッシュ

HoloLens 2 のみ

リリース済みの EXT 拡張機能:
XR_EXT_hand_tracking

リリース済みの MSFT 拡張機能:
XR_MSFT_hand_tracking_mesh

目の視線入力

HoloLens 2 のみ

リリース済みの EXT 拡張機能:
XR_EXT_eye_gaze_interaction
Mixed Reality キャプチャ
(PV カメラからの 3 番目のレンダリング)

HoloLens 2 のみ

リリース済みの MSFT 拡張機能:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
モーション コントローラーの相互作用プロファイル
(Samsung Odyssey および HP Reverb G2)
ランタイム 103 でリリース済みの MSFT 拡張機能:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
モーション コントローラーのレンダリング モデル ランタイム 104 でリリース済みの MSFT 拡張機能:
XR_MSFT_controller_model
シーンの理解 (平面、メッシュ)

HoloLens 2 のみ

ランタイム 106 でリリース済みの MSFT 拡張機能:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
シーン マーカー (QR コード)

HoloLens 2 のみ

MSFT ランタイム 113 でリリースされた拡張機能:
XR_MSFT_scene_marker
コンポジション レイヤーの再投影モード
(自動平面または向きのみの再投影)
ランタイム 106 でリリース済みの MSFT 拡張機能:
XR_MSFT_composition_layer_reprojection
他の Mixed Reality SDK との相互運用
(例: QR)
リリース済みの MSFT 拡張機能:
XR_MSFT_spatial_graph_bridge
UWP CoreWindow API との相互運用
(たとえば、キーボード/マウス)
ランタイム 103 でリリース済みの MSFT 拡張機能:
XR_MSFT_holographic_window_attachment
レガシ Mixed Reality WinRT API との相互運用
(例: SpatialAnchorTransferManager)

ランタイム 105 でリリース済みの MSFT 拡張機能:
XR_MSFT_perception_anchor_interop

その他のクロスベンダー拡張機能

リリース済みの公式の KHR 拡張機能:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

リリース済みの EXT 拡張機能:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

これらの拡張機能の一部はベンダー固有の MSFT 拡張機能として開始される場合がありますが、Microsoft およびその他の OpenXR ランタイム ベンダーは共同で、これらの機能領域の多くについて、クロスベンダーの EXT または KHR 拡張機能を設計しています。 クロスベンダー拡張機能を使用すると、コア仕様と同様に、ランタイム ベンダー間でこれらの機能に対して記述するコードを移植可能にします。

OpenXR が使用可能なケース

複合現実ヘッドセットを装着しているユーザーが再生している Minecraft のスクリーンショット

"Minecraft の新しい RenderDragon エンジンでは、OpenXR を使用してデスクトップ VR サポートが構築されています。"

Microsoft は Unity および Epic Games と共同で、HoloLens 2 だけでなく、HP の新しい Reverb G2 ヘッドセットを含む PC VR の全範囲にわたって Mixed Reality の未来が開かれるように取り組んでいます。 OpenXR により、現在出荷されている主要なタイトル (Minecraft や Microsoft Flight Simulator など) に対するクロスベンダー VR サポートが提供されます。 HoloLens (第 1 世代) の開発の詳細については、リリース ノートを参照してください。

Unity、Unreal Engine、または独自のエンジンで OpenXR の使用を開始する方法については、以下を参照してください。

Unity での OpenXR

HoloLens 2 および Windows Mixed Reality 開発に対する Microsoft の現在の推奨される Unity 構成は、Mixed Reality OpenXR プラグイン Unity 2020.3 LTS です。 このプラグインには、手/視線追跡、空間アンカー、HP リバーブ G2 コントローラーなど、HoloLens 2 と Windows Mixed Reality ヘッドセット機能を強化する OpenXR 拡張機能のサポートが含まれています。 MRTK-Unity では MRTK 2.7 以降で OpenXR をサポートしています。 Unity 2020 と OpenXR の使用を開始する方法の詳細については、「Unity のバージョンと XR プラグインの選択」を参照してください。

HoloLens (第 1 世代) 用に開発している場合は、レガシ WinRT API バックエンドで引き続き Unity 2019.4 LTS を使用する必要があります。 Unity 2019 アプリで新しい HP Reverb G2 コントローラーをターゲットとしている場合は、HP Reverb G2 入力に関するドキュメントを参照してください。

Unity 2021.3 LTS 以降では、HoloLens 2 と Windows Mixed Reality ヘッドセットをターゲットにするための唯一のサポートされている Unity バックエンドが OpenXR です。

Unreal Engine での OpenXR

Unreal Engine 4.23 は、OpenXR 1.0 のプレビュー サポートを出荷するためにリリースされた最初の主要なゲーム エンジンでした。 Unreal Engine 4.26 では、Unreal Engine の組み込みの OpenXR サポートを通じて、HoloLens 2、Windows Mixed Reality、およびその他のデスクトップ VR ヘッドセットのサポートを利用できるようになりました。 Unreal Engine 4.26 では、 Microsoft の OpenXR 拡張機能プラグインもサポート。 これにより、手操作と HP リバーブ G2 コントローラーのサポートが可能になり、HoloLens 2 と Windows Mixed Reality ヘッドセットの フル機能セットが点灯します。 Unreal Engine 4.26 は現在、Epic Games Launcher で、OpenXR プロジェクトをサポートする MRTK-Unreal 0.12 を使用して入手することができます。

ネイティブ開発用の OpenXR

HoloLens 2 で OpenXR を使用するか、デスクトップで Windows Mixed Reality イマーシブ VR ヘッドセットを使用して開発できます。 ヘッドセットにアクセスできない場合は、代わりに HoloLens 2 エミュレーターまたは Windows Mixed Reality シミュレーターを使用できます。

HoloLens 2 または Windows Mixed Reality VR ヘッドセット用の OpenXR アプリケーションの開発を開始するには、OpenXR 開発の開始方法に関するページを参照してください。

OpenXR API のすべての主要なコンポーネントに関するツアーと、現在 OpenXR を使用する実際のアプリケーションの例については、次の 60 分間のチュートリアル ビデオをご覧ください。

関連項目