首页 文章

如何获得 ARKit 1.5 上的镜头位置

提问于
浏览
0

在 ARKit 1.5 之前,我们无法调整相机的焦点,并且获取镜头位置将始终返回相同的值。但是,对于 ARKit 1.5,我们现在可以通过设置ARWorldTrackingConfiguration.isAutoFocusEnabled来使用自动对焦。我的问题是,是否有任何方法可以从 ARKit 获取当前镜头位置,以便可以在虚拟对象上应用 out-of-focus 效果?我看了一些可以存储此信息的类,例如ARFrameARSession,但是它们似乎没有这样的字段。

我偶然发现这个线程,OP 表示他可以使用一些私有 API 来设置镜头位置,但这是在 ARKit 1.5 发布之前,这是让您的应用被 App Store 拒绝的可靠方法。

是否有任何合法方法可以从 ARKit 获得镜头位置?

1 回答

  • 0

    我的猜测是:可能不会,但是您可以尝试某些事情。

    定义由ARCamera出售的内在矩阵以像素单位表示焦距。但是我不确定这是否可以(与光圈一样)定义深度模糊效果。它也不会在自动对焦期间改变(至少可以测试的部分)。

    ARKit 底层的 AVCapture API 提供了lensPosition指示符,但这是一个通用的浮点值。零是最小对焦距离,一是最大对焦距离,并且在没有实际测量的情况下,这对应于您不知道要为每个可能的镜头位置应用多少模糊(或 SceneKit 中基于物理的相机设置,要使用的 Unity 设置)。

    即使您可以使用lensPosition,也没有 API 可以让 ARSession 使用捕获设备。不过,您可以放心地假设它是后置(宽)相机。

相关问题