gpt4 book ai didi

ios - 为什么 `session` 方法与 `didRemove [ARAnchor]` 从未调用 `ARBodyTrackingConfiguration` ?

转载 作者:行者123 更新时间:2023-11-29 05:18:38 28 4
gpt4 key购买 nike

我正在使用ARSessionDelegateARView我在其中初始化 ARBodyTrackingConfiguration .

session方法 didAdd: [ARAnchor]didUpdate: [ARAnchor]被正确调用。但是didRemove: [ARAnchor]从未被调用过。

根据official documentation , anchor “可能”会自动从 session 中删除,具体取决于 session 配置。不过我没有找到这方面的设置。

有谁知道为什么永远不会调用 didRemove [ARAnchor]session 方法以及我需要更改哪些设置才能使其正常工作?

import ARKit
import RealityKit
import UIKit

class AugmentedVideoView: ARView, ARSessionDelegate {
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
print("didAdd") // called correctly
}

func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
print("didUpdate") // called correctly
}

func session(_ session: ARSession, didRemove anchors: [ARAnchor]) {
print("didRemove") // is never called :-(
}

required init(frame: CGRect) {
#if targetEnvironment(simulator)
super.init(frame: frame)
handleError("Camera not available in simulator.")
return

#else
super.init(frame: frame,
cameraMode: ARView.CameraMode.ar,
automaticallyConfigureSession: false)
self.session.delegate = self

guard ARBodyTrackingConfiguration.isSupported else {
handleError("Your device does not support body tracking.")
return
}

let configuration = ARBodyTrackingConfiguration()
configuration.automaticSkeletonScaleEstimationEnabled = false
self.session.run(configuration)
#endif
}

@available(*, unavailable)
dynamic required init?(coder decoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

最佳答案

好吧,我想我现在明白了。即使不再检测到此人,ARKit 也会假设它仍在上次检测到的位置。这适用于 e。 G。如果这个人不在视线范围内。如果这个人在视线之外并且检测到另一个人,ARKit 就不够聪明,无法将其检测为另一个人。它只是更新旧的 anchor ,假设它是同一个 anchor 。

关于ios - 为什么 `session` 方法与 `didRemove [ARAnchor]` 从未调用 `ARBodyTrackingConfiguration` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910811/

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