void LoadDataSet() { ObjectTracker objectTracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); DataSet dataSet = objectTracker.CreateDataSet(); if (dataSet.Load(dataSetName)) { objectTracker.Stop(); // stop tracker so that we can add new dataset if (!objectTracker.ActivateDataSet(dataSet)) { // Note: ImageTracker cannot have more than 100 total targets activated Debug.Log("<color=yellow>Failed to Activate DataSet: " + dataSetName + "</color>"); } if (!objectTracker.Start()) { Debug.Log("<color=yellow>Tracker Failed to Start.</color>"); } int counter = 0; IEnumerable <TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours(); foreach (TrackableBehaviour tb in tbs) { if (tb.name == "STOP") { // change generic name to include trackable name tb.gameObject.name = ++counter + ":DynamicImageTarget-" + tb.TrackableName; // add additional script components for trackable tb.gameObject.AddComponent <DefaultTrackableEventHandler>(); tb.gameObject.AddComponent <TurnOffBehaviour>(); if (augmentationObject != null) { // instantiate augmentation object and parent to trackable GameObject augmentation = (GameObject)GameObject.Instantiate(augmentationObject); augmentation.transform.parent = tb.gameObject.transform; augmentation.transform.localPosition = new Vector3(0f, 0f, 0f); augmentation.transform.localRotation = Quaternion.identity; augmentation.transform.localScale = new Vector3(0.005f, 0.005f, 0.005f); augmentation.gameObject.SetActive(true); } else { Debug.Log("<color=yellow>Warning: No augmentation object specified for: " + tb.TrackableName + "</color>"); } } } } else { Debug.LogError("<color=yellow>Failed to load dataset: '" + dataSetName + "'</color>"); } }
protected override void OnDestroy() { ((StateManagerImpl)TrackerManager.Instance.GetStateManager()).ClearTrackableBehaviours(); ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); if (tracker != null) { tracker.DestroyAllDataSets(false); tracker.Stop(); } TextTracker tracker2 = TrackerManager.Instance.GetTracker <TextTracker>(); if (tracker2 != null) { tracker2.Stop(); } SmartTerrainTracker tracker3 = TrackerManager.Instance.GetTracker <SmartTerrainTracker>(); if (tracker3 != null) { tracker3.Stop(); } DeviceTracker tracker4 = TrackerManager.Instance.GetTracker <DeviceTracker>(); if (tracker4 != null) { tracker4.Stop(); } VuforiaManager.Instance.Deinit(); if (tracker != null) { TrackerManager.Instance.DeinitTracker <ObjectTracker>(); } if (tracker2 != null) { TrackerManager.Instance.DeinitTracker <TextTracker>(); } if (tracker3 != null) { tracker3.SmartTerrainBuilder.Deinit(); TrackerManager.Instance.DeinitTracker <SmartTerrainTracker>(); } if (tracker4 != null) { TrackerManager.Instance.DeinitTracker <DeviceTracker>(); } this.mHasStartedOnce = false; if (this.mOnVuforiaDeinitialized != null) { this.mOnVuforiaDeinitialized.InvokeWithExceptionHandling(); } }
/// <summary> /// Takes a new trackable source and adds it to the dataset /// This gets called automatically as soon as you 'BuildNewTarget with UserDefinedTargetBuildingBehaviour /// </summary> public void OnNewTrackableSource(TrackableSource trackableSource) { mTargetCounter++; // Deactivates the dataset first mObjectTracker.DeactivateDataSet(mBuiltDataSet); // Destroy the oldest target if the dataset is full or the dataset // already contains five user-defined targets. if (mBuiltDataSet.HasReachedTrackableLimit() || mBuiltDataSet.GetTrackables().Count() >= MAX_TARGETS) { IEnumerable <Trackable> trackables = mBuiltDataSet.GetTrackables(); Trackable oldest = null; foreach (Trackable trackable in trackables) { if (oldest == null || trackable.ID < oldest.ID) { oldest = trackable; } } if (oldest != null) { Debug.Log("Destroying oldest trackable in UDT dataset: " + oldest.Name); mBuiltDataSet.Destroy(oldest, true); } } // Get predefined trackable and instantiate it ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate); imageTargetCopy.gameObject.name = "UserDefinedTarget-" + mTargetCounter; // Add the duplicated trackable to the data set and activate it mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject); // Activate the dataset again mObjectTracker.ActivateDataSet(mBuiltDataSet); // Extended Tracking with user defined targets only works with the most recently defined target. // If tracking is enabled on previous target, it will not work on newly defined target. // Don't need to call this if you don't care about extended tracking. StopExtendedTracking(); mObjectTracker.Stop(); mObjectTracker.ResetExtendedTracking(); mObjectTracker.Start(); // Make sure TargetBuildingBehaviour keeps scanning... mTargetBuildingBehaviour.StartScanning(); }
public void LoadDataSet(string _dataSetName, string _bundleUrl, Transform parent, Action <string> _callback) { Vuforia.ObjectTracker objectTracker = TrackerManager.Instance.GetTracker <Vuforia.ObjectTracker>(); DataSet dataSet = objectTracker.CreateDataSet(); if (dataSet.Load(_dataSetName)) { objectTracker.Stop(); // stop tracker so that we can add new dataset if (!objectTracker.ActivateDataSet(dataSet)) { // Note: ImageTracker cannot have more than 100 total targets activated Debug.Log("<color=yellow>Failed to Activate DataSet: " + _dataSetName + "</color>"); } if (!objectTracker.Start()) { Debug.Log("<color=yellow>Tracker Failed to Start.</color>"); } int counter = 0; IEnumerable <TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours(); foreach (TrackableBehaviour tb in tbs) { if (tb != null && tb.name == "New Game Object") { var bundleUrl = String.Join("", new string[2] { _bundleUrl, tb.TrackableName }); tb.transform.SetParent(parent); // change generic name to include trackable name tb.gameObject.name = ++counter + ":DynamicImageTarget-" + tb.TrackableName; Debug.Log("bU " + bundleUrl); // add additional script components for trackable var tracker = tb.gameObject.AddComponent <VuforiaTrackManager>(); tracker.Init(_dataSetName, bundleUrl, _callback); tb.gameObject.AddComponent <TurnOffBehaviour>(); } } } else { Debug.LogError("<color=yellow>Failed to load dataset: '" + _dataSetName + "'</color>"); } }
public virtual void Destroy() { Debug.Log("Try destroy TRACKABLE"); if (mTrackableBehaviour) { mTrackableBehaviour.UnregisterTrackableEventHandler(this); } Vuforia.ObjectTracker imageTracker = TrackerManager.Instance.GetTracker <Vuforia.ObjectTracker>(); imageTracker.Stop(); StateManager stateManager = TrackerManager.Instance.GetStateManager(); stateManager.DestroyTrackableBehavioursForTrackable(mTrackableBehaviour.Trackable, true); imageTracker.Start(); }
private bool StopVuforia() { this.mHasStarted = false; Debug.Log("StopVuforia"); ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); if (tracker != null) { tracker.Stop(); } CameraDevice.Instance.GetSelectedCameraDirection(out this.CameraDirection); this.CameraDeviceModeSetting = this.CameraDeviceMode; if (!CameraDevice.Instance.Stop()) { return(false); } if (!CameraDevice.Instance.Deinit()) { return(false); } VuforiaRenderer.Instance.ClearVideoBackgroundConfig(); Device.Instance.DeleteRenderingPrimitives(); return(true); }