ARAnchor和AnchorEntity有什么区别?

时间:2019-08-21 14:32:28

标签: swift augmented-reality arkit realitykit

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

我一直在看一些示例代码,对于ARAnchorAnchorEntity之间的区别以及何时使用它们之间的区别我感到有些困惑。

到目前为止,我知道:

  • 都是描述现实世界位置的锚点。
  • AnchorEntity也可以具有其他Entity作为子对象,因此您可以将模型对象直接添加到锚点。您无法使用ARAnchor来做到这一点,必须“手动”将模型对象添加到rootNode,并使用锚点的位置正确放置它。
  • 在文档中说,ARKit使用添加的ARAnchor来优化锚点周围区域的跟踪。 AnchorEntity的文档未指定。

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

问:有人可以帮助我弄清两者之间的区别以及用例吗?

1 个答案:

答案 0 :(得分:4)

  

RealityKit的AnchorEntity类大大扩展了ARAnchors的功能

ARKit中的

ARAnchor 类和RealityKit中的 AnchorEntity 类都是出于相同的神圣目的–将3D内容绑定到您的真实对象。

但是,这两个类在场景中的层次结构上略有不同。这是描述其外观的图像:

enter image description here

Apple Developer文档说:

  

在RealityKit框架中,您将AnchorEntity实例用作实体层次结构的根,并将其添加到场景实例的 anchors collection 中。这使ARKit可以将锚实体及其所有层次后代放置到现实世界中。

此外,文档还介绍了有关AnchorEntity的以下内容:

  

除了锚实体从Entity类继承的组件之外,锚实体还符合HasAnchoring协议,为其提供了一个AnchoringComponent实例。

因此AnchorEntity中包含三个构建基块:

  • 变换组件(包含平移,旋转和缩放的变换矩阵)
  • 同步组件(网络应用程序的实体同步数据)
  • 锚定组件(这是将3D内容锚定到现实世界中的方式)

查看此图片以了解有关实体的更多信息。所有实体都有Synchronization component,可帮助组织协作会议

enter image description here

您可以在AR应用中自由使用这两个类(ARAnchor和AnchorEntity)

  

有关ARAnchor类的其他信息,请查看THIS POST