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 拡張機能も使用します。これにより、連結ハンド トラッキング、視線追跡、空間マッピング、空間アンカーなどの OpenXR 1.0 コア以外の追加機能を有効にすることができます。 今年後半に予定されている拡張機能の詳細については、下記の「ロードマップ」セクションを参照してください。

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

ロードマップ

OpenXR 仕様では、ランタイム実装者が基本 OpenXR 1.0 仕様で定義されているコア機能以外の追加機能を公開できる拡張機能メカニズムが定義されています。

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

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

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

Feature area (機能領域) 拡張機能の可用性
システム + セッション OpenXR 1.0 コア仕様:
XrInstance, XrSystemId, XrSession
参照スペース (ビュー、ローカル、ステージ) 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

ランタイム 108 でリリース済みの MSFT 拡張機能:(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)
MSFT ランタイム 103 でリリース済みの 拡張機能:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
モーション コントローラーのレンダリング モデル MSFT ランタイム 104 でリリース済みの 拡張機能:
XR_MSFT_controller_model
シーンの理解 (平面、メッシュ)

HoloLens 2 のみ

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

MSFT ランタイム 105 でリリース済みの 拡張機能:
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 が使用可能なケース

Mixed Reality ヘッドセットを装着しているユーザーが 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 Reverb 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 では、HoloLens 2、Windows Mixed Reality、およびその他のデスクトップ VR ヘッドセットのサポートが、UnrealEngine の組み込みの OpenXR サポートを通じて利用できるようになりました。 さらに、Unreal Engine 4.26 では、Microsoft の OpenXR 拡張機能プラグインもサポートされます。これにより、ハンド インタラクションおよび HP Reverb 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 分間のチュートリアル ビデオをご覧ください。

関連項目