gpt4 book ai didi

ios - 如何确定 ARFaceAnchor 是否未在 ARSession 中更新

转载 作者:可可西里 更新时间:2023-11-01 05:10:58 25 4
gpt4 key购买 nike

我有一个应用程序,其中使用了 ARSessionARFaceTrackingConfiguration。每当 anchor 在 session(_ session: ARSession, didUpdate anchors: [ARAnchor]) 中更新时,我都会保存一份 anchor 的副本。

但是当脸部不再出现在画面中时,应用程序无法知道。因为这个函数不会被调用。

我已经尝试在 session(_ session: ARSession, didRemove anchors: [ARAnchor]) 中写一个标志,但是没有被调用,因为当脸不再来自时, anchor 没有被移除的相机。我使用 session 的当前帧 frame.anchors.count 进行了检查。

我在ARSessionDelegate 协议(protocol)中没有发现其他相关函数。当应用程序在调试器中暂停时,我看到当前帧的一个名为 detectedFaces 的私有(private)属性,当您放下手机时它被正确设置为 0。但由于它是私有(private)的,我无法访问它。

最佳答案

ARFaceAnchor 采用 ARTrackable协议(protocol),其唯一目的是告诉您 anchor 是否由 ARKit 自动更新。 isTracked如果 anchor 的变换已在当前帧中更新,则属性为 true,否则为 false。

知道当前不再跟踪 anchor 是解决问题的一半——您可能想知道的另一件事是何时。你有几个选择。

  1. 保留对您一直使用的面部 anchor 的引用。当您收到类似 session(_ session: ARSession, didUpdate anchors: [ARAnchor]) 的委托(delegate)回调时,任何不在更新列表中的 anchor 都可能已过时,您可以检查它们的 isTracked 属性来验证。

  2. 订阅每帧更新的“第一个”回调,session(_ session: ARSession, didUpdate frame: ARFrame),或检查 session 的currentFrame,并遍历框架的 anchors 列表以查看哪些 anchor 符合 ARTrackable 但对于 isTracked 报告错误。

关于ios - 如何确定 ARFaceAnchor 是否未在 ARSession 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937788/

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