我目前正在使用RealityKit做一些实验。
我一直在看一些示例代码,对于ARAnchor
和AnchorEntity
之间的区别以及何时使用它们之间的区别我感到有些困惑。
到目前为止,我知道:
AnchorEntity
也可以具有其他Entity
作为子对象,因此您可以将模型对象直接添加到锚点。您无法使用ARAnchor
来做到这一点,必须“手动”将模型对象添加到rootNode
,并使用锚点的位置正确放置它。ARAnchor
来优化锚点周围区域的跟踪。 AnchorEntity
的文档未指定。现在,我将AnchorEntity
作为“根节点”添加到会话中,因为它使用起来更简单,因此我可以直接将模型作为子代直接添加到该锚点。但是随后,我还向场景的锚点添加了位于同一位置的ARAnchor
,以增强围绕此点的跟踪。 这是必要的吗?
答案 0 :(得分:4)
ARKit中的RealityKit的
AnchorEntity
类大大扩展了ARAnchors的功能。
ARAnchor
类和RealityKit中的 AnchorEntity
类都是出于相同的神圣目的–将3D内容绑定到您的真实对象。
但是,这两个类在场景中的层次结构上略有不同。这是描述其外观的图像:
Apple Developer文档说:
在RealityKit框架中,您将
AnchorEntity
实例用作实体层次结构的根,并将其添加到场景实例的anchors collection
中。这使ARKit可以将锚实体及其所有层次后代放置到现实世界中。
此外,文档还介绍了有关AnchorEntity的以下内容:
除了锚实体从
Entity
类继承的组件之外,锚实体还符合HasAnchoring
协议,为其提供了一个AnchoringComponent
实例。
因此AnchorEntity
中包含三个构建基块:
查看此图片以了解有关实体的更多信息。所有实体都有Synchronization component
,可帮助组织协作会议。
您可以在AR应用中自由使用这两个类(ARAnchor和AnchorEntity)。
有关
ARAnchor
类的其他信息,请查看THIS POST。