MetaQuest 平台的“透视摄像头API”(Passthrough Camera API) 终于与开发者见面了!这项备受期待的新功能现在已经可以供开发者们尽情探索,但需要注意的是,目前还无法直接将其集成到 Meta Horizon Store 上的应用中。这一API的开放,无疑预示着Quest系列头显在混合现实(MR)应用领域将迎来更广阔的发展空间。
此项新功能最早在 Meta Connect 2024 大会上公布,并承诺于今年上线。现在,Quest 3 和 Quest 3S 的开发者已经可以体验到它的强大之处。当前版本被标记为“实验性发布”,意味着开发者可以自由地进行实验,甚至可以通过 SideQuest 等平台分发包含该 API 的 APK 文件。但遗憾的是,开发者们目前还不能将它直接应用到 Meta Horizon Store 上架的应用中。Meta 在发布新 API 时通常会采取这种循序渐进的方式,根据以往经验来看,一般会在几个月内开放商店应用的集成。这种做法可以确保API的稳定性和安全性,同时也能让开发者有足够的时间去适应和优化。
值得一提的是,部分开发者已经获得了抢先体验的资格,并提前展开了相关实验。Meta 还将于下周的 GDC(游戏开发者大会)上,邀请 Niantic、Creature 和 Resolution 的代表来分享他们使用该 API 的心得和经验。
什么是透视摄像头访问权限?
像 Quest 3 这样的头显通过摄像头让用户能够看到现实世界,但在此之前,只有系统软件才能获得对这些摄像头的原始访问权限。第三方开发者虽然可以使用透视功能作为背景,但无法直接访问摄像头数据。他们只能获取由系统导出的高级数据,例如手部和身体的骨骼坐标、包含家具边界框的 3D 环境网格,以及有限的物体追踪功能。这意味着开发者无法运行他们自己的计算机视觉模型,这极大地限制了这些头显的增强现实(AR)能力。
不过,Apple 在 visionOS 2 上为企业客户提供了访问 Vision Pro 透视摄像头原始数据的权限,仅限于非公开的内部应用。但这需要获得 Apple 的特殊许可,并且仅限于“商业环境”。
为了让“透视摄像头API”正常工作,用户需要像授权麦克风权限一样,允许应用访问头显的摄像头。一旦获得授权,应用就可以访问前置彩色摄像头的数据,包括镜头固有参数和头显姿态等Meta,从而利用这些数据来运行自定义的计算机视觉模型。
应用可以利用这项功能实现各种各样的应用场景,包括扫描和跟踪二维码,检测桌面上的游戏棋盘并在其上添加虚拟角色和物体,检测物理对象以提供企业指导体验,或者集成云端托管的大型语言模型(LLM)的视觉 AI 功能。开发者唯一的限制在于哪些实时计算机视觉模型能够在 XR2 Gen 2 芯片组上高效运行,或者他们愿意为哪些云端托管的图像模型付费。这意味着对于开发者来说,算力成本和模型优化将是未来需要重点考虑的因素。
Meta 软件工程师 Roberto Coviello 的 QuestCameraKit 示例。
透视摄像头流以最高 1280×960 的分辨率和 30FPS 的帧率提供给应用,延迟据称在 40-60 毫秒之间。这意味着它不适合跟踪快速移动的物体,例如自定义控制器。 但对于大多数静态或慢速移动物体的识别和跟踪来说,已经足够使用。
从技术层面来看,实际上并没有专门的 Meta Quest Camera Passthrough API,也不是 OpenXR 的扩展。开发者确实需要请求 Horizon OS 特定的 头显 Cameras 权限,但除此之外,Quest 的透视摄像头访问利用 Android 现有的 Camera2 API 还返回头显姿态(通过 OpenXR 获得),这正是自定义引擎开发人员或 Unreal 或 Godot 源代码的开发者所使用的。这也意味着相同的代码也将在 Google 即将推出的 Android XR 平台上运行(该平台将在三星的头显上首次亮相),唯一不同的是权限请求方式。
对于 Unity 开发者来说,他们可以通过 Unity 的 WebCamTexture API 访问摄像头,就像他们已经在引擎中访问手机、平板电脑和 PC 摄像头以及网络摄像头一样。 然而,这里有一个限制,Unity 的 WebCamTexture API 一次只支持一个摄像头,而不能同时支持两个摄像头。未来如果Unity能够解决这个问题,无疑会进一步方便开发者的使用。
感兴趣的开发者可以在以下链接中找到 Quest 透视摄像头访问的文档: Unity / Native Android。
Meta 已经在 GitHub 上发布了五个官方 Unity 示例:CameraViewer、CameraToWorld、BrightnessEstimation、MultiObjectDectection、ShaderSample。 Meta 软件工程师 Roberto Coviello 另外在 GitHub 上发布了 QuestCameraKit, 包含五个示例的集合:Color Picker, Object Detection with Unity Sentis, QR Code Tracking with ZXing, Frosted Glass Shader, 和 OpenAI vision model。