Quest 3 的动态遮挡目前仅在少数应用中得到支持,但现在它质量更高,使用更少的 CPU 和 GPU,并且对开发人员而言略微更容易实现。
遮挡是指虚拟物体出现在真实物体后面的能力,这是混合现实头显的一项关键功能。仅对预先扫描的场景进行遮挡称为静态遮挡,而如果系统支持更改场景和移动物体,则称为动态遮挡。
Quest 3 推出时支持静态遮挡,但不支持动态遮挡。几天后,动态遮挡被作为开发人员的“实验性”功能发布,这意味着它无法在 Quest Store 或 App Lab 发布。在 12 月份,该限制被解除。
开发人员使用 Meta 的深度 API 在每个应用程序的基础上实现动态遮挡,该 API 提供由头显生成的每帧粗略深度图。不过,集成它是一个相对复杂的流程。它要求开发人员修改所有要遮挡的虚拟物体的着色器,这与一键式解决方案的理想情况相去甚远。因此,目前只有很少的 Quest 3 混合现实应用支持动态遮挡。
Quest 3 上动态遮挡的另一个问题是深度图的分辨率非常低,因此您会在物体边缘周围看到一个空隙,而且它无法拾取手指之间的空间等细节。
但是,随着 Meta XR Core SDK 的 v67 版本,Meta 稍微提高了深度 API 的视觉质量,并显着优化了其性能。该公司表示,它现在使用 80% 的 GPU 和 50% 的 CPU,为开发人员释放了额外的资源。
为了让开发人员更容易集成该功能,v67 还添加了对使用 Unity 的 Shader Graph 工具轻松为着色器添加遮挡的支持,并重构了深度 API 的代码以使其更容易使用。
我尝试了使用 v67 的深度 API,可以确认它提供了略微更高质量的遮挡,尽管它仍然非常粗糙。但 v67 还有一个比原始质量改进更重要的技巧。
深度 API 现在有一个选项可以从深度图中排除跟踪的手,以便可以使用手部跟踪网格将它们蒙蔽。一些开发人员长期以来一直在使用手部跟踪网格来执行仅手部遮挡,例如在 Quest Pro 上,而在 v67 中,Meta 提供了一个示例,展示了如何在深度 API 旁边执行此操作,以遮挡所有其他内容。
我对此进行了测试,发现它对你的手产生了明显更高质量的遮挡,尽管它在你的手腕处添加了一些视觉不一致,因为系统从深度图提供支持的遮挡过渡到那里。
相比之下,Apple Vision Pro 仅对您的手和手臂提供动态遮挡,因为它以与 Zoom 蒙蔽您相同的方式将它们蒙蔽,而不是生成深度图。这意味着在 Apple 的头显上,您手和手臂的遮挡质量要高得多,尽管您会看到一些特殊情况,例如您握持的物体出现在虚拟物体后面并在 VR 中不可见。
Quest 开发人员可以在此处找到 Unity 的深度 API 文档 Unity here ,以及此处找到 Unreal 的深度 API 文档 Unreal here 。