【发布时间】:2018-08-29 18:10:37
【问题描述】:
我正在尝试在场景中添加渲染器委托方法(ARSCNViewDelegate 中的方法)获取camera 的当前位置:
func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {
guard let pointOfView = sceneView.pointOfView else { return }
let transform = pointOfView.transform
let position = SCNVector3Make(transform.m41, transform.m42, transform.m43)
let orientation = SCNVector3Make(transform.m31, transform.m32, transform.m33)
...
}
并且我想在每秒特定数量的帧(在我的情况下为 25 fps)获得这些位置。我可以通过修改这个参数来得到这个:preferredFramesPerSecond 但它总是自动调整到 30 fps,而不是 25。 它适用于 5、15、20、30、45 或 60,但为什么不适用于 25 fps?
override func viewDidLoad() {
super.viewDidLoad()
...
sceneView.preferredFramesPerSecond = 25
...
}
无论如何,当然降低 FPS 意味着更差的 AR 性能,所以......有没有另一种方法可以在我每次需要时向 ARKit 询问帧相机位置?特别是每 25 fps。
提前非常感谢!
【问题讨论】:
-
如果你没有想到,你可以使用线程每1/25秒更新一次,得到你的位置
-
嗨@alok-subedi,我该如何实现呢?提前致谢!