我正在使用Unity3d中使用Project Tango的预定义ADF文件使用区域学习尝试区域识别。我使用this tutorial中的脚本作为基础,但出于某种原因,它不会重新定位。
using UnityEngine;
using System.Collections;
using Tango;
public class TestADFFile : MonoBehaviour, ITangoLifecycle
{
private TangoApplication m_tangoApplication;
public UnityEngine.UI.Text statusText;
public string adfName;
public void Start()
{
m_tangoApplication = FindObjectOfType<TangoApplication>();
if (m_tangoApplication != null)
{
m_tangoApplication.Register(this);
m_tangoApplication.RequestPermissions();
}
}
public void OnTangoPermissions(bool permissionsGranted)
{
if (permissionsGranted)
{
if(AreaDescription.ImportFromFile(System.IO.Path.Combine(Application.streamingAssetsPath, "adfs/" + adfName))){
statusText.text = "success!";
}
else{
statusText.text = "fail!";
}
AreaDescription[] list = AreaDescription.GetList();
AreaDescription mostRecent = null;
AreaDescription.Metadata mostRecentMetadata = null;
if (list.Length > 0)
{
// Find and load the most recent Area Description
mostRecent = list[0];
mostRecentMetadata = mostRecent.GetMetadata();
foreach (AreaDescription areaDescription in list)
{
AreaDescription.Metadata metadata = areaDescription.GetMetadata();
if (metadata.m_dateTime > mostRecentMetadata.m_dateTime)
{
mostRecent = areaDescription;
mostRecentMetadata = metadata;
}
}
m_tangoApplication.Startup(mostRecent);
}
else
{
// No Area Descriptions available.
Debug.Log("No area descriptions available.");
}
}
}
public void OnTangoServiceConnected()
{
}
public void OnTangoServiceDisconnected()
{
}
}
statusText
设置为“成功”,显然ADF已成功加载,对吗?
答案 0 :(得分:1)
你做得对。 区域学习模式关闭的重新定位非常快速。但是,使用区域学习模式重新定位需要相当长的时间。你需要走动3-5分钟,直到重定位工作。不要放弃。我有同样的问题。但最终,它有效!
答案 1 :(得分:0)
我认为不是答案,而只是我要检查的事项清单。
另外作为个人注释,我注意到ADF有时需要花费很长时间来重新定位,有时它们根本不会重新定位。 我认为原因是房间有些变化或者灯光差异很大,不同我的意思是说你记录的那天ADF是一个非常阳光灿烂的日子,而你试图重新定位的那天是阴天。(这也是只是我的理论,我从我的测试中得到了)