共用方式為


OpenXR

OpenXR 標誌

OpenXR 是 來自 Khronos 的開放式免版稅 API 標準,可讓引擎原生存取 混合實境頻譜中各種裝置。

您可以在 HoloLens 2 上使用 OpenXR 進行開發,或在桌面上 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 本身不是混合實境引擎。 相反地,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...
Swapchains + 畫面時間 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 相機) 的第三個轉譯

僅限 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
QR 代碼 (的場景標記)

僅限 HoloLens 2

MSFT 在運行時間 113 中發行的擴充功能:
XR_MSFT_scene_marker
組合層重新投影模式
(自動規劃或僅限方向重新投影)
MSFT 在運行時間 106 中發行的擴充功能:
XR_MSFT_composition_layer_reprojection
與其他 Mixed Reality SDK 互作性
例如, (,QR)
MSFT 已發行擴充功能:
XR_MSFT_spatial_graph_bridge
Interop with UWP CoreWindow API
例如, (鍵盤/滑鼠)
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 Simulator! 如需開發 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-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 開始,OpenXR 是唯一支援以 HoloLens 2 和 Windows Mixed Reality 頭戴式裝置為目標的 Unity 後端。

Unreal Engine 中的 OpenXR

Unreal Engine 4.23 是第一個主要遊戲引擎版本,可提供 OpenXR 1.0 的預覽支援! 現在在 Unreal Engine 4.26 中,HoloLens 2、Windows Mixed Reality 和其他桌面 VR 頭戴裝置的支援可透過 Unreal Engine 的內建 OpenXR 支援來取得。 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

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

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

如需 OpenXR API 所有主要元件的導覽,以及現今使用 OpenXR 之真實世界應用程式的範例,請參閱這段 60 分鐘的逐步解說影片:

另請參閱