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); }
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); }
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; }
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(); // начать отслеживание }
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); }
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; }
/// <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(); }
public void OnNewTrackableSource(TrackableSource trackableSource) { targetCounter++; objectTracker.DeactivateDataSet(dataSet); dataSet.CreateTrackable(trackableSource, targetBehaviour.gameObject); objectTracker.ActivateDataSet(dataSet); udt_targetBuildingBehaviour.StartScanning(); //throw new System.NotImplementedException(); }
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++; }
/// <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 (); }
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(); }
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(); }
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(); }
/// <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); }
// 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(); }
/// <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; } }