【问题标题】:Project Tango Unity3d Area Learning Scene does not update pose data for ADF and LocalizationProject Tango Unity3d 区域学习场景不更新 ADF 和本地化的姿势数据
【发布时间】:2014-11-12 18:46:36
【问题描述】:

我在 Unity3D SDK 区域学习场景上花了几个小时试图弄清楚如何在使用 OOTB 时加载 ADF 和本地化。但是,在将 m_useADF 设置为 true 并验证 UUID 有效并传递给 TangoApplication 对象后,系统不会返回 ADF 和姿势信息的本地化部分的更新。我的理论是,它们要么永远不会在回调的管道中的某个地方产生或丢失。

这是对应代码的第一部分: public bool m_useADF = true;

        if(m_useADF)
            {
                // Query the full adf list.
                PoseProvider.RefreshADFList();
                // loading last recorded ADF
                string uuid = PoseProvider.GetLatestADFUUID().GetStringDataUUID();
                m_tangoApplication.InitProviders(uuid);
                Debug.Log ("HERE IS THE UUID: " + uuid);
            }

这是应该报告 ADF 和重新定位数据但它们永远不会更新的地方。当设备以 POSE_VALID 状态移动时,控制器已正确注册为 PoseListener,并且 MotionTracking 姿势数据会正确更新。我没有检测到有关 ADF 未加载的任何错误消息,但是,对于 ADF 和重定位数据片段,状态从未更新到超过 TANGO_POSE_INITIALIZING。

        // ADF
        GUI.Label( new Rect(Common.UI_LABEL_START_X, 
                            Common.UI_LABEL_START_Y + Common.UI_LABEL_OFFSET * 3, 
                            Common.UI_LABEL_SIZE_X , 
                            Common.UI_LABEL_SIZE_Y), "ADF1: <size=15>" + String.Format(Common.UX_TARGET_TO_BASE_FRAME,
                                                             TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE,
                                                             TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION) + "</size>");

        GUI.Label( new Rect(Common.UI_LABEL_START_X, 
                            Common.UI_LABEL_START_Y + Common.UI_LABEL_OFFSET * 4, 
                            Common.UI_LABEL_SIZE_X , 
                            Common.UI_LABEL_SIZE_Y), "ADF2: <size=15>" + String.Format(Common.UX_STATUS,
                                                             m_status[1],
                                                             m_frameCount[1],
                                                             m_frameDeltaTime[1],
                                                             m_tangoPosition[1],
                                                             m_tangoRotation[1]) + "</size>");
        // RELOCALIZATION
        GUI.Label( new Rect(Common.UI_LABEL_START_X, 
                            Common.UI_LABEL_START_Y + Common.UI_LABEL_OFFSET * 5, 
                            Common.UI_LABEL_SIZE_X , 
                            Common.UI_LABEL_SIZE_Y), "RELOCALIZED1: <size=15>" + String.Format(Common.UX_TARGET_TO_BASE_FRAME,
                                                             TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION,
                                                             TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE) + "</size>");

        GUI.Label( new Rect(Common.UI_LABEL_START_X, 
                            Common.UI_LABEL_START_Y + Common.UI_LABEL_OFFSET * 6, 
                            Common.UI_LABEL_SIZE_X , 
                            Common.UI_LABEL_SIZE_Y), "RELOCALIZED2: <size=15>" + String.Format(Common.UX_STATUS,
                                                             m_status[2],
                                                             m_frameCount[2],
                                                             m_frameDeltaTime[2],
                                                             m_tangoPosition[2],
                                                             m_tangoRotation[2]) + "</size>");

以前有人遇到过这个问题并解决了吗?有人知道这是否是一个已知问题吗?

克里斯托弗

【问题讨论】:

    标签: android unity3d google-project-tango


    【解决方案1】:

    我不知道这是否有帮助,但我可能知道发生了什么,只是因为我在将示例移植到 C# 时遇到了同样的事情。我没有使用 Unity SDK。

    如果有一个类似的 TangoUtilities 项目或函数支持渲染 AD,并且您正在引用或已经实现了类似的东西,那么 OnPoseAvailable 实现中的代码会引用渲染器的轨迹:

    例如

            // Update the trajectory, model matrix, and view matrix, then
            // render the scene again
            if (updateRenderer && (mRenderer.Trajectory != null))
    

    在我上面的版本中,我添加了 && (mRendered.Trajectory != null),因为前几次通过,它仍然是 null。

    如果我记得,这会导致静默失败,并且不再允许渲染任何内容。

    我认为值得分享,希望它可能是您的解决方案。

    【讨论】:

    • 感谢您指出这一点。我会试一试,然后回复你确认它是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多