我正在尝试在Unity下使用AreaDescription和AreaLearning在AR中放置,保存和加载对象,但是在重定位和循环闭包时我遇到了问题。
现在我可以学习ADF,加载它并重新定位(来自开发人员网站的AreaLearning教程)。我还设法放置对象并将其坐标保存在xml中。
我的问题是当我加载xml时,当我保存它们时,我的对象的坐标与应用程序的服务开始相关,因此它们不在我的场景中的正确位置。
我不明白在AreaLearning示例中如何做到这一点。我知道这是在AreaLearningInGameController中,但我真的不明白它的工作流程。
总结一个问题:如何在AR中保存关于ADF的对象,以及如何从ADF检索其位置到我的应用程序?
如果你有提示,tutos或解释,我将非常感激!
感谢。
答案 0 :(得分:1)
您是正确的,XML保存对象相对于服务开始的位置。对于新记录的区域描述,该区域描述的起源固定为初始记录时的服务开始。在将来加载区域描述时,其来源不会改变。
要使对象保持持久,您需要加载先前记录的区域描述,并确保Tango Manager和Tango Pose Controller都配置为使用区域描述(而不是停止服务)作为原点。
我希望这有帮助!
答案 1 :(得分:0)
好的,我找到了问题的答案和问题的解决方案。
令人惊讶的是,Google并没有在ADF tutorial中更多地强调这一点。
无论如何,关键是在Tango AR Camera Prefab的Tango Pose Controller脚本中检查“Use AreaDescription”。这是一个布尔值,它定义用于估计姿势的参考帧是否与ADF或服务开始有关。 Et voilaa ......没什么可做的。
这是如此简单和愚蠢,但实际上并不明显,因为默认情况下禁用此布尔值,并且在SDK的ADF示例中,它在Unity编辑器中进行检查(因此您不会通过查看脚本来查找)。