在最近的一年里, Meta 在 MR 混合现实开发和用户体验方面进行了许多升级,为开发者提供了更加实用丰富的功能,更加简化的开发流程。总结一下有以下几个重要的升级:
-
透视畸变显著减少。
-
Depth API 消耗性能更少。Depth API 是 Meta 推出的基于深度的用于实时环境遮挡的开发 API,比如当一个现实中的物体位于一个虚拟物体前方的时候,能够遮挡住后方的虚拟物体,形成正确的前后遮挡关系。在苹果的 Apple Vision Pro 中,当用户的手位于虚拟物体之前时,能够对手部进行抠像,遮挡住后方的虚拟物体。Meta 的 Depth API 也能实现相同的效果,并且除了手部,任何现实物体都能与虚拟物体形成前后遮挡的关系。因为是实时计算并且受限于 Quest 芯片的处理性能,Depth API 会比较消耗性能,但是从 Meta XR SDK v67 (发布这篇文章的时候已经更新到了 v68)开始,Meta 对 Depth API 的性能消耗进行了进一步优化,并且将其从实验性功能转为正式版功能。
-
锚点精度升级,支持多房间体验。Quest 的锚点分为场景锚点和空间锚点。场景锚点是设备扫描房间时自动创建的,用于定位整个扫描的房间模型。空间锚点是用户在应用运行过程中创建的,可以将虚拟物体固定在现实中的特定位置。从 Meta XR SDK v66 开始,Quest的锚点精度得到进一步提升,基于点云数据提升大空间追踪效果。在 Meta 的官方博客的介绍里,能够支持在 200 平方米的空间里精确锚定。此外,开发者能够关闭 MR 应用的安全边界,使得在用户在现实环境中能够自由移动。多房间和场景扫描相关,如果想要开发与现实空间互动的 MR 应用,需要提前扫描周围的环境,让设备建立房间模型,理解现实空间的布局。但是过去只能加载出一个扫描的房间模型,而现在 Quest 支持扫描多个房间,最多能够记忆 15 个房间,然后应用能够把用户周围扫描过的所有房间一起加载出来。这样子就能将一个大空间分为不同的小房间,最终把所有小房间都加载出来,也能拼合成一个大空间,实现连贯的 MR 体验,一定程度上解决了空间面积太大无法扫描的问题(需要保证空间是有封顶的)。
MR 混合现实是 Meta 近年来一直探索的方向,侧重于虚拟与现实的融合,三维空间中的人机交互。而在今年的 Meta Connect 2024 上,Meta 又分享了未来在开发层面的一些新功能:
-
Audio-to-Expressions(音频转表情): 该技术能够根据用户发出的声音模拟出虚拟形象的面部表情,无需使用硬件的面部捕捉。这大大提升了虚拟人的互动性。
-
Acoustic Ray Tracing(声线追踪):此功能能够模拟声波在空间中的实际传播方式,比如模拟声波的反射,帮助开发者制作更准确、更自然、更逼真的空间音频环境。Meta 即将推出的 VR 大作《蝙蝠侠:阿卡姆之影 VR》中将会用到该技术。
-
Microgestures(微手势):微手势通过识别基于手指的手势,扩展了混合现实中手部交互的可能性和易用性。这些手势可用于 2D 菜单导航、UI 快捷方式和移动等场景,以提高舒适度和易用性。如下图所示,用户仅需左右拨动大拇指进行 VR 中的转向。
-
Passthrough Camera Access API(透视摄像头权限 API):许多开发者心心念念的摄像头权限终于要开放了。在过去,因为隐私政策的考虑,Quest 以及其他很多 VST 设备都没有向开发者开放设备的摄像头权限,以至于无法使用原生支持的功能开发一些基于计算机视觉的 AI 应用。现在 Meta 宣布将在 2025 年早些时候推出透视摄像头权限 API,目前尚不清楚此 API 会有哪些限制,但是根据 Meta Connect 大会上分享的信息,能够实现一些热门的功能,例如实时物体跟踪与识别。
-
Destructible Mesh(可破坏的网格):此功能可以参考 Meta Quest 3 自带的 MR 游戏《初次相遇》,在这个游戏中,玩家可以看到自己房间的墙体破碎效果。在过去,开发者需要自己写算法实现这个效果,难度比较高,而在未来,墙体破碎的功能将直接集成到 Meta 的 MRUK(混合现实开发工具)中。
- Instant Placement(即时放置):此功能可以让用户将 3D 物体或者 UI 面板放置在房间模型中的 Mesh 上,比如把物体放置吸附到桌面上,或者把 UI 面板贴合到墙壁上。在过去,开发者需要自己实现这个功能,比如通过射线检测,把虚拟物体生成在射到的平面上。而在未来,Meta 将这个开发流程进行了封装,开发者能够直接把相关的模块拿来使用,无需写过多代码也能够开发出相同的功能。
-
Immersive Debugger(沉浸式调试器):此功能可以让开发者在应用内部调试程序,提高真机调试效率,现已在 SDK v68 推出了这个功能。以 Unity 开发为例,如果是串流调试,开发者能够在 Unity 编辑器的控制台中查看日志输出和报错信息,但是如果把程序打包到头显中运行,就无法查看控制台输出信息,导致如果运行结果与预期不符,难以定位到发生错误的地方。而 Meta XR SDK 内置的 Immersive Debugger 能够让开发者在应用内部查看 Unity 控制台的输出信息,并且还能可视化 Unity 脚本中的参数和 Inspector 面板当中的组件信息,方便真机调试。