Quest 3 上的动态遮挡目前仅支持少数应用程序,但现在它的质量更高,使用更少的 CPU 和 GPU,并且开发人员更容易实现。
遮挡是指虚拟物体出现在真实物体后面的能力,这是混合现实头戴设备的关键功能。仅对预扫描场景执行此操作称为静态遮挡,而如果系统支持更改场景和移动物体,则称为动态遮挡。
Quest 3推出时支持静态遮挡,但不支持动态遮挡。几天后,动态遮挡作为一项面向开发人员的“实验性”功能发布,这意味着它无法在 Quest Store 或 App Lab 上发布,12 月该限制被取消。
开发人员使用 Meta 的 Depth API 在每个应用程序上实现动态遮挡,该 API 提供由头戴设备生成的粗略每帧深度图。不过,集成它是一个相对复杂的过程。它要求开发人员修改着色器以适应他们想要遮挡的所有虚拟对象,这与一键式解决方案的理想情况相去甚远。因此,目前很少有 Quest 3 混合现实应用程序支持动态遮挡。
Quest 3 上动态遮挡的另一个问题是深度图的分辨率非常低,因此你会看到物体边缘周围有一个空隙,并且它不会捕捉到手指之间的空间等细节。
不过,随着 Meta XR Core SDK v67 的推出,Meta 略微提高了 Depth API 的视觉质量,并显著优化了其性能。该公司表示,现在 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 仅针对您的手和手臂进行动态遮挡,因为它会像 Zoom 遮挡您一样遮挡它们,而不是生成深度图。这意味着在 Apple 的耳机上,您的手和手臂的遮挡质量明显更高,尽管您会看到一些奇怪现象,例如您握着的物体出现在虚拟物体后面,而在 VR 中不可见。
译自:uploadvr