OpenXR 对 Meta Quest 头戴设备的支持
更新时间: 2025年1月23日
OpenXR 是 Khronos Group 的一个免费开放标准,用于开发在多个平台上运行的高性能 VR 应用程序。OpenXR 通过使开发者能够在多个平台上重复使用代码简化了 VR 开发。因此,开发者可以为多个供应商的设备创建可移植代码。要了解更多关于 OpenXR 的信息,请参阅
Khronos OpenXR 网页。
OpenXR SDK 包括使用 OpenXR API 为 Meta Quest 和 Quest 2 开发原生 VR 应用程序的必要资源。Meta Quest 头戴设备遵循 OpenXR 1.0 标准。
从
下载页面下载 Oculus OpenXR SDK。
重要提示:通过查看
核心概念和相关主题,从 OpenXR 核心概念开始。这些主题涵盖:
除了 Khronos Group 的文档,本部分还含有为 Meta Quest 和 Quest 2 开发 OpenXR 应用程序所需的信息。
在为 Meta Quest 和 Quest 2 设置 OpenXR 项目时,将以下活动意图筛选条件添加到 AndroidManifest.xml:
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
Meta 支持 Khronos OpenXR 安卓加载器。不需要专有加载器。所有示例应用程序均已与 Khronos OpenXR Android Loader 集成。
但仍然存在局限性:*Meta 只支持 Khronos OpenXR Android Loader 1.0.34 及以上版本。使用低于此版本的 Khronos OpenXR Android Loader 将导致您的应用程序崩溃。*此支持适用于操作系统版本 v62 或更高版本的用户和 Quest 1 用户。*使用新加载器的应用程序将在 v62 之前的操作系统版本上崩溃。*由于兼容性问题,如果您的应用程序使用 Khronos OpenXR Android Loader,则使用非 Quest 1 设备和低于 v62 的操作系统的用户将无法在 Meta Store 上看到您的更新。
要在您自己的项目中添加标准 (Khronos) OpenXR Android Loader,请在 build.gradle 中添加以下代码:
android{
...
buildFeatures {
prefab true
}
}
和
dependencies {
...
implementation 'org.khronos.openxr:openxr_loader_for_android:1.0.34'
}
加载之前,必须使用平台特定的参数初始化加载程序。这些参数是在 1.0.11 OpenXR 规范中添加的,并通过 KHR 加载器扩展程序 XR_KHR_loader_init 和 XR_KHR_loader_init_android 指定。应用需要先通过带空实例指针的 xrGetInstanceProcAddress 获取 xrInitializeLoaderKHR 的函数指针,然后以 XR_KHR_loader_init_android 中定义的 XrLoaderInitInfoAndroidKHR 结构调用 xrInitializeLoaderKHR。
应用需要通过 XR_KHR_android_create_instance 扩展程序为 xrCreateInstance 指定特定于平台的参数。
XrCompositor_NativeActivity - 使用 AndroidNativeActivity 类的简单场景来说明 OpenXR 提供的不同层类型的使用。XrHandsFB - 演示了三个特定于 Meta 的手部扩展程序,可助您渲染蒙皮手部网格、使用碰撞胶囊和 ray-cast-plus-pinch UI 互动模型。这些使 OpenXR 手部支持与相应的 VrApi 手部 API 等同。XrHandsAndControllers - 一个简单的示例,显示如何设置手 + 控制器同步追踪,并检测何时持有控制器,以构建多模态互动体验XrPassthrough - 一个示例应用,演示了基本的透视功能。在控制器上提供输入,以切换不同的功能和风格,如基本透视、静止和动画风格、蒙版(选择性)和投影(网格)透视。XrSpatialAnchor - 一个示例应用程序,演示了我们的 Spatial Anchor 系统的功能,并提供了处理、维护和共享 Spatial Anchors 的示例代码,您可以在自己的项目中使用。XrColorSpaceFB - 关于颜色空间的教育示例,演示如何使用 XR_FB_color_space 来指定应用的颜色空间。XrControllers -一个示例,显示如何通过 OpenXR 访问 Meta Quest Touch Pro 控制器上的每个输入操作。它提供了使用 TruTouch 高级触感 API 与 Meta Quest Touch Pro 控制器的示例。XrDynamicObjects:提供动态对象追踪器 API 的用法示例,显示如何通过 Meta Quest 3 及其他设备的透视功能追踪和呈现键盘。XrSpaceWarp - 一个演示应用程序空间扭曲的示例,该功能在性能和延迟方面实现了阶跃函数改进。XrBodyTrackingFB - 一个演示身体追踪功能的示例,该功能可以绘制身体、手臂和手上的骨骼关节,并在该关节上叠加相应的关节坐标系。XrEyeTrackingSocialFB - 眼睛追踪功能的演示,在社交环境中显示双眼的视线数据。XrFaceTrackingFB - 一个面部追踪示例应用,显示移动面部区域(如嘴、脸颊、眼睛等)时触发/更改的相应混合形状的权重。XrSceneModel - 演示 场景感知体验的应用,可以与用户的环境(如地板、墙壁和家具)进行丰富的互动。XrVirtualKeyboard - 演示如何使用虚拟键盘。该应用程序控制键盘的定位、互动和渲染。XrMicrogestures - 演示如何使用微手势的示例。展示用户如何正确做出拇指滑动(向左、向右、向后、向前)或拇指轻触等微手势。