Exemplo n.º 1
0
        public void AddDefaultModelRecoEventHandler(GameObject modelReco, ModelTargetBehaviour modelTargetTemplate)
        {
            var mreh = modelReco.AddComponent <DefaultModelRecoEventHandler>();

            mreh.ShowBoundingBox     = true;
            mreh.ModelTargetTemplate = modelTargetTemplate;
        }
Exemplo n.º 2
0
    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));
    }
Exemplo n.º 3
0
    /// <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;
            }
        }
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 6
0
    protected virtual void Start()
    {
        this.savedMaterials = new Dictionary <MeshRenderer, Material>();

        ModelTargetBehaviour modelTargetBehaviour = GetComponent <ModelTargetBehaviour>();

        if (modelTargetBehaviour)
        {
            modelTargetBehaviour.RegisterOnTrackableStatusChanged(OnTrackableStatusChanged);
        }
    }
Exemplo n.º 7
0
    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);
    }
Exemplo n.º 10
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;
            }
        }
    }
Exemplo n.º 12
0
    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;
            }
        }
    }
Exemplo n.º 14
0
        } //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;
            }
        }
    }
Exemplo n.º 16
0
    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
        });
    }
Exemplo n.º 17
0
 void IDefaultBehaviourAttacher.AddDefaultModelRecoEventHandler(GameObject go, ModelTargetBehaviour modelTargetTemplate)
 {
     throw new System.NotImplementedException();
 }