gpt4 book ai didi

swift - ARAnchor 和 AnchorEntity 有什么区别?

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:55 29 4
gpt4 key购买 nike

我目前正在用 RealityKit 做一些实验。

我一直在查看一些示例代码,我对 ARAnchorAnchorEntity 之间的区别以及何时使用其中一个感到有点困惑.

到目前为止我知道:

  • 两者都是描述现实世界中某个位置的 anchor 。
  • AnchorEntity 也可以有其他 Entity 作为子实体,因此您可以将模型对象直接添加到 anchor 。您不能使用 ARAnchor 执行此操作,您必须“手动”将模型对象添加到 rootNode,并使用 anchor 的位置正确放置它。<
  • 文档中说 ARKit 使用添加的 ARAnchor 来优化 anchor 周围区域的跟踪。 AnchorEntity 的文档没有指定这一点。

现在我将 AnchorEntity 作为“根节点”添加到 session 中,因为它使用起来更简单,所以我可以简单地将模型作为子节点直接添加到这个 anchor 。但随后我还向场景的 anchor 添加了位于同一位置的 ARAnchor,以增强围绕该点的跟踪。 这是必要的吗?

问:谁能帮我弄清楚这两者的区别和用例?

最佳答案

更新时间:2022 年 7 月 10 日


ARAnchorAnchorEntity 类都是为了同一个神圣的目的而创建的——将 3D 模型连接到您的真实世界的对象。

RealityKit AnchorEntity 大大扩展了 ARKit ARAnchor 的功能。这两者之间最重要的区别是 AnchorEntity 自动跟踪一个真实世界的目标,但是 ARAnchor 需要 session(...) 实例方法(或 SceneKit 的 renderer(...) 实例方法)来完成这个。考虑到 ARAnchors 的集合存储在 ARSession 对象中,AnchorEntities 的集合存储在场景中。

此外,生成 ARAchors 需要一个手册 Session config ,同时生成 AnchorEntities 需要最少的开发人员参与。

层级差异:

enter image description here

RealityKit 的主要优点是能够同时使用不同的 AnchorEntities,例如 .plane.body.object。 RealityKit 中有 automaticallyConfigureSession 实例属性。启用后,ARView 会自动运行一个 ARSession,其配置会根据您的相机模式和场景 anchor 进行更新。禁用时, session 需要使用您自己的配置手动运行。

arView.automaticallyConfigureSession = true           // default

如您所知,在 ARKit 中,您只能在当前 session 中运行一个配置:World、Body 或 Geo。然而,ARKit 中有一个异常(exception) - 你可以同时运行两个配置 - FaceTracking 和 WorldTracking(其中一个必须是 driver,另一个 - driven) .

let config = ARFaceTrackingConfiguration()
config.isWorldTrackingEnabled = true
arView.session.run(config)


Apple 开发者文档说:

In RealityKit framework you use an AnchorEntity instance as the root of an entity hierarchy, and add it to the anchors collection for a Scene instance. This enables ARKit to place the anchor entity, along with all of its hierarchical descendants, into the real world. In addition to the components the anchor entity inherits from the Entity class, the anchor entity also conforms to the HasAnchoring protocol, giving it an AnchoringComponent instance.

AnchorEntity 具有三个构建 block :

  • Transform组件(包含平移、旋转和缩放的变换矩阵)
  • 同步组件(用于多用户体验的实体同步数据)
  • 锚定组件(允许选择一种锚定类型 – worldbodyimage)


所有实体都有同步组件,可帮助组织协作 session

enter image description here


AnchorEntity 有九种特定的 anchor 类型,用于九种不同的目的:

  • AR anchor
    • 帮助实现了 10 个 ARKit anchor ,包括 ARGeoAnchor 和 ARAppClipCodeAnchor
  • 正文
  • 相机
  • 图片
  • 对象
  • 飞机
  • 世界
  • 光线转换结果


您可以在您的应用中同时使用 ARAnchorAnchorEntity。或者您可以只使用 AnchorEntity 类,因为它是一个足够的类。

For additional info about ARAnchor and AnchorEntity, please look at THIS POST.

关于swift - ARAnchor 和 AnchorEntity 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57593960/

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