2017-07-19 57 views
0

我想在Unity下使用AreaDescription和AreaLearning来放置,保存和加载AR中的对象,但在重新定位和闭环时我遇到了问题。检索AR对象相对于ADF的位置

现在我可以学习一个ADF,加载它并重新定位(从开发者网站的AreaLearning教程)。我也设法放置对象并将它们的坐标保存在xml中。

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

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

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

如果您有提示,辅导或解释,我将不胜感激!

谢谢。

回答

0

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

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

无论如何,关键是在Tango AR Camera Prefab的Tango Pose Controller脚本中检查“Use AreaDescription”。这是布尔值,它定义了用于估计姿势的参考框架是关于ADF还是服务启动。 Et voilaa ...没有更多的事情要做。

这是非常简单和愚蠢的,但真的不明显,因为默认情况下禁用此布尔值,并且在SDK的ADF示例中,它将在Unity编辑器中进行检查(因此您无法通过查看脚本)。

1

您说得对,XML保存了对象相对于服务启动的位置。对于新记录的区域描述,该区域描述的来源在初始记录时固定为服务开始。将来加载区域描述时,其来源不会改变。

要使对象保持持久状态,需要加载之前记录的区域说明,并确保Tango Manager和Tango Pose Controller都配置为使用区域描述(而不是服务启动)作为原点。

我希望这有助于!