OpenXR
OpenXR 是来自 Khronos 的一种开放式免版税 API 标准,它对涵盖混合现实的各种设备提供引擎本机访问。
你可在桌面上的 HoloLens 2 或 Windows Mixed Reality 沉浸式 VR 头戴显示设备上使用 OpenXR 进行开发。 如果你无法访问头戴显示设备,可以改用 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 运行时支持一组 MSFT
和 EXT
扩展,这些扩展将全套 HoloLens 2 功能引入 OpenXR 应用程序:
尽管其中一些扩展刚开始可能是特定供应商的 MSFT
扩展,但 Microsoft 和其他 OpenXR 运行时供应商正在通力合作,为其中许多功能领域设计跨供应商的 EXT
或 KHR
扩展。 跨供应商扩展使为跨运行时供应商移植的这些功能编写的代码与核心规范一样。
可在何处使用 OpenXR?
我的世界的新 RenderDragon 引擎已使用 OpenXR 构建其桌面 VR 支持!
Microsoft 一直与 Unity 和 Epic Games 合作,确保混合现实的未来是开放的,不仅适用于 HoloLens 2,而且适用于所有电脑 VR,包括 HP 新推出的 Reverb G2 头戴显示设备。 OpenXR 为当今发售的主要游戏(如我的世界和 Microsoft Flight Simulator)提供跨供应商 VR 支持。 有关 HoloLens(第一代)开发的详细信息,请参阅发行说明。
若要了解如何在 Unity、Unreal Engine 或你自己的引擎中开始使用 OpenXR,请继续阅读!
Unity 中的 OpenXR
Microsoft 目前建议用于 HoloLens 2 和 Windows Mixed Reality 开发的 Unity 配置是带有 Mixed Reality OpenXR 插件的 Unity 2020.3 LTS。 此插件包括对 OpenXR 扩展的支持,这些扩展可照亮 HoloLens 2 和 Windows 混合现实头戴显示设备的完整功能,包括手/眼跟踪、空间定位点和 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 混合现实头戴显示设备的 Unity 后端。
Unreal Engine 中的 OpenXR
Unreal Engine 4.23 是第一个提供 OpenXR 1.0 预览支持的主要游戏引擎版本! 现在,在 Unreal Engine 4.26 中,通过 Unreal Engine 的内置 OpenXR 支持提供对 HoloLens 2、Windows 混合现实 和其他桌面 VR 头戴显示设备的支持。 Unreal Engine 4.26 还支持 Microsoft的 OpenXR 扩展插件。 这可实现手动交互和 HP Reverb G2 控制器支持,从而点燃 HoloLens 2 和 Windows 混合现实头戴显示设备的完整功能集。 Unreal Engine 4.26 如今可在 Epic Games Launcher 上使用,MRTK-Unreal 0.12 支持 OpenXR 项目。
使用 OpenXR 进行本机开发
你可在桌面上的 HoloLens 2 或 Windows Mixed Reality 沉浸式 VR 头戴显示设备上使用 OpenXR 进行开发。 如果你无法访问头戴显示设备,可以改用 HoloLens 2 仿真器或 Windows Mixed Reality 模拟器。
若要开始为 HoloLens 2 或 Windows Mixed Reality VR 头戴显示设备开发 OpenXR 应用程序,请参阅如何开始使用 OpenXR 开发。
有关 OpenXR API 的所有主要组件的教程,以及目前使用 OpenXR 的实际应用程序的示例,请观看这段 60 分钟的演练视频: