作为一项供开发人员测试混合现实动态遮挡的实验性功能,Meta推出了Quest 3的深度API。
在我们对Quest 3的评测中,我们严厉批评了缺乏混合现实动态遮挡的问题。虚拟物体可以出现在房间设置扫描生成的粗糙场景网格后面,但是它们始终会显示在移动物体的前方,即使距离更远,这看起来很突兀和不自然。
开发人员已经可以通过使用手部跟踪网格来实现手的动态遮挡,但很少有人这样做,因为它会在手腕处出现明显间隔,致使手臂的其余部分不被包括在内。
新的深度API为开发人员提供了一个由头显从其视角生成的逐帧粗糙深度图。这可以用于实现遮挡,无论是人物等移动物体,还是由于粗糙的场景网格可能没有捕捉到的静态物体的细节。
动态遮挡应该使Quest 3上的混合现实看起来更加真实。然而,头显的深度感知分辨率较低,所以它无法捕捉到手指之间的空隙,你会在家具边缘看到一个间隙。
深度图也仅建议在4米之内使用,之后”准确性会显著下降”,所以开发人员可能还想使用场景网格来实现静态遮挡。
开发人员可以通过两种方式实现遮挡:硬遮挡和软遮挡。硬遮挡稍微容易实现,但有锯齿状边缘,而软遮挡更难实现,有GPU成本,但效果更好。看着Meta的示例视频,很难想象有哪个开发人员会选择硬遮挡。
无论哪种情况,遮挡都需要使用Meta的特殊遮挡着色器或在自定义着色器中专门实现。这远非一键解决方案,对于开发人员来说,支持这一功能可能需要相当大的努力。
除了遮挡,开发人员还可以使用深度API在混合现实中实现基于深度的视觉效果,如雾。
目前,使用深度API需要在Quest 3头显上启用实验功能,方法是运行以下ADB命令:adb shell setprop debug.oculus.experimentalEnabled 1
Unity开发人员还必须使用Unity专用XR Oculus包的实验版本,并且必须使用Unity 2022.3.1或更高版本。
您可以在此处找到Unity的文档,以及此处找到Unreal的文档。
作为实验性功能,使用深度API构建的应用程序尚不能上传到Quest商店或App Lab,因此开发人员现在必须使用SideQuest等其他分发方法来分享实现。Meta通常会在随后的SDK版本中将实验功能升级为正式生产功能。