public void SwapActiveDatasets(string datasetToActivate) { // 得到目标追踪器 ObjectTracker objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); //得到所有的DataSet IEnumerable<DataSet> datasets = objectTracker.GetDataSets(); //得到所有已经激活的Dataset IEnumerable<DataSet> activeDataSets = objectTracker.GetActiveDataSets(); //激活Dataset的List List<DataSet> activeDataSetsToBeRemoved = activeDataSets.ToList(); //关闭追踪器 objectTracker.Stop(); // 循环遍历激活数据集并关闭 foreach (DataSet ads in activeDataSetsToBeRemoved) { objectTracker.DeactivateDataSet(ads); } //判断是否存在需要激活的数据集并激活 foreach (DataSet ds in datasets) { if (ds.Path.Contains(datasetToActivate)) { objectTracker.ActivateDataSet(ds); } } // 将GuideView设置为2D IEnumerable<TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours(); foreach (TrackableBehaviour tb in tbs) { if (tb is ModelTargetBehaviour && tb.isActiveAndEnabled) { Debug.Log("TrackableName: " + tb.TrackableName); (tb as ModelTargetBehaviour).GuideViewMode = ModelTargetBehaviour.GuideViewDisplayMode.GuideView2D; } } // 5. 开启追踪 objectTracker.Start(); }
public void ActivateTarget(string loadThisDataset) { //TrackerManager trackerManager = (TrackerManager)TrackerManager.Instance; ObjectTracker objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); objectTracker.Stop(); //创建一个Dataset DataSet dataset = objectTracker.CreateDataSet(); //如果存在加载并激活. if (DataSet.Exists(loadThisDataset)) { dataset.Load(loadThisDataset); objectTracker.ActivateDataSet(dataset); } IEnumerable<TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours(); foreach (TrackableBehaviour tb in tbs) { if (tb is ModelTargetBehaviour && tb.isActiveAndEnabled) { Debug.Log("TrackableName: " + tb.TrackableName); (tb as ModelTargetBehaviour).GuideViewMode = ModelTargetBehaviour.GuideViewDisplayMode.GuideView2D; } } objectTracker.Start(); print("激活了"); }
通过手动切换数据集来实现一个场景可以激活多个目标模型
SwapActiveDataset方法为切换数据集并关闭之前激活的数据集(*数据集要求已经加载*)。ActivateTarget方法为加载数据集并激活