private bool StartVuforia(bool startObjectTracker) { Debug.Log("StartVuforia"); if (!CameraDevice.Instance.Init(this.CameraDirection)) { return(false); } if (!CameraDevice.Instance.SelectVideoMode(this.CameraDeviceModeSetting)) { return(false); } if (!CameraDevice.Instance.Start()) { return(false); } if (startObjectTracker) { ObjectTracker tracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); if (tracker != null) { tracker.Start(); } } this.mHasStarted = true; this.mCheckStopCamera = true; return(true); }
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>"); } }
/// <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(); }