【问题标题】:How to persist markers using ADF in TangoARPoseController如何在 TangoARposeController 中使用 ADF 持久化标记
【发布时间】:2015-11-13 20:16:45
【问题描述】:

我正在尝试在增强现实游戏中保留标记。以下是我正在做的事情的要点:

我让我的用户记录区域并将其保存到 ADF。然后他们将标记放到场景中,并将 Unity World 坐标中的位置数据保存到文本文件中。然后我重新启动应用程序,加载并本地化到 ADF 并加载标记。

为了让它工作,我修改了 Unity 演示包中的 ARPoseController.cs 文件,以使用区域描述作为它的基本框架。在_UpdateTransformation 方法中,我已经换掉了帧对

pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE;
pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE;

pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION;
pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE;

我还添加了一些代码来确认我已成功本地化到 ADF,但我注意到我在 Unity World Space 中的标记位置相对于真实环境没有正确定位。

我可以根据 START_OF_SERVICE 来源确认我的标记已正确保存和加载,因此我假设它们正在正确序列化和反序列化。这可能是什么原因造成的?我假设这应该通过将基本帧对切换到 Area_Description 而不是 START_OF_SERVICE 来工作,我错了吗?

【问题讨论】:

    标签: unity3d augmented-reality google-project-tango


    【解决方案1】:

    我在集成 AR 和 ADF 时遇到了类似的问题,我必须修改 TangoPointCloud 以检查您是否在 OnTangoDepthAvailable() 中使用 AreaDescription 并根据需要调整 baseFrame 目标。

    即:

    if (m_tangoDeltaPoseController.m_useAreaDescriptionPose)
    {
        pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION;
        pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE;
    }
    else
    {
        pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE;
        pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE;
    }
    

    这样,点云的几何形状会根据 ADF 偏移而不是从设备开始进行自我调整。

    更改后,当我使用 AR 的示例代码放置标记时,它会正确注册表面,因此我将标记放置在正确的位置和方向上。我仍然遇到一些标记在重新定位时没有调整的问题,必须查看 AreaLearningInGameController 以了解循环关闭事件。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 2016-11-07
      • 2010-09-29
      • 2019-07-17
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多