OpenXR

OpenXR 標誌

OpenXR 是 來自 Khronos的開放免版稅 API 標準,提供引擎跨 混合實境範圍對一系列裝置的原生存取。

您可以在桌面上使用 OpenXR HoloLens 2,或在桌面上使用 Windows Mixed Reality沉浸式 VR 頭戴裝置進行開發。 如果您沒有頭戴式裝置的存取權,您可以改用HoloLens 2模擬器或Windows Mixed Reality模擬器。

為什麼 OpenXR?

透過 OpenXR,您可以建置以全像攝影裝置為目標的引擎,例如HoloLens 2和沉浸式 VR 裝置,例如桌上型電腦的Windows Mixed Reality頭戴裝置。 OpenXR 可讓您撰寫程式碼一次,然後可移植到各種不同的硬體平臺。

OpenXR API 會使用載入器,將應用程式直接連線到頭戴式裝置的原生平臺支援。 無論使用者使用的是Windows Mixed Reality或任何其他頭戴式裝置,都獲得最大效能和最低延遲。

什麼是 OpenXR?

OpenXR API 提供核心姿勢預測、畫面計時和空間輸入功能,您需要建置可同時以全像攝影和沉浸式裝置為目標的引擎。

若要瞭解 OpenXR API,請參閱 OpenXR 1.0 規格API 參考快速參考指南。 如需詳細資訊,請參閱 Khronos OpenXR 頁面

若要以HoloLens 2的完整功能集為目標,您也會使用跨廠商和廠商專屬的 OpenXR 延伸模組,讓 OpenXR 1.0 核心以外的其他功能,例如清楚的手部追蹤、眼球追蹤、空間對應和空間錨點。 如需詳細資訊,請參閱下面的 藍圖一節 ,以瞭解今年稍後的延伸模組。

OpenXR 本身不是混合實境引擎。 相反地,OpenXR 可讓 Unity 和 Unreal 等引擎撰寫可攜式程式碼一次,然後就能存取使用者全像攝影或沉浸式裝置的原生平臺功能,無論廠商建置該平臺。

藍圖

OpenXR 規格會定義擴充機制,讓執行時間實作者公開除了基底 OpenXR 1.0 規格中所定義的核心功能之外的其他功能。

OpenXR 延伸模組有三種:

  • 例如, XR_MSFT_... 廠商擴充功能 () : 在硬體或軟體功能中啟用每個廠商的創新。 任何執行時間廠商隨時都可以引進並寄送廠商延伸模組。
    • 例如,實驗性廠商擴充功能 (, XR_MSFTX_...) : 正在預覽的實驗性廠商延伸模組,以收集意見反應。 XR_MSFTX_... 擴充功能僅適用于開發人員裝置,且會在實際擴充功能隨附時移除。 若要進行實驗,您可以在 開發人員裝置上啟用預覽延伸模組
  • 跨廠商 EXT 延伸模組: 多個公司定義及實作的跨廠商延伸模組。 感興趣的公司群組可以隨時引進 EXT 擴充功能。
  • 官方延伸模組:官方 KHR Khronos 延伸模組已作為核心規格發行的一部分。 KHR 擴充功能涵蓋在核心規格本身的相同授權中。

Windows Mixed Reality OpenXR 執行時間支援一組 MSFTEXT 擴充功能,將完整的一組HoloLens 2功能帶入 OpenXR 應用程式:

功能區域 擴充功能可用性
系統 + 會話 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

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
混合實境擷取
從 PV 相機) (第三次轉譯

僅限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 的 Interop
例如 ,QR) (
MSFT 擴充功能已發行:
XR_MSFT_spatial_graph_bridge
與 UWP CoreWindow API 的 Interop
例如, (鍵盤/滑鼠)
MSFT 在執行時間 103 中發行的擴充功能:
XR_MSFT_holographic_window_attachment
與舊版 Mixed Reality WinRT API 的 Interop
例如, 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 執行時間廠商一起合作,為其中許多功能區域設計跨廠商 EXTKHR 延伸模組。 跨廠商擴充功能可讓您針對跨執行時間廠商移植的這些功能撰寫程式碼,如同核心規格一樣。

您可以在何處使用 OpenXR?

使用者戴著混合實境頭戴式裝置播放 Minecraft 的螢幕擷取畫面

Minecraft 的新 RenderDragon 引擎已使用 OpenXR 建置其桌面 VR 支援!

Microsoft 已與 Unity 和 Epic Games 合作,以確保混合實境的未來已開啟,不僅適用于HoloLens 2,還跨電腦 VR 的完整廣度,包括HP 的新 Reverb G2 頭戴式裝置。 OpenXR 為現今的主要標題提供跨廠商 VR 支援,例如 Minecraft 和 Microsoft Flight 模擬器! 如需開發 HoloLens (第 1 代) 的詳細資訊,請參閱 版本資訊

若要瞭解如何在 Unity、Unreal Engine 或您自己的引擎中開始使用 OpenXR,請閱讀!

Unity 中的 OpenXR

Microsoft 目前針對HoloLens 2和Windows Mixed Reality開發的 Unity 組態是具有 Mixed Reality OpenXR 外掛程式的Unity 2020.3 LTS。 此外掛程式包含 OpenXR 延伸模組的支援,可減輕HoloLens 2和Windows Mixed Reality頭戴式裝置的完整功能,包括手部/眼球追蹤、空間錨點和 HP Reverb G2 控制器。 自 MRTK 2.7起,MRTK-Unity支援 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開始,OpenXR 將是唯一支援的 Unity 後端,以HoloLens 2和Windows Mixed Reality頭戴式裝置為目標。

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 Reverb G2 控制器支援、啟動一組完整的HoloLens 2和Windows Mixed Reality頭戴裝置。 Unreal Engine 4.26 目前可在 Epic Games Launcher上使用,MRTK-Unreal 0.12 支援 OpenXR 專案。

適用于原生開發的 OpenXR

您可以在桌面上使用 OpenXR HoloLens 2,或在桌面上使用 Windows Mixed Reality沉浸式 VR 頭戴裝置進行開發。 如果您沒有頭戴式裝置的存取權,您可以改用HoloLens 2模擬器或Windows Mixed Reality模擬器。

若要開始開發適用于 HoloLens 2 或 Windows Mixed Reality VR 頭戴裝置的 OpenXR 應用程式,請參閱如何開始使用 OpenXR 開發

如需流覽 OpenXR API 的所有主要元件,以及目前使用 OpenXR 的實際應用程式範例,請參閱這段 60 分鐘的逐步解說影片:

另請參閱