首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ARAnchor和AnchorEntity有什么区别?

ARAnchor和AnchorEntity有什么区别?
EN

Stack Overflow用户
提问于 2019-08-21 14:32:28
回答 1查看 4K关注 0票数 11

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

我一直在看一些示例代码,我有点困惑于ARAnchorAnchorEntity之间的区别,以及何时使用其中的一种。

到目前为止我知道:

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

现在,我将一个AnchorEntity作为一个“根节点”添加到会话中,因为它更容易使用,所以我可以直接将模型作为子节点添加到这个锚点。但我也添加了一个ARAnchor,位于相同的位置,到现场的锚,以加强跟踪围绕这一点。这是必要的吗?

问:有人能帮我澄清这两种不同之处,并用例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 16:27:12

更新日期:2022年7月10日

ARAnchorAnchorEntity类都是为了同一个神圣的目的而创建的--将3D模型与你的现实世界中的物体捆绑在一起。

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

此外,生成ARAchors需要手动Session config,而生成AnchorEntities需要最少的开发人员参与。

等级差异:

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

代码语言:javascript
复制
arView.automaticallyConfigureSession = true           // default

在ARKit中,如您所知,您只能在当前会话中运行一个配置: World、Body或Geo。然而,ARKit有一个例外--您可以一起运行两个信任-- FaceTracking和WorldTracking (其中一个必须是驱动程序,另一个是驱动)。

代码语言:javascript
复制
let config = ARFaceTrackingConfiguration()
config.isWorldTrackingEnabled = true
arView.session.run(config)

苹果开发人员的文档显示:

anchors collection框架中,您使用AnchorEntity实例作为实体层次结构的根,并将其添加到场景实例的AnchorEntity中。这使ARKit能够将锚实体及其所有层次结构的后代放置到现实世界中。除了锚实体继承自Entity类的组件之外,锚实体还符合HasAnchoring协议,为它提供了一个AnchoringComponent实例。

AnchorEntity有三个构建块:

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

所有实体都有Synchronization component来帮助组织协作会话()。

AnchorEntity 有九种特定的锚点类型,用于九种不同用途

  • ARAnchor
    • 帮助实现10个ARKit锚点,包括ARGeoAnchor和ARAppClipCodeAnchor

  • 正文
  • 摄像头
  • 图像
  • 对象
  • 飞机
  • 世界
  • raycastResult

您可以在应用程序ARAnchor中同时使用、、和。或者您可以只使用AnchorEntity类,因为它已经足够了。

有关ARAnchorAnchorEntity的更多信息,请查看THIS POST

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57593960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档