我花了几个小时在Unity3D SDK区域学习场景上试图弄清楚如何加载ADF并在使用OOTB时进行本地化。但是,在将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和重新定位数据的地方,但它们永远不会更新。控制器正确注册为PoseListener,当设备以状态POSE_VALID移动时,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>");
有人在此之前遇到过这个并解决了吗?有人知道这是否是一个已知问题?
Cristhopper
答案 0 :(得分:1)
我不知道这是否有用,但我可能知道发生了什么,只是因为我将样本移植到C#时经历了同样的事情。我没有使用Unity SDK。
如果有一个类似的TangoUtilities项目或函数支持AD的渲染,并且您正在引用它或已经实现了类似的东西,那么OnPoseAvailable实现中的代码引用了渲染器的轨迹:
e.g。
// Update the trajectory, model matrix, and view matrix, then
// render the scene again
if (updateRenderer && (mRenderer.Trajectory != null))
在我上面的版本中,我添加了&amp;&amp; (mRendered.Trajectory!= null)因为前几次传递,它仍为空。
如果我记得,这导致了一个无声的失败,并且不再允许渲染任何一个。
我认为值得分享,并希望它可能是您的解决方案。