public void AddDefaultModelRecoEventHandler(GameObject modelReco, ModelTargetBehaviour modelTargetTemplate) { var mreh = modelReco.AddComponent <DefaultModelRecoEventHandler>(); mreh.ShowBoundingBox = true; mreh.ModelTargetTemplate = modelTargetTemplate; }
private bool IsModelTrackedInView(ModelTargetBehaviour modelTarget) { if (!modelTarget) { return(false); } if (modelTarget.CurrentStatus == TrackableBehaviour.Status.NO_POSE) { return(false); } var cam = DigitalEyewearARController.Instance.PrimaryCamera; if (!cam) { return(false); } // Compute the center of the model in World coordinates Bounds modelBounds = GetModelTargetWorldBounds(modelTarget); var frustumPlanes = GeometryUtility.CalculateFrustumPlanes(cam); return(GeometryUtility.TestPlanesAABB(frustumPlanes, modelBounds)); }
/// <summary> /// Handles new search results. /// </summary> /// <param name="searchResult"></param> public virtual void OnNewSearchResult(TargetFinder.TargetSearchResult searchResult) { Debug.Log("ModelReco: new search result available: " + searchResult.TargetName); // Find or create the referenced model target GameObject modelTargetGameObj = null; var existingModelTarget = FindExistingModelTarget((TargetFinder.ModelRecoSearchResult)searchResult); if (existingModelTarget) { modelTargetGameObj = existingModelTarget.gameObject; } if (!modelTargetGameObj) { modelTargetGameObj = new GameObject("ModelTarget_" + searchResult.TargetName); } // Enable the new search result as a Model Target ModelTargetBehaviour mtb = mTargetFinder.EnableTracking( searchResult, modelTargetGameObj) as ModelTargetBehaviour; if (mtb) { mLastRecoModelTarget = mtb; if (StopSearchWhenModelFound) { // Stop the target finder mModelRecoBehaviour.ModelRecoEnabled = false; } } }
void OnDestroy() { ModelTargetBehaviour modelTargetBehaviour = GetComponent <ModelTargetBehaviour>(); if (modelTargetBehaviour) { modelTargetBehaviour.UnregisterOnTrackableStatusChanged(OnTrackableStatusChanged); } }
public void AddAdvancedModelTargetBehaviour(ModelTargetBehaviour mtb) { if (mtb != null && this.modelTargetBehaviours != null) { this.modelTargetBehaviours.Add(mtb); } EnableSymbolicTargetsUI(this.modelTargetBehaviours.Count == 0); }
protected virtual void Start() { this.savedMaterials = new Dictionary <MeshRenderer, Material>(); ModelTargetBehaviour modelTargetBehaviour = GetComponent <ModelTargetBehaviour>(); if (modelTargetBehaviour) { modelTargetBehaviour.RegisterOnTrackableStatusChanged(OnTrackableStatusChanged); } }
protected virtual void Start() { this.savedMaterials = new Dictionary <MeshRenderer, Material>(); ModelTargetBehaviour modelTargetBehaviour = GetComponent <ModelTargetBehaviour>(); if (modelTargetBehaviour) { modelTargetBehaviour.RegisterTrackableEventHandler(this); } }
/// <summary> /// Handles new search results. /// </summary> /// <param name="searchResult"></param> public virtual void OnNewSearchResult(TargetFinder.TargetSearchResult searchResult) { Debug.Log("<color=cyan>OnNewSearchResult() called: </color>" + searchResult.TargetName); // Find or create the referenced model target GameObject modelTargetGameObj = null; bool builtFromTemplate = false; var existingModelTarget = FindExistingModelTarget(searchResult); if (existingModelTarget) { modelTargetGameObj = existingModelTarget.gameObject; builtFromTemplate = false; } else if (ModelTargetTemplate) { modelTargetGameObj = Instantiate(ModelTargetTemplate.gameObject); builtFromTemplate = true; } if (!modelTargetGameObj) { Debug.LogError("Could not create a Model Target."); return; } // Enable the new search result as a Model Target ModelTargetBehaviour mtb = targetFinder.EnableTracking(searchResult, modelTargetGameObj) as ModelTargetBehaviour; if (mtb) { this.lastRecoModelTarget = mtb; // If the model target was created from a template, // we augment it with a bounding box game object if (builtFromTemplate && ShowBoundingBox) { OrientedBoundingBox3D modelBoundingBox = mtb.ModelTarget.GetBoundingBox(); var boundingBoxGameObj = CreateBoundingBox(mtb.ModelTarget.Name, modelBoundingBox); // Parent the bounding box under the model target. boundingBoxGameObj.transform.SetParent(modelTargetGameObj.transform, false); } if (this.StopSearchWhenModelFound) { // StopService the target finder this.modelRecoBehaviour.ModelRecoEnabled = false; } } }
public void AddAdvancedModelTargetBehaviour(ModelTargetBehaviour mtb) { Debug.Log("AddAdvancedModelTargetBehaviour() called."); if (mtb != null && this.modelTargetBehaviours != null) { this.modelTargetBehaviours.Add(mtb); } VLog.Log("cyan", "# of Advanced MTBs: " + this.modelTargetBehaviours.Count); EnableSymbolicTargetsUI(this.modelTargetBehaviours.Count == 0); }
void Start() { mModelTarget = modelTarget.GetComponent <ModelTargetBehaviour>(); guideViewCounter = 0; dataSetCounter = 0; dataSetNames = new string[2] { "Spinner", "iPhone6_Color" }; VuforiaARController.Instance.RegisterVuforiaStartedCallback(InitializeObjectTracker); }
void Update() { if (!this.isModelTargetReferenceStored && this.mTrackableBehaviour.Trackable != null) { ModelTargetBehaviour mtb = this.mTrackableBehaviour as ModelTargetBehaviour; if (mtb != null && this.modelTargetsManager) { this.modelTargetsManager.AddAdvancedModelTargetBehaviour(mtb); this.isModelTargetReferenceStored = true; } } }
private void SwitchDatabase(string[] dataSetsToBeActivated) { if (Input.GetKeyDown(KeyCode.D)) { IEnumerable <DataSet> activeDataSets = objectTracker.GetActiveDataSets(); List <DataSet> activeDataSetsToBeRemoved = new List <DataSet>(); activeDataSetsToBeRemoved.AddRange(activeDataSets); foreach (DataSet set in activeDataSetsToBeRemoved) { objectTracker.DeactivateDataSet(set); } objectTracker.Stop(); DataSet dataSet = objectTracker.CreateDataSet(); if (DataSet.Exists(dataSetNames[dataSetCounter])) { dataSet.Load(dataSetNames[dataSetCounter]); objectTracker.ActivateDataSet(dataSet); if (dataSetCounter == dataSetNames.Length - 1) { dataSetCounter = 0; } else { dataSetCounter++; } } IEnumerable <TrackableBehaviour> trackableBehaviours = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours(); foreach (TrackableBehaviour tb in trackableBehaviours) { if (tb is ModelTargetBehaviour && tb.isActiveAndEnabled) { Debug.Log("TrackableName: " + tb.TrackableName); (tb as ModelTargetBehaviour).GuideViewMode = ModelTargetBehaviour.GuideViewDisplayMode.GuideView2D; mModelTarget = tb.GetComponent <ModelTargetBehaviour>(); } } objectTracker.Start(); } }
void Update() { if (!this.isModelTargetReferenceStored && this.mTrackableBehaviour.Trackable != null) { VLog.Log("yellow", "Storing reference to " + this.mTrackableBehaviour.TrackableName + ": " + this.mTrackableBehaviour.CurrentStatus + " -- " + this.mTrackableBehaviour.CurrentStatusInfo); ModelTargetBehaviour mtb = this.mTrackableBehaviour as ModelTargetBehaviour; if (mtb != null && this.modelTargetsManager) { this.modelTargetsManager.AddAdvancedModelTargetBehaviour(mtb); this.isModelTargetReferenceStored = true; } } }
} //END Awake //-------------------------------// private void CheckIfModelTargetBehaviourExists() //-------------------------------// { #if VUFORIA //If the ModelTargetBehaviour doesn't exist, create it and link to it if( GetComponent<ModelTargetBehaviour>() == null ) { modelTargetBehaviour = gameObject.AddComponent<ModelTargetBehaviour>(); } //Otherwise if the script exists, link to it if( modelTargetBehaviour == null && GetComponent<ModelTargetBehaviour>() != null ) { modelTargetBehaviour = GetComponent<ModelTargetBehaviour>(); } #endif } //END CheckIfModelTargetBehaviourExists
/// <summary> /// Handles new search results. /// </summary> /// <param name="searchResult"></param> public virtual void OnNewSearchResult(TargetFinder.TargetSearchResult searchResult) { Debug.Log("<color=cyan>OnNewSearchResult() called: </color>" + searchResult.TargetName); // Find or create the referenced model target GameObject modelTargetGameObj = null; var existingModelTarget = FindExistingModelTarget(searchResult); if (existingModelTarget) { modelTargetGameObj = existingModelTarget.gameObject; } if (!modelTargetGameObj) { modelTargetGameObj = new GameObject("ModelTarget_" + searchResult.TargetName); } if (!modelTargetGameObj) { Debug.LogError("Could not create a Model Target."); return; } // Enable the new search result as a Model Target ModelTargetBehaviour mtb = targetFinder.EnableTracking(searchResult, modelTargetGameObj) as ModelTargetBehaviour; if (mtb) { this.lastRecoModelTarget = mtb; if (this.StopSearchWhenModelFound) { // Stop the target finder this.modelRecoBehaviour.ModelRecoEnabled = false; } } }
public static Bounds GetModelTargetWorldBounds(ModelTargetBehaviour mtb) { var bbox = mtb.ModelTarget.GetBoundingBox(); var localCenter = bbox.Center; var localExtents = bbox.HalfExtents; // transform local center to World space var worldCenter = mtb.transform.TransformPoint(localCenter); // transform the local extents to World space var axisX = mtb.transform.TransformVector(localExtents.x, 0, 0); var axisY = mtb.transform.TransformVector(0, localExtents.y, 0); var axisZ = mtb.transform.TransformVector(0, 0, localExtents.z); Vector3 worldExtents = Vector3.zero; worldExtents.x = Mathf.Abs(axisX.x) + Mathf.Abs(axisY.x) + Mathf.Abs(axisZ.x); worldExtents.y = Mathf.Abs(axisX.y) + Mathf.Abs(axisY.y) + Mathf.Abs(axisZ.y); worldExtents.z = Mathf.Abs(axisX.z) + Mathf.Abs(axisY.z) + Mathf.Abs(axisZ.z); return(new Bounds { center = worldCenter, extents = worldExtents }); }
void IDefaultBehaviourAttacher.AddDefaultModelRecoEventHandler(GameObject go, ModelTargetBehaviour modelTargetTemplate) { throw new System.NotImplementedException(); }