Ios 如何在ARKit 1.5上获得镜头位置

Ios 如何在ARKit 1.5上获得镜头位置,ios,arkit,Ios,Arkit,在ARKit 1.5之前,我们无法调整相机的焦距,获取镜头位置将始终返回相同的值。然而,在ARKit 1.5中,我们现在可以通过设置ARWorldTrackingConfiguration.isAutoFocusEnabled来使用自动对焦。我的问题是,有没有办法从ARKit获取当前镜头位置,以便我可以在虚拟对象上应用离焦效果?我查看了一些可以存储这些信息的类,如ARFrame或ARSession,但它们似乎没有这样的字段 我偶然发现,OP说他可以通过使用一些私人API设置镜头位置,但这是在AR

在ARKit 1.5之前,我们无法调整相机的焦距,获取镜头位置将始终返回相同的值。然而,在ARKit 1.5中,我们现在可以通过设置
ARWorldTrackingConfiguration.isAutoFocusEnabled
来使用自动对焦。我的问题是,有没有办法从ARKit获取当前镜头位置,以便我可以在虚拟对象上应用离焦效果?我查看了一些可以存储这些信息的类,如
ARFrame
ARSession
,但它们似乎没有这样的字段

我偶然发现,OP说他可以通过使用一些私人API设置镜头位置,但这是在ARKit 1.5发布之前,这是一种让你的应用被应用商店拒绝的可靠方法


有什么合法的方法可以从ARKit那里得到镜头位置吗?

我的猜测是:可能没有,但有些事情你可以尝试一下

ARCamera出售的矩阵定义为以像素单位表示焦距。但我不确定这是否是一个可以(和其他像光圈一样的东西一起)定义深度模糊效果的度量。也不知道它在自动对焦过程中是否会改变(至少可以测试该部分)

ARKit底层的AVCapture API提供了一个指示符,但它是一个通用的浮点值。零是最小焦距,一是最大焦距,如果没有真实世界的测量,这对应于您不知道对每个可能的镜头位置应用多少模糊(或者SceneKit中基于物理的相机设置,要使用的单位设置)

即使您可以使用
lensPosition
,也没有API来获取会话使用的捕获设备。不过,你可以放心地假设这是后(宽)摄像头