gpt4 book ai didi

swift - 为 preferredFramesPerSecond 使用自定义值

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:48 24 4
gpt4 key购买 nike

我想让我的 ARkit 应用程序以每秒特定的帧数(在我的例子中是 25 fps)运行。我可以通过修改这个参数来得到这个:preferredFramesPerSecond但它总是设置 30 fps,而不是 25。它适用于 5、15、20、30、45 或 60,但为什么不适用于 25 fps?

override func viewDidLoad() {

super.viewDidLoad()
...
sceneView.preferredFramesPerSecond = 25
...
}

提前致谢!

最佳答案

实例属性 preferredFramesPerSecond 用于显示链接回调的首选帧速率,但不适用于相机。

var preferredFramesPerSecond: Int { get set }

When you specify a preferred frame rate for a display link, it notifies the target at a rate as close as possible based on the capabilities on the hardware and other tasks your game or app may be executing. The actual frame rate chosen is usually a factor of the maximum refresh rate of the screen to provide a consistent frame rate. For example, if the maximum refresh rate of the screen is 60 frames per second, that is also the highest frame rate the display link sets as the actual frame rate. However, if you ask for a lower frame rate, the display link might choose 30, 20, or 15 frames per second, or another rate, as the actual frame rate. Choose a frame rate that your app can consistently maintain.

正在运行的 AR session 不断从设备摄像头捕获视频帧。对于每一帧,ARKit 都会分析图像以及来自设备运动感应硬件的数据,以估计设备在真实世界中的位置。 ARKit 以 ARFrame 对象的形式提供此跟踪信息和成像参数。

enter image description here

enter image description here

Frame rate for robust Augmented Reality must be 60 fps minimum.

但我必须注意到,iPhone X 中的前置深度图像摄像头以 15 Hz(AVDepthData 以 15 fps)捕获 zDepth 图像,而不是必须以 60 Hz 捕获的常规 RGB 图像。

enter image description here

要向 ARKit 询问帧相机位置,您可以使用此处列出的方法(通过渲染相机图像和使用位置跟踪信息显示叠加内容来构建自定义 AR View):Displaying an AR Experience with Metal

或者使用这样的方法:

class ViewController: UIViewController, ARSCNViewDelegate, ARSessionDelegate {

@IBOutlet var sceneView: ARSCNView!

override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self // ARSCNViewDelegate
sceneView.session.delegate = self // ARSessionDelegate
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARWorldTrackingSessionConfiguration()
sceneView.session.run(configuration)
}

func session(_ session: ARSession, didUpdate frame: ARFrame) {
let currentTransform = frame.camera.transform
}
}

关于swift - 为 preferredFramesPerSecond 使用自定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52001986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com