更新日期:2021 年 4 月 3 日。
ARAnchor
class 和AnchorEntity
class 都是为了同一个神圣目的而制作的——将 3D 内容与现实世界的对象联系起来。
RealityKitAnchorEntity
极大地扩展了 ARKit 的功能ARAnchor
。这两者之间最重要的区别是AnchorEntity
自动跟踪现实世界的目标,但ARAnchor
需要renderer(...)
或session(...)
实例方法来完成此操作。还要考虑到集合ARAnchors
存储在 ARSession 中,而集合AnchorEntities
存储在场景中。
以下是等级差异:
RealityKit 的主要优点是能够同时使用不同的 AnchorEntities,例如.plane
、.image
和.object
。
如您所知,在 ARKit 中,您只能在当前会话中运行一个配置:World、Image 或 Object。然而,在 ARKit 中有一个例外 - 您可以同时运行两个配置 - WorldTracking 和 FaceTracking(但第一个必须是驱动程序,另一个必须是驱动程序)。
苹果开发者文档说:
在 RealityKit 框架中,您使用AnchorEntity
实例作为实体层次结构的根,并将其添加到anchors collection
Scene 实例中。这使 ARKit 能够将锚实体及其所有分层后代放置到现实世界中。除了锚实体从Entity
类继承的组件外,锚实体也符合HasAnchoring
协议,给它一个AnchoringComponent
实例。
AnchorEntity
具有三个构建块:
- 变换组件 (包含平移、旋转和缩放的变换矩阵)
- 同步组件 (多用户体验的实体同步数据)
- 锚定组件 (允许选择锚的类型 -
world
,body
或image
)
所有实体都有Synchronization component
这有助于组织协作会议。
AnchorEntity
有九种特定的锚点类型,用于九种不同的目的:
- 锚点
- 帮助实现 10 个 ARKit 锚点,包括 ARGeoAnchor 和 ARAppClipCodeAnchor
- 身体
- 相机
- 脸
- 图片
- 目的
- 飞机
- 世界
- 光线投射结果
您可以同时使用这两个类ARAnchor
和AnchorEntity
在您的应用程序中。或者你可以只使用AnchorEntity
类,因为它已经足够了。
有关ARAnchor
和 的更多信息AnchorEntity
,请查看这篇文章。