首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么带有` `didRemove [ARAnchor]`的`session`方法没有调用`ARBodyTrackingConfiguration`?

为什么带有` `didRemove [ARAnchor]`的`session`方法没有调用`ARBodyTrackingConfiguration`?
EN

Stack Overflow用户
提问于 2019-11-18 16:49:47
回答 1查看 236关注 0票数 0

我在初始化ARBodyTrackingConfigurationARView上使用ARSessionDelegate

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

根据official documentation的说法,锚点“可以”自动从会话中删除,这取决于会话配置。不过,我没有找到这样的设置。

有人知道为什么不调用带有didRemove [ARAnchor]session方法吗?我需要更改哪个设置才能使它工作?

代码语言:javascript
复制
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")
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-04 18:37:34

好的,我想我现在已经明白了。即使这个人不再被检测到,ARKit也只是假设它仍然是最后一次被检测到的地方。这适用于例如在看不见人的情况下。如果该人不在视线范围内,并且检测到另一个人,则ARKit不够聪明,无法将其检测为另一个人。它只是更新旧的锚点,假设它是同一个锚点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58910811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档