尽管Meta Quest 3动态遮挡功能目前仅支持少数应用程序,但现在其质量更高,支持开发者基于更少CPU和GPU资源消耗实现目标。
遮挡是指虚拟物体出现在真实物体后面的呈像,这是混合现实头显的关键功能。仅对预扫描场景执行此操作称为静态遮挡,而如果系统支持更改场景和移动物体,则称为动态遮挡。
Quest 3推出时支持静态遮挡,不支持动态遮挡。几天后,动态遮挡作为一项面向开发者的“实验性”功能发布。
开发者使用Meta Depth API可在每个应用程序上实现动态遮挡,该API提供由Quest 3生成的粗略每帧深度图。不过,集成动态遮挡是一个相对复杂的过程,这要求开发者修改着色器以适应想要遮挡的所有虚拟对象,这与一键式解决方案的理想情况相去甚远。因此,目前很少有Quest 3混合现实应用支持动态遮挡。
另外,Quest 3动态遮挡的另一个问题是深度图分辨率非常低,因此你会看到物体边缘周围有一个空隙,并且不会捕捉手指之间空间。
不过,随着Meta XR Core SDK v67的推出,Meta略微提高了Depth API的视觉质量,并显著优化了其性能。该公司表示,新SDK使Quest 3实现动态遮挡时GPU消耗减少了80%,CPU消耗减少了50%,从而为开发者释放了更多资源。
为了让开发者更容易集成该功能,v67还增加了对使用Unity Shader Graph工具构建的着色器轻松添加遮挡的支持,并重构了Depth API的代码以使其更易于使用。
我试用了v67 Depth API,确认该版本提供了更高质量的遮挡,尽管仍然非常粗糙。但v67还提供了另一个比原始质量改进更重要的秘诀。
Depth API现在有一个选项,可以将被追踪的手部从深度图中排除,以便可以使用手部追踪网格将其遮挡。一些开发者长期以来一直在使用手部追踪网格进行仅限手部的遮挡,例如在 Quest Pro上,而 Meta在v67中提供了一个示例,展示了如何与Depth API一起执行此操作以遮挡其他所有内容。
我对此进行了测试,发现其可以实现更高质量的手部遮挡,但会在手腕处增加一些视觉不一致性,系统会转换为由深度图提供支持的遮挡。
相比之下,Apple Vision Pro仅针对手和手臂进行动态遮挡,而不是生成深度图。这意味着在 Vision Pro上,手和手臂的遮挡质量明显更高,尽管会看到一些奇怪现象,例如握着的物体出现在虚拟物体后面,而在VR中不可见。