在ARKit中调整相机焦距

时间:2017-09-10 21:14:41

标签: swift camera arkit

我希望在增强现实中调整设备的物理相机焦点。 (我不是在谈论SCNCamera对象。)
Apple Dev forum post中,我读到自动对焦会干扰ARKit的物体检测,这对我来说很有意义。

现在,我正在开发一个应用程序,用户将接近他们正在查看的对象。默认情况下,相机具有的焦点使得当靠近物体时,一切看起来都非常模糊,而不是大约10厘米。

我可以在初始化场景之前调整相机的焦距,或者最好是在场景中吗?

2018年1月20日
显然,这个问题仍然无法解决。您可以在this reddit postthis developer forum post了解有关私有API解决方法和其他(非帮助)信息的详细信息。

2018年1月25日
@AlexanderVasenin提供了一个指向Apple的文档的有用更新。它表明,从{11}开始,ARKit不仅可以支持聚焦,还可以支持自动对焦
请参阅下面的使用示例。

2 个答案:

答案 0 :(得分:3)

作为stated by Alexander,iOS 11.3为ARKit带来了自动对焦功能 corresponding documentation site显示了它的声明方式:

var isAutoFocusEnabled: Bool { get set }

您可以通过以下方式访问它:

var configuration = ARWorldTrackingConfiguration()
configuration.isAutoFocusEnabled = true // or false

但是,由于默认为true,您甚至不必手动设置它,除非您选择退出。

答案 1 :(得分:2)

更新:从iOS 11.3开始ARKit支持自动对焦,默认情况下启用(more info)。手动对焦仍然无法使用。

在iOS 11.3之前,ARKit既不支持手动对焦调整也不支持自动对焦。

以下是Apple对该主题的回复(2017年10月):

  

ARKit无法启用自动对焦,因为它可能会对平面检测产生不利影响。现有功能请求支持自动对焦,无需提交其他请求。任何其他焦点差异应作为错误报告提交。请务必包含设备型号和操作系统版本。 (source

在Apple论坛上another thread,开发人员声称他可以通过在ARKit使用的私有 AVCaptureDevice.setFocusModeLocked(lensPosition:completionHandler:)上调用AVCaptureDevice方法来调整自动对焦看起来它不会影响跟踪。虽然the method本身是公开的,但ARKit的AVCaptureDevice不是公开的,因此在生产中使用此黑客很可能会导致App Store拒绝。