Vuforia停止特定对象的跟踪(Stop special target tracking),每次只跟踪一个物体,提高性能和稳定性
Vuforia中
TrackerManager.Instance.GetTracker<ImageTracker>().Stop();
会使所有对象停止追踪,这与期望是不符的。
通过disable特定的vuforia数据集,实现对特定对象追踪的控制:
public void SwitchTargetByName(string activateThisDataset)
{
TrackerManager trackerManager = (TrackerManager)TrackerManager.Instance;
ObjectTracker objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
IEnumerable<DataSet> datasets = objectTracker.GetDataSets();
IEnumerable<DataSet> activeDataSets = objectTracker.GetActiveDataSets();
List<DataSet> activeDataSetsToBeRemoved = new List<DataSet>(activeDataSets);
//Loop through all the active datasets and deactivate them.
foreach (DataSet ads in activeDataSetsToBeRemoved)
{
objectTracker.DeactivateDataSet(ads);
}
//Swapping of the datasets should not be done while the ObjectTracker is working at the same time.
//So, Stop the tracker first.
objectTracker.Stop();
//Then, look up the new dataset and if one exists, activate it.
foreach (DataSet ds in datasets)
{
if (ds.Path.Contains(activateThisDataset))
{
objectTracker.ActivateDataSet(ds);
}
}
//Finally, start the object tracker.
objectTracker.Start();
}
参考链接:
https://forum.unity.com/threads/loading-and-unloading-datasets.879055/
http://www.cocoachina.com/articles/129215