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();
        }
Exemplo n.º 4
0
    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>");
        }
    }
Exemplo n.º 5
0
    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);
        }