首页 > 解决方案 > 在 ARKit 中设置 ARCamera 曝光时间

问题描述

我正在努力开发一个使用 ARKit 的应用程序。为了让应用程序实现其主要目的,即跟踪面部,良好的照明条件是必不可少的。在 AVFoundation 中,有一个设置自定义曝光时间的功能。但是我没有找到在 ARKit 中设置它的方法。我刚刚找到了 get 对象frame.camera.exposureDuration。那么如何使用 ARKit 设置曝光时间呢?我必须在哪里调用该函数?

func session(_ session: ARSession, didUpdate frame: ARFrame) {
    // frame.camera.exposureDuration = ...
}

标签: iosswiftxcodeaugmented-realityarkit

解决方案


唉,但是您不能在 ARKit 3.5 和 ARKit 3.0 中更改相机的曝光参数。有两个实例属性exposureDurationexposureOffset,但它们只能获取,不能设置。

var exposureDuration: TimeInterval { get }

var exposureOffset: Float { get }

但是,如果您使用 ARKit 3.5 和配备 LiDAR 扫描仪的设备,您将不再依赖环境中的照明条件。这是因为即使在完全黑暗的环境中,Apple LiDAR 扫描仪也能让您追踪表面。

尽管如此,您可以实施AVFoundationMetal更改 ARKit 相机的曝光参数的方法,但这对您作为开发人员来说是一个真正的挑战。


推荐阅读