检索 AR 对象相对于 ADF 的位置

Retrieve AR objects position with respect to ADF

我正在尝试使用 Unity 下的 AreaDescription 和 AreaLearning 在 AR 中放置、保存和加载对象,但在重新定位和闭环时遇到问题。

现在我能够学习 ADF,加载它并重新定位(来自开发者网站的 AreaLearning 教程)。我还设法放置对象并将它们的坐标保存在 xml.

我的问题是当我加载 xml 时,我的对象的坐标是相对于我保存它们时应用程序服务的开始,所以它们在我的场景中不在正确的位置。

我不明白在 AreaLearning 示例中这是如何完成的。我知道这是在 AreaLearningInGameController 中,但我真的不明白它的工作流程。

总结一个问题:如何在 AR 中保存一个关于 ADF 的对象,以及如何将它的位置从 ADF 检索到我的应用程序?

如果您有任何提示、教程或解释,我将不胜感激!

谢谢。

好的,我找到了问题的答案和问题的解决方案。

令人惊讶的是 Google 在他们的 ADF tutorial 中没有更多地强调这一点。

无论如何,关键是检查 Tango AR 相机预制件的 Tango Pose Controller 脚本中的 "Use AreaDescription"。这是一个布尔值,它定义了用于估计姿态的参考帧是关于 ADF 还是服务开始。 Et voilaa...没什么可做的了。

这非常简单和笨拙,但实际上并不明显,因为默认情况下禁用此布尔值,并且在 SDK 的 ADF 示例中,它已在 Unity 编辑器中选中(因此您无法通过查看脚本)。

您是正确的,XML 保存了对象相对于服务开始的位置。对于新记录的区域描述,该区域描述的来源固定为初始记录时的服务开始。以后加载区域描述时,原点不变。

为了使对象保持持久化,您需要加载之前记录的区域描述并确保 Tango Manager 和 Tango Pose Controller 都配置为使用区域描述(而不是服务开始)作为来源。

希望对您有所帮助!