我正在尝试创建一个简单的AR游戏,我希望能够检测用户位置是否在ADF中。我不知道该怎么做。我尝试加载选定的ADF,然后将设备帧与ADF帧进行比较,但它不起作用。我可以得到一个可步行的区域,但我也不确定如何做到这一点。
答案 0 :(得分:1)
如果您已加载ADF并且设备已重新定位,则带有ADF帧的设备帧(我将使用符号adf_T_device)应该有效。
在学习模式下,adf_T_device姿势在服务启动后立即生效。在学习模式中,此姿势表示优化后的姿势(循环关闭)。所以你会看到这个姿势开始建立一个对start_service_T_device姿势的偏移,这是因为底层系统正在为它修正姿势。
但是,如果系统中加载了ADF,则在根据加载的ADF重新定位设备之前,adf_T_device pose将无效。如果您在很长一段时间后没有看到设备重新定位,可能环境已经改变太多,以至于系统无法识别它。由于物体变化或照明条件变化,这是非常常见的。我建议你录制新的ADF并再试一次。此外,录制ADF时,请尝试从各个角度录制区域。我一直认为录音过程就像做喷漆一样。在绘制完所有区域后,ADF构造正确。在Unity中,我们有一个区域学习示例场景,展示了如何构建ADF。
为了构建一个可步行的区域,我建议你把世界分成小的“立方体”,技术上是一个八叉树。八叉树的大小由应用程序的用例决定。在学习模式中,每个adf_T_device的位置应该在八叉树中击中“立方体”,在走动(学习该区域)之后,您将拥有一组可行走的“立方体”。在下次运行或加载ADF时,您可以使用此八叉树来测试特定区域在ADF中是否有效。