Exemple #1
0
    void Update()
    {
        if (mOnInitializedCalled)
        {
            // if we are currently scanning, update the current frame quality
            if (mCurrentlyScanning)
            {
                SetFrameQuality(mImageTracker.ImageTargetBuilder.GetFrameQuality());
            }

            // when building a new target, check if the trackablesource is already available
            if (mCurrentlyBuilding)
            {
                TrackableSource trackableSource = mImageTracker.ImageTargetBuilder.GetTrackableSource();
                if (trackableSource != null)
                {
                    mCurrentlyBuilding = false;

                    // notify the event handlers:
                    foreach (IUserDefinedTargetEventHandler eventHandler in mHandlers)
                    {
                        eventHandler.OnNewTrackableSource(trackableSource);
                    }

                    if (StopScanningWhenFinshedBuilding)
                    {
                        StopScanning();
                    }
                }
            }
        }
    }
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {                                                                     //将新的目标添加到数据集
        count++;
        objectTracker.DeactivateDataSet(dataSet);                         //禁用数据集
        if (dataSet.HasReachedTrackableLimit())                           //数据集上限
        {
            IEnumerable <Trackable> trackables = dataSet.GetTrackables(); //拿到数据集
            Trackable oldTrackable             = null;
            foreach (Trackable trackable in trackables)
            {
                if (oldTrackable.ID > trackable.ID || oldTrackable == null)
                {
                    oldTrackable = trackable;
                }
            }
            if (oldTrackable != null)
            {
                dataSet.Destroy(oldTrackable, true);//删除最早的数据
            }
        }
        ImageTargetBehaviour imageTargetCopy = Instantiate(ImageTarget);

        imageTargetCopy.gameObject.name = "UseTarget_" + count;               //修改名字
        dataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject); //创建到数据集
        objectTracker.ActivateDataSet(dataSet);                               //激活数据库
    }
 private void Update()
 {
     if (this.mOnInitializedCalled)
     {
         if (this.mCurrentlyScanning)
         {
             this.SetFrameQuality(this.mImageTracker.ImageTargetBuilder.GetFrameQuality());
         }
         if (this.mCurrentlyBuilding)
         {
             TrackableSource trackableSource = this.mImageTracker.ImageTargetBuilder.GetTrackableSource();
             if (trackableSource != null)
             {
                 this.mCurrentlyBuilding = false;
                 foreach (IUserDefinedTargetEventHandler handler in this.mHandlers)
                 {
                     handler.OnNewTrackableSource(trackableSource);
                 }
                 if (this.StopScanningWhenFinshedBuilding)
                 {
                     this.StopScanning();
                 }
             }
         }
     }
 }
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        if (trackable != null)
        {
            return;
        }                                    // 이미 있으면 새로 생성하지 않는다.

        // deactivates the dataset first
        mImageTracker.DeactivateDataSet(mBuiltDataSet);

        // 타겟 템플릿을 복제해 실제 추적할 타겟을 만든다.
        ImageTargetBehaviour targetTemplate = GetTargetTemplate(lastTargetType);

        if (targetTemplate == null)
        {
            return;
        }
        GameObject           objCopy         = Instantiate(targetTemplate.gameObject) as GameObject;
        ImageTargetBehaviour imageTargetCopy = objCopy.GetComponent <ImageTargetBehaviour>();

        imageTargetCopy.gameObject.name = targetTemplate.TrackableName + "_Created";

        // 추적 정보를 생성하고, 생성된 정보를 유지
        DataSetTrackableBehaviour created = mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

        trackable = created.Trackable;
        objTarget = imageTargetCopy.gameObject;

        // activate the dataset again
        mImageTracker.ActivateDataSet(mBuiltDataSet);
    }
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        // deactivates the dataset first
        mObjectTracker.DeactivateDataSet(mBuiltDataSet);

        // Destroy the oldest target if the dataset is full
        if (mBuiltDataSet.HasReachedTrackableLimit())
        {
            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)
            {
                mBuiltDataSet.Destroy(oldest, true);
            }
        }

        // get predefined trackable (template) and instantiate it
        ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);

        // add the trackable to the data set and activate it
        mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

        // Re-activate the dataset
        mObjectTracker.ActivateDataSet(mBuiltDataSet);
    }
Exemple #6
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        // deactivates the dataset first
        mObjectTracker.DeactivateDataSet(mBuiltDataSet);

        // Destroy the oldest target if the dataset is full
        if (mBuiltDataSet.HasReachedTrackableLimit())
        {
            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)
            {
                mBuiltDataSet.Destroy(oldest, true);
            }
        }

        // get predefined trackable (template) and instantiate it
        ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);

        // add the trackable to the data set and activate it
        mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

        // Re-activate the dataset
        mObjectTracker.ActivateDataSet(mBuiltDataSet);
    }
Exemple #7
0
 private void Update()
 {
     if (this.mOnInitializedCalled)
     {
         if (this.mCurrentlyScanning)
         {
             this.SetFrameQuality(this.mObjectTracker.ImageTargetBuilder.GetFrameQuality());
         }
         if (this.mCurrentlyBuilding)
         {
             TrackableSource trackableSource = this.mObjectTracker.ImageTargetBuilder.GetTrackableSource();
             if (trackableSource != null)
             {
                 this.mCurrentlyBuilding = false;
                 using (List <IUserDefinedTargetEventHandler> .Enumerator enumerator = this.mHandlers.GetEnumerator())
                 {
                     while (enumerator.MoveNext())
                     {
                         enumerator.Current.OnNewTrackableSource(trackableSource);
                     }
                 }
                 if (this.StopScanningWhenFinshedBuilding)
                 {
                     this.StopScanning();
                 }
             }
         }
     }
 }
    /// <summary>
    /// Returns a trackable source object to be used in adding a new target to a dataset
    /// </summary>
    public override TrackableSource GetTrackableSource()
    {
        IntPtr trackableSourcePtr = QCARWrapper.Instance.ImageTargetBuilderGetTrackableSource();
        if ((mTrackableSource == null) && (trackableSourcePtr != IntPtr.Zero))
            mTrackableSource = new TrackableSourceImpl(trackableSourcePtr);

        return mTrackableSource;
    }
Exemple #9
0
 public void OnNewTrackableSource(TrackableSource trackableSource)// метод который отвечает за новую отслеживаемую цель, подробнее по ссылке https://library.vuforia.com/articles/Training/User-Defined-Targets-Guide
 {
     targetCount++;
     ObjTracker.DeactivateDataSet(dataSet);                                // поскольку мы собираемся использовать новый набор данных нужно Deactivate старый набор.
     dataSet.CreateTrackable(trackableSource, targetBehaviour.gameObject); // узнаем что отслеживается нами// первая переменная это отслеживаемый источник в данный момент, а второй это цель т.е. ImageTraget если не понятно то по ссылке https://library.vuforia.com/articles/Training/User-Defined-Targets-Guide
     ObjTracker.ActivateDataSet(dataSet);                                  // активация нового набора данных
     UDT_BuildingBehaviour.StartScanning();                                // начать отслеживание
 }
Exemple #10
0
 public void OnNewTrackableSource(TrackableSource trackableSource)
 {
     targetCounter++;
     objectTracker.DeactivateDataSet(dataSet);
     dataSet.CreateTrackable(trackableSource, targetBehaviour.gameObject); // create a new trackable image and add it to dataset
     objectTracker.ActivateDataSet(dataSet);                               // re-activate data set
     udt_targetBuildingBehavior.StartScanning();                           // start tracking
 }
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        targetCounter++;
        objectTracker.DeactivateDataSet(dataSet);

        dataSet.CreateTrackable(trackableSource, targetBehavior.gameObject);
        objectTracker.ActivateDataSet(dataSet);
        udt_targetBuildingBehavior.StartScanning();
    }
        public override TrackableSource GetTrackableSource()
        {
            IntPtr intPtr = VuforiaWrapper.Instance.ImageTargetBuilderGetTrackableSource();

            if (this.mTrackableSource == null && intPtr != IntPtr.Zero)
            {
                this.mTrackableSource = new TrackableSourceImpl(intPtr);
            }
            return(this.mTrackableSource);
        }
Exemple #13
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        targetCounter++;
        objectTracker.DeactivateDataSet(dataSet);
        ImageTargetBehaviour imageTargetCopy = Instantiate(imageTargetTemplate);

        imageTargetCopy.gameObject.name = "UserTarget-" + targetCounter;
        dataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);
        objectTracker.ActivateDataSet(dataSet);
    }
    public override TrackableSource GetTrackableSource()
    {
        IntPtr trackableSourcePtr = QCARWrapper.Instance.ImageTargetBuilderGetTrackableSource();

        if ((this.mTrackableSource == null) && (trackableSourcePtr != IntPtr.Zero))
        {
            this.mTrackableSource = new TrackableSourceImpl(trackableSourcePtr);
        }
        return(this.mTrackableSource);
    }
 public override bool Build(string targetName, float sceenSizeWidth)
 {
     if (targetName.Length > 0x40)
     {
         Debug.LogError("Invalid parameters to build User Defined Target:Target name exceeds 64 character limit");
         return(false);
     }
     this.mTrackableSource = null;
     return(QCARWrapper.Instance.ImageTargetBuilderBuild(targetName, sceenSizeWidth) == 1);
 }
    /// <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
        if (mBuiltDataSet.HasReachedTrackableLimit())
        {
            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;
        textMesh      = imageTargetCopy.gameObject.GetComponentInChildren <TextMesh>();
        textMesh.text = "Target #" + 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();
        bool persist = mObjectTracker.PersistExtendedTracking(true);

        if (persist)
        {
            mObjectTracker.Stop();
            mObjectTracker.ResetExtendedTracking();
            mObjectTracker.Start();
        }
    }
 /// <summary>
 ///  Build an Image Target Trackable source from the next available camera frame 
 /// </summary>
 public override bool Build(string targetName, float sceenSizeWidth)
 {
     if (targetName.Length > 64)
     {
         Debug.LogError("Invalid parameters to build User Defined Target:" +
                        "Target name exceeds 64 character limit");
         return false;
     }
     mTrackableSource = null;
     return QCARWrapper.Instance.ImageTargetBuilderBuild(targetName, sceenSizeWidth) == 1;
 }
Exemple #18
0
    /// <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;
            Debug.Log(" text 123456789");
            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();
    }
Exemple #19
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        targetCounter++;
        objectTracker.DeactivateDataSet(dataSet);

        dataSet.CreateTrackable(trackableSource, targetBehaviour.gameObject);

        objectTracker.ActivateDataSet(dataSet);

        udt_targetBuildingBehaviour.StartScanning();

        //throw new System.NotImplementedException();
    }
Exemple #20
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        _objectTracker.DeactivateDataSet(_dataSet);

        _dataSet.DestroyAllTrackables(true);

        ImageTargetBehaviour targetCopy = (ImageTargetBehaviour)Instantiate(_targetTemplate);
        targetCopy.gameObject.name = targetName + id;

        _dataSet.CreateTrackable(trackableSource, targetCopy.gameObject);
        _objectTracker.ActivateDataSet(_dataSet);

        id++;
    }
Exemple #21
0
    /// <summary>
    /// called when an error is reported during initialization
    /// </summary>
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        Debug.Log("new trackable");
        ImageTracker imageTracker =
            (ImageTracker)TrackerManager.Instance.GetTracker <ImageTracker>();
        var db        = imageTracker.CreateDataSet();
        var trackable = db.CreateTrackable(trackableSource, "new trackable");

        model.parent      = trackable.transform;
        model.localScale *= 50;
        imageTracker.ActivateDataSet(db);
        //var imgTarget = trackable.Trackable as ExtendedTrackable;
        //imgTarget.StartExtendedTracking ();
    }
Exemple #22
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        this.targetCounter++;

        //deactivate dataset first
        this.objectTracker.DeactivateDataSet(this.userDefinedSet);

        // Destroy the oldest target if the dataset is full or the dataset
        // already contains five user-defined targets.
        if (this.userDefinedSet.HasReachedTrackableLimit() || this.userDefinedSet.GetTrackables().Count() >= MAX_UD_TARGETS)
        {
            IEnumerable <Trackable> trackables = this.userDefinedSet.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);
                this.userDefinedSet.Destroy(oldest, false);
            }
        }

        // Get predefined trackable and instantiate it
        //ImageTargetBehaviour imageTargetCopy = Instantiate(this.imageTargetTemplate);
        //imageTargetCopy.gameObject.name = "UserDefinedTarget-" + this.targetCounter;

        // Add the duplicated trackable to the data set and activate it
        this.userDefinedSet.CreateTrackable(trackableSource, this.imageTargetTemplate.gameObject);

        // Activate the dataset again
        this.objectTracker.ActivateDataSet(this.userDefinedSet);

        this.objectTracker.Stop();
        this.imageTargetTemplate.ImageTarget.StartExtendedTracking();
        this.objectTracker.ResetExtendedTracking();
        this.objectTracker.Start();


        // Make sure TargetBuildingBehaviour keeps scanning...
        this.buildingBehaviour.StartScanning();
    }
    /// <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)
    {
        // Deactivates the dataset first
        m_ObjectTracker.DeactivateDataSet(m_UDT_DataSet);

        // Destroy the oldest target if the dataset is full or the dataset
        // already contains five user-defined targets.
        if (m_UDT_DataSet.HasReachedTrackableLimit() || m_UDT_DataSet.GetTrackables().Count() >= MAX_TARGETS)
        {
            IEnumerable <Trackable> trackables = m_UDT_DataSet.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);
                m_UDT_DataSet.Destroy(oldest, true);
            }
        }


        // Get predefined trackable and instantiate it
        ImageTargetBehaviour imageTargetCopy = Instantiate(ImageTargetTemplate, transform.parent);

        imageTargetCopy.gameObject.name = "UserDefinedTarget-" + m_TargetCounter;
        //imageTargetCopy.transform.parent = transform.parent;

        // Add the duplicated trackable to the data set and activate it
        m_UDT_DataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

        // Activate the dataset again
        m_ObjectTracker.ActivateDataSet(m_UDT_DataSet);

        // Make sure TargetBuildingBehaviour keeps scanning...
        m_TargetBuildingBehaviour.StartScanning();


        m_TargetCounter++;
    }
        public void OnNewTrackableSource(TrackableSource trackableSource)
        {
            _objectTracker.DeactivateDataSet(_udtDataSet);
            _udtDataSet.DestroyAllTrackables(true);
            var instance = Instantiate(_imageTargetTemplate);

            instance.gameObject.name = string.Format("{0}_instance", _imageTargetTemplate.TrackableName);
            instance.gameObject.SetActive(true);
            //TODO make more abstract
            MainSceneController.Instance.SceneContainer = instance.GetComponent <SceneContainer>();
            _udtDataSet.CreateTrackable(trackableSource, instance.gameObject);
            _objectTracker.ActivateDataSet(_udtDataSet);
            StopExtendedTracking();
            _objectTracker.Stop();
            _objectTracker.ResetExtendedTracking();
            _objectTracker.Start();
            _targetBuildingBehaviour.StartScanning();
        }
Exemple #25
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        Debug.Log("new trackable");
        imageTracker = (ImageTracker)TrackerManager.Instance.GetTracker <ImageTracker>();
        var db        = imageTracker.CreateDataSet();
        var trackable = db.CreateTrackable(trackableSource, "new trackable");

        trackable.transform.localScale = new Vector3(1, 1, 1);
        model.parent = trackable.transform;
        //model.localScale *= 50;
        imageTracker.ActivateDataSet(db);
        StopExtendedTracking();
        var imgBhv = GameObject.Find("new trackable").GetComponent <ImageTargetBehaviour>();

        imgBhv.ImageTarget.StartExtendedTracking();
        imgBhv.RegisterTrackableEventHandler(this);
        //imageTracker.PersistExtendedTracking(true);
        //imageTracker.ResetExtendedTracking();
    }
    /// <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);

        mObjectTracker.Stop();
        mObjectTracker.ResetExtendedTracking();
        mObjectTracker.Start();
    }
Exemple #27
0
        public override DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, GameObject gameObject)
        {
            TrackableSourceImpl trackableSourceImpl = (TrackableSourceImpl)trackableSource;
            StringBuilder       stringBuilder       = new StringBuilder(128);
            IntPtr           intPtr           = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SimpleTargetData)));
            int              num              = VuforiaWrapper.Instance.DataSetCreateTrackable(this.mDataSetPtr, trackableSourceImpl.TrackableSourcePtr, stringBuilder, 128, intPtr);
            SimpleTargetData simpleTargetData = (SimpleTargetData)Marshal.PtrToStructure(intPtr, typeof(SimpleTargetData));

            Marshal.FreeHGlobal(intPtr);
            if (num == (int)TypeMapping.GetTypeID(typeof(ImageTarget)))
            {
                ImageTarget imageTarget = new ImageTargetImpl(stringBuilder.ToString(), simpleTargetData.id, ImageTargetType.USER_DEFINED, this);
                this.mTrackablesDict[simpleTargetData.id] = imageTarget;
                Debug.Log(string.Format("Trackable created: {0}, {1}", num, stringBuilder));
                return(((StateManagerImpl)TrackerManager.Instance.GetStateManager()).FindOrCreateImageTargetBehaviourForTrackable(imageTarget, gameObject, this));
            }
            Debug.LogError("DataSet.CreateTrackable returned unknown or incompatible trackable type!");
            return(null);
        }
        /// <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)
        {
            _targetCounter++;

            // Deactivates the dataset first
            _objectTracker.DeactivateDataSet(_udtDataSet);

            // Destroy the oldest target if the dataset is full or the dataset
            // already contains five user-defined targets.
            if (_udtDataSet.HasReachedTrackableLimit() || _udtDataSet.GetTrackables().Count() >= MaxTargets)
            {
                var       trackables = _udtDataSet.GetTrackables();
                Trackable oldest     = null;
                foreach (var 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);
                    _udtDataSet.Destroy(oldest, true);
                }
            }

            // Get predefined trackable and instantiate it
            var imageTargetCopy = Instantiate(ImageTargetTemplate);

            imageTargetCopy.gameObject.name = "UserDefinedTarget-" + _targetCounter;

            // Add the duplicated trackable to the data set and activate it
            _udtDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

            // Activate the dataset again
            _objectTracker.ActivateDataSet(_udtDataSet);

            // Make sure TargetBuildingBehaviour keeps scanning...
            _targetBuildingBehaviour.StartScanning();
        }
        public void OnNewTrackableSource(TrackableSource trackableSource)
        {
            _objectTracker.DeactivateDataSet(_udtDataSet);
            _udtDataSet.DestroyAllTrackables(true);
            var instance = Instantiate(_imageTargetTemplate);

            instance.gameObject.name = string.Format("{0}_instance", _imageTargetTemplate.TrackableName);
            instance.gameObject.SetActive(true);
            _udtDataSet.CreateTrackable(trackableSource, instance.gameObject);
            _objectTracker.ActivateDataSet(_udtDataSet);
            StopExtendedTracking();
            _objectTracker.Stop();
            _objectTracker.ResetExtendedTracking();
            if (OnTargetBuilt != null)
            {
                OnTargetBuilt(this, new TargetBuiltEventArgs(instance.GetComponent <TrackableObject>()));
            }
            _objectTracker.Start();
            _targetBuildingBehaviour.StartScanning();
        }
Exemple #30
0
    /// <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)
    {
        // Deactivates the dataset first
        m_ObjectTracker.DeactivateDataSet(m_UDT_DataSet);

        // Destroy the oldest target in the dataset if a new target is created
        IEnumerable <Trackable> trackables = m_UDT_DataSet.GetTrackables();
        Trackable oldest = null;

        //fetch for the last target to destroy it
        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);
            m_UDT_DataSet.Destroy(oldest, true);
        }


        // Get predefined trackable and instantiate it
        ImageTargetBehaviour imageTargetCopy = Instantiate(ImageTargetTemplate);

        imageTargetCopy.gameObject.name = "USERTARGET";
        // Add the duplicated trackable to the data set and activate it
        m_UDT_DataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);

        // Activate the dataset again
        m_ObjectTracker.ActivateDataSet(m_UDT_DataSet);

        m_ObjectTracker.Stop();
        m_ObjectTracker.ResetExtendedTracking();
        m_ObjectTracker.Start();

        // Make sure TargetBuildingBehaviour keeps scanning...
        m_TargetBuildingBehaviour.StartScanning();
    }
    public override DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, GameObject gameObject)
    {
        TrackableSourceImpl impl       = (TrackableSourceImpl)trackableSource;
        int              capacity      = 0x80;
        StringBuilder    trackableName = new StringBuilder(capacity);
        IntPtr           trackableData = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SimpleTargetData)));
        int              num2          = QCARWrapper.Instance.DataSetCreateTrackable(this.mDataSetPtr, impl.TrackableSourcePtr, trackableName, capacity, trackableData);
        SimpleTargetData data          = (SimpleTargetData)Marshal.PtrToStructure(trackableData, typeof(SimpleTargetData));

        Marshal.FreeHGlobal(trackableData);
        if (num2 == TypeMapping.GetTypeID(typeof(ImageTarget)))
        {
            ImageTarget trackable = new ImageTargetImpl(trackableName.ToString(), data.id, ImageTargetType.USER_DEFINED, this);
            this.mTrackablesDict[data.id] = trackable;
            Debug.Log(string.Format("Trackable created: {0}, {1}", num2, trackableName));
            StateManagerImpl stateManager = (StateManagerImpl)TrackerManager.Instance.GetStateManager();
            return(stateManager.FindOrCreateImageTargetBehaviourForTrackable(trackable, gameObject, this));
        }
        Debug.LogError("DataSet.CreateTrackable returned unknown or incompatible trackable type!");
        return(null);
    }
Exemple #32
0
    // Adds a single trackable from a source and a given gameobject to this dataset
    public override DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, GameObject gameObject)
    {
        // create a trackable in native from the trackable source handle:
        TrackableSourceImpl trackableSourceImpl = (TrackableSourceImpl)trackableSource;

        // QCAR support names up to 64 characters in length, but here we allocate
        // a slightly larger buffer:
        int nameLength = 128;

        System.Text.StringBuilder trackableName = new System.Text.StringBuilder(nameLength);

        IntPtr targetDataPtr =
            Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SimpleTargetData)));
        TrackableType trackableType = (TrackableType)QCARWrapper.Instance.DataSetCreateTrackable(mDataSetPtr, trackableSourceImpl.TrackableSourcePtr, trackableName, nameLength, targetDataPtr);

        SimpleTargetData targetData = (SimpleTargetData)
                                      Marshal.PtrToStructure(targetDataPtr, typeof(SimpleTargetData));

        Marshal.FreeHGlobal(targetDataPtr);

        // currently only supported for ImageTargets:
        if (trackableType == TrackableType.IMAGE_TARGET)
        {
            ImageTarget newImageTarget = new ImageTargetImpl(trackableName.ToString(), targetData.id, ImageTargetType.USER_DEFINED, this);

            // Add newly created Image Target to dictionary.
            mTrackablesDict[targetData.id] = newImageTarget;

            Debug.Log(string.Format("Trackable created: {0}, {1}", trackableType, trackableName));

            // Find or create ImageTargetBehaviour for this ImageTarget:
            StateManagerImpl stateManager = (StateManagerImpl)TrackerManager.Instance.GetStateManager();
            return(stateManager.FindOrCreateImageTargetBehaviourForTrackable(newImageTarget, gameObject, this));
        }
        else
        {
            Debug.LogError("DataSet.CreateTrackable returned unknown or incompatible trackable type!");
            return(null);
        }
    }
        public void OnNewTrackableSource(TrackableSource trackableSource)
        {
            _objectTracker.DeactivateDataSet(_udtDataSet);
            _udtDataSet.DestroyAllTrackables(true);
            var instance = Instantiate(_imageTargetTemplate);

            instance.gameObject.name = $"{_imageTargetTemplate.TrackableName}_instance";
            instance.gameObject.SetActive(true);
            _udtDataSet.CreateTrackable(trackableSource, instance.gameObject);
            _objectTracker.ActivateDataSet(_udtDataSet);
            StopExtendedTracking();
            _objectTracker.Stop();
            _objectTracker.ResetExtendedTracking();
            //TODO make more abstract
            SceneControllerTurbine.Instance.HookOnTrackingChanged();
            _objectTracker.Start();
            //TODO: make more abstract
            SceneControllerTurbine.Instance.SceneState = TurbineState.Default;
            _targetBuildingBehaviour.StartScanning();
            //TODO: make more abstract
            TurbineViewModel.Instance.RefreshProperties();
        }
Exemple #34
0
    /// <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();
            foreach (Trackable trackable in trackables)
            {
                mBuiltDataSet.Destroy(trackable, true);
            }
        }


        // Get predefined trackable and instantiate it       -----  Add more targets

        /*ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);
         * imageTargetCopy.gameObject.name = "UserDefinedTarget-" + mTargetCounter;*/

        // Add the duplicated trackable to the data set and activate it
        mBuiltDataSet.CreateTrackable(trackableSource, ImageTargetTemplate.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();
    }
    /// <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
        mImageTracker.DeactivateDataSet(mBuiltDataSet);
        
        // Destroy the oldest target if the dataset is full or the dataset 
        // already contains five user-defined targets.
        if (mBuiltDataSet.GetTrackables().Count() >= 1)
        {
            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
        mImageTracker.ActivateDataSet(mBuiltDataSet);


    }
 /// <summary>
 /// Creates a new trackable behaviour attached to a new gameobject with the given name and adds it to this dataset
 /// </summary>
 public abstract DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, string gameObjectName);
 /// <summary>
 /// Adds a single trackable from a source and a given gameobject to this dataset
 /// </summary>
 public abstract DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, GameObject gameObject);
    /// <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() >= maxNumTargets)
        {
            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 = "UserTarget-" + (mTargetCounter-1);
        //imageTargetCopy.gameObject.name = "ActiveBomb" + (mTargetCounter-1);

        // 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();

    }
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        if (trackable != null) { return; }   // 이미 있으면 새로 생성하지 않는다.

        // deactivates the dataset first
        mImageTracker.DeactivateDataSet(mBuiltDataSet);

        // 타겟 템플릿을 복제해 실제 추적할 타겟을 만든다.
        ImageTargetBehaviour targetTemplate = GetTargetTemplate(lastTargetType);
        if (targetTemplate == null) { return; }
        GameObject objCopy = Instantiate(targetTemplate.gameObject) as GameObject;
        ImageTargetBehaviour imageTargetCopy = objCopy.GetComponent<ImageTargetBehaviour>();
        imageTargetCopy.gameObject.name = targetTemplate.TrackableName + "_Created";

        // 추적 정보를 생성하고, 생성된 정보를 유지
        DataSetTrackableBehaviour created = mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);
        trackable = created.Trackable;
        objTarget = imageTargetCopy.gameObject;

        // activate the dataset again
        mImageTracker.ActivateDataSet(mBuiltDataSet);
    }
 // creates a new trackable behaviour attached to a fresh gameobject with the given name and adds it to this dataset
 public override DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, string gameObjectName)
 {
     GameObject gameObject = new GameObject(gameObjectName);
     return CreateTrackable(trackableSource, gameObject);
 }
    // Adds a single trackable from a source and a given gameobject to this dataset
    public override DataSetTrackableBehaviour CreateTrackable(TrackableSource trackableSource, GameObject gameObject)
    {
        // create a trackable in native from the trackable source handle:
        TrackableSourceImpl trackableSourceImpl = (TrackableSourceImpl)trackableSource;

        // QCAR support names up to 64 characters in length, but here we allocate
        // a slightly larger buffer:
        int nameLength = 128;
        System.Text.StringBuilder trackableName = new System.Text.StringBuilder(nameLength);

        IntPtr targetDataPtr =
            Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SimpleTargetData)));
        TrackableType trackableType = (TrackableType)QCARWrapper.Instance.DataSetCreateTrackable(mDataSetPtr, trackableSourceImpl.TrackableSourcePtr, trackableName, nameLength, targetDataPtr);

        SimpleTargetData targetData = (SimpleTargetData)
                Marshal.PtrToStructure(targetDataPtr, typeof(SimpleTargetData));

        Marshal.FreeHGlobal(targetDataPtr);

        // currently only supported for ImageTargets:
        if (trackableType == TrackableType.IMAGE_TARGET)
        {
            ImageTarget newImageTarget = new ImageTargetImpl(trackableName.ToString(), targetData.id, ImageTargetType.USER_DEFINED, this);

            // Add newly created Image Target to dictionary.
            mTrackablesDict[targetData.id] = newImageTarget;

            Debug.Log(string.Format("Trackable created: {0}, {1}", trackableType, trackableName));

            // Find or create ImageTargetBehaviour for this ImageTarget:
            StateManagerImpl stateManager = (StateManagerImpl)TrackerManager.Instance.GetStateManager();
            return stateManager.FindOrCreateImageTargetBehaviourForTrackable(newImageTarget, gameObject, this);
        }
        else
        {
            Debug.LogError("DataSet.CreateTrackable returned unknown or incompatible trackable type!");
            return null;
        }
    }