コード例 #1
0
        /// <summary>
        /// Implementation of the ITrackableEventHandler function called when the
        /// tracking state changes.
        /// </summary>
        public void OnTrackableStateChanged(
                                        TrackableBehaviour.Status previousStatus,
                                        TrackableBehaviour.Status newStatus)
        {
            if (newStatus == TrackableBehaviour.Status.DETECTED ||
                newStatus == TrackableBehaviour.Status.TRACKED ||
                newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            {
                OnTrackingFound();
            }
            else
            {
                OnTrackingLost();
            }

            this.currentStatus = newStatus;
        }
コード例 #2
0
    void OnDevicePoseStatusChanged(TrackableBehaviour.Status status, TrackableBehaviour.StatusInfo statusInfo)
    {
        Debug.Log("GroundPlaneUI.OnDevicePoseStatusChanged(" + status + ", " + statusInfo + ")");

        string statusMessage = "";

        switch (statusInfo)
        {
        case TrackableBehaviour.StatusInfo.NORMAL:
            statusMessage = "";
            break;

        case TrackableBehaviour.StatusInfo.UNKNOWN:
            statusMessage = "Limited Status";
            break;

        case TrackableBehaviour.StatusInfo.INITIALIZING:
            statusMessage = "Point your device to the floor and move to scan";
            break;

        case TrackableBehaviour.StatusInfo.EXCESSIVE_MOTION:
            statusMessage = "Move slower";
            break;

        case TrackableBehaviour.StatusInfo.INSUFFICIENT_FEATURES:
            statusMessage = "Not enough visual features in the scene";
            break;

        case TrackableBehaviour.StatusInfo.INSUFFICIENT_LIGHT:
            statusMessage = "Not enough light in the scene";
            break;

        case TrackableBehaviour.StatusInfo.RELOCALIZING:
            // Display a relocalization message in the UI if:
            // * No AnchorBehaviours are being tracked
            // * None of the active/tracked AnchorBehaviours are in TRACKED status

            // Set the status message now and clear it none of conditions are met.
            statusMessage = "Point back to previously seen area and rescan to relocalize.";

            StateManager stateManager = TrackerManager.Instance.GetStateManager();
            if (stateManager != null)
            {
                // Cycle through all of the active AnchorBehaviours first.
                foreach (TrackableBehaviour behaviour in stateManager.GetActiveTrackableBehaviours())
                {
                    if (behaviour is AnchorBehaviour)
                    {
                        if (behaviour.CurrentStatus == TrackableBehaviour.Status.TRACKED)
                        {
                            // If at least one of the AnchorBehaviours has Tracked status,
                            // then don't display the relocalization message.
                            statusMessage = "";
                        }
                    }
                }
            }
            break;

        default:
            statusMessage = "";
            break;
        }

        StatusMessage.Instance.Display(statusMessage);
        // Uncomment the following line to show Status and StatusInfo values
        //StatusMessage.Instance.Display(status.ToString() + " -- " + statusInfo.ToString());
    }
コード例 #3
0
 public void OnTrackableStateChanged(GameObject gameObject, TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     //if (gameObject.name == player1.name)
 }
コード例 #4
0
    /// <summary>
    /// Erfassen und Verfolgen der Marker, sowie anpassen der Position und Rotation der 3D-Modelle
    /// </summary>
    void LateUpdate()
    {
        // resetten der Tracking Qualität
        float trackingQuality = 0f;

        // resetten der derzeit erfassten Marker und ihrer Tracking-Stati
        List <ImageTargetBehaviour>      trackedObjects = new List <ImageTargetBehaviour>();
        List <TrackableBehaviour.Status> statList       = new List <TrackableBehaviour.Status>();


        // Liste der erfassten Marker durchgehen
        for (int i = 0; i < targets.Count; i++)
        {
            // Falls die Referenz verloren geht, soll diese übersprungen werden
            if (targets[i] == null)
            {
                continue;
            }
            // Setzen des Marker Status
            TrackableBehaviour.Status targetStatus = targets[i].CurrentStatus;

            // Falls der Marker erfasst oder extrapoliert wird ...
            if (targetStatus == TrackableBehaviour.Status.TRACKED || targetStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            {
                // Marker wird der derzeitigen Liste erfasster Marker hinzugefügt und auch deren Status gespeichert
                trackedObjects.Add(targets[i]);
                statList.Add(targetStatus);

                // Wenn die Position des Markers erfasst (und nicht extrapoliert) wurde, wird die Qualitäts-Counter hochgesetzt
                if (targetStatus == TrackableBehaviour.Status.TRACKED)
                {
                    trackingQuality += 0.2f;

                    // Sonderregel für die Erfassung der vollen Fassade, da diese als besonders guter Marker gewertet wird
                    if (targets[i].gameObject.name.Contains("full"))
                    {
                        trackingQuality += 0.2f;
                    }
                }
                // bei der Extrapolation wird die Qualität heruntergestuft
                else
                {
                    trackingQuality -= 0.1f;
                }
            }
        }

        // Setzen des UI Symbols für die Tracking-Qualität
        FindObjectOfType <UIHandler>().SetTrackingQualityIcon(trackingQuality);

        // Flag ob mindestens ein Objekt erfasst wurde, oder ob nur extrapoliert wird
        bool isTracking = statList.Contains(TrackableBehaviour.Status.TRACKED);


        if (trackedObjects.Count == 0 && !trackerDevice.IsActive)
        {
            trackerDevice.Start();
            timeTillLastTrack += Time.deltaTime;
            building.gameObject.SetActive(false);
            return;
        }
        // Falls kein Objekt getrackt wird, werden die 3D-Modelle deaktiviert, der Zeitcounter hochgesetzt und die Methode verlassen
        else if (trackedObjects.Count == 0)
        {
            timeTillLastTrack += Time.deltaTime;
            building.gameObject.SetActive(false);
            return;
        }
        // Falls nur extrapoliert wird, wird der Zeitcounter hochgesetzt und nach einem "maximumDelay" die Trackerinstanz resettet
        else if (!isTracking)
        {
            timeTillLastTrack += Time.deltaTime;
            if (timeTillLastTrack >= maximumDelay)
            {
                trackerDevice.Stop();
                building.gameObject.SetActive(false);
                return;
            }
        }
        // Wenn etwas gefunden wurde, soll das UI kurz aufleuchten (highlighting) und das 3D Modell aktiviert werden
        else
        {
            if (timeTillLastTrack > 0f)
            {
                FindObjectOfType <UIHandler>().FoundTrackerHighlighting();
            }
            timeTillLastTrack = 0f;
            building.gameObject.SetActive(true);
        }

        // resetten der Referenz der relativen Position und Rotation des 3D-Modells
        Vector3    renderPosition = new Vector3(0f, 0f, 0f);
        Quaternion renderRotation = Quaternion.identity;

        // Gewichtung der einzelnen Marker zur Bestimmung der Position und Rotation
        float weight = 1f / (float)trackedObjects.Count;

        // Positions- und Rotationsreferenz anhand der gewichteten relativen Werte anpassen (Aufsummieren)
        for (int i = 0; i < trackedObjects.Count; i++)
        {
            Vector3 pos = savedBuildings.GetRelativePosition(trackedObjects[i]);
            Vector3 rot = savedBuildings.GetRelativeRotation(trackedObjects[i]);

            renderPosition += (trackedObjects[i].transform.position + ((trackedObjects[i].transform.rotation * pos)));
            renderRotation *= Quaternion.Slerp(Quaternion.identity, (trackedObjects[i].transform.rotation * Quaternion.Euler(rot)), weight);
        }

        // Mitteln der Position des 3D-Modells
        renderPosition = renderPosition / trackedObjects.Count;

        // Um ein Springen des 3D-Modells entgegenzuwirken, wird dessen Position und Rotation zwischen vorheriger und neuer Position interpoliert
        building.transform.position = Vector3.Lerp(building.transform.position, renderPosition, Time.deltaTime * 5f);
        building.transform.rotation = Quaternion.Lerp(building.transform.rotation, renderRotation, Time.deltaTime * 5f);
    }
コード例 #5
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status newStatus)
 {
     OnTrackableStateChanged(default(TrackableBehaviour.Status), newStatus);
 }
コード例 #6
0
 void ITrackableEventHandler.OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     if (newStatus == TrackableBehaviour.Status.DETECTED ||
         newStatus == TrackableBehaviour.Status.TRACKED ||
         newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
     {
         if (SwBool == false)
         {
             OnTrackingFound();
             manMou.ReceiveId(Mobleb);
         }
     }
     else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
              newStatus == TrackableBehaviour.Status.NOT_FOUND)
     {
         OnTrackingLost();
     }
     else
     {
         OnTrackingLost();
     }
 }
コード例 #7
0
ファイル: Pathfinder20.cs プロジェクト: nabakin/NauticalNavAR
 void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     Debug.Log("test");
 }
コード例 #8
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     if (newStatus == TrackableBehaviour.Status.DETECTED ||
         newStatus == TrackableBehaviour.Status.TRACKED ||
         newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
     {
         if (!m_CardInitialize)
         {
             StartCoroutine(AnimateCard());
         }
     }
 }
コード例 #9
0
    public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            PlayerPrefs.SetString(mTrackableBehaviour.TrackableName, "Visited");
            PlayerPrefs.SetString(mTrackableBehaviour.TrackableName + "_Italy", "Visitato");
            PlayerPrefs.SetString(mTrackableBehaviour.TrackableName + "_France", "Visité");



            //PlayerPrefs.SetString(mTrackableBehaviour.TrackableName,"Visited");



            print("Prefs added - " + PlayerPrefs.GetString(mTrackableBehaviour.TrackableName));



            Debug.Log("Setting Panel");
            //Debug.Log("Y is - "+transform.eulerAngles.y);
            panel.SetActive(true);
            ScanPanel.SetActive(false);
            ShareButton.SetActive(true);


            if (PlayerPrefs.GetString("language") == "UnitedKingdom")
            {
                ShowMoreInfo.GetComponentInChildren <Text>().text = "Click here for more information";
            }

            if (PlayerPrefs.GetString("language") == "Italy")
            {
                ShowMoreInfo.GetComponentInChildren <Text>().text = "Clicca qui per più informazioni";
            }

            if (PlayerPrefs.GetString("language") == "France")
            {
                ShowMoreInfo.GetComponentInChildren <Text>().text = "Cliquez ici pour plus d'informations";
            }


            //ShowMoreInfo.GetComponentInChildren<Text>().text = "Click here for more information";

            if (mTrackableBehaviour.TrackableName == "ExhibitA")
            {
                Slider.SetActive(true);
            }

            if (mTrackableBehaviour.TrackableName == "ExhibitG")
            {
                audio = GetComponent <AudioSource>();
                audio.PlayOneShot(cow, 1F);
            }



            LoadVisitedExhibits LVE = GetComponent <LoadVisitedExhibits>();
            LVE.loadVisited(mTrackableBehaviour.TrackableName);

            if (Application.platform == RuntimePlatform.Android)
            {
                DBAndroid();
            }


            if (Application.platform == RuntimePlatform.WindowsEditor)
            {
                DBWindows();
            }
        }
        else
        {
            stopReading();
            ExhibitID.text   = null;
            ExhibitData.text = null;
            panel.SetActive(false);
            ScanPanel.SetActive(true);
            Slider.SetActive(false);
            ShareButton.SetActive(false);
            artist           = null;
            year             = null;
            name             = null;
            description      = null;
            url              = null;
            similarItemsID   = null;
            similarItemsName = null;
            ShowMoreInfo.GetComponentInChildren <Text>().text = "";
        }
    }
コード例 #10
0
    /// <summary>
    ///     Implementation of the ITrackableEventHandler function called when the
    ///     tracking state changes.
    /// </summary>
    public void OnTrackableStateChanged(
        TrackableBehaviour.Status previousStatus,
        TrackableBehaviour.Status newStatus)
    {
        m_PreviousStatus = previousStatus;
        m_NewStatus      = newStatus;

        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
            OnTrackingFound();

            if (mTrackableBehaviour.TrackableName == "elephant")
            {
                if (ConnectWS.opcion_mia_de_mi != 6)
                {
                    ConnectWS.opcion_mia_de_mi = 6;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.elefanteseleccionado = true;
                Debug.Log("elephant");
            }
            if (mTrackableBehaviour.TrackableName == "Jobcard")//11
            {
                if (ConnectWS.opcion_mia_de_mi != 11)
                {
                    ConnectWS.opcion_mia_de_mi = 11;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.humanseleccionado = true;
                Debug.Log("humano");
            }
            if (mTrackableBehaviour.TrackableName == "rhino")//7
            {
                if (ConnectWS.opcion_mia_de_mi != 5)
                {
                    ConnectWS.opcion_mia_de_mi = 5;
                    ConnectWS.cambio           = true;
                }
                Debug.Log("rhino");
            }
            if (mTrackableBehaviour.TrackableName == "whale")
            {
                if (ConnectWS.opcion_mia_de_mi != 5)
                {
                    ConnectWS.opcion_mia_de_mi = 5;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.whaleseleccionado = true;
                Debug.Log("whale");
            }
            if (mTrackableBehaviour.TrackableName == "tiger")
            {
                if (ConnectWS.opcion_mia_de_mi != 1)
                {
                    ConnectWS.opcion_mia_de_mi = 1;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.tigreseleccionado = true;
                Debug.Log("tigre");
            }
            if (mTrackableBehaviour.TrackableName == "gorilla")//8
            {
                if (ConnectWS.opcion_mia_de_mi != 8)
                {
                    ConnectWS.opcion_mia_de_mi = 8;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.gorilaseleccionado = true;
                Debug.Log("gorila");
            }
            if (mTrackableBehaviour.TrackableName == "deer")
            {
                if (ConnectWS.opcion_mia_de_mi != 3)
                {
                    ConnectWS.opcion_mia_de_mi = 3;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.deerseleccionado = true;
                Debug.Log("deer");
            }
            if (mTrackableBehaviour.TrackableName == "bear")
            {
                if (ConnectWS.opcion_mia_de_mi != 2)
                {
                    ConnectWS.opcion_mia_de_mi = 2;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.ososeleccionado = true;
                Debug.Log("oso");
            }
            if (mTrackableBehaviour.TrackableName == "shark")//9
            {
                if (ConnectWS.opcion_mia_de_mi != 9)
                {
                    ConnectWS.opcion_mia_de_mi = 9;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.sharkseleccionado = true;
                Debug.Log("shark");
            }
            if (mTrackableBehaviour.TrackableName == "octopus")
            {
                if (ConnectWS.opcion_mia_de_mi != 4)
                {
                    ConnectWS.opcion_mia_de_mi = 4;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.pulposeleccionado = true;
                Debug.Log("pulpo");
            }
            if (mTrackableBehaviour.TrackableName == "owl")//10
            {
                if (ConnectWS.opcion_mia_de_mi != 10)
                {
                    ConnectWS.opcion_mia_de_mi = 10;
                    ConnectWS.cambio           = true;
                }
                Animalseleccionado.owlseleccionado = true;
                Debug.Log("owl");
            }
        }
        else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
                 newStatus == TrackableBehaviour.Status.NO_POSE)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
            OnTrackingLost();
            if (mTrackableBehaviour.TrackableName == "elephant")
            {
                Animalseleccionado.elefanteseleccionado = false;
                Debug.Log("elephant");
            }
            if (mTrackableBehaviour.TrackableName == "Jobcard")
            {
                Animalseleccionado.humanseleccionado = false;
                Debug.Log("humano");
            }
            if (mTrackableBehaviour.TrackableName == "rhino")
            {
                Animalseleccionado.rhinoseleccionado = false;
                Debug.Log("rhino");
            }
            if (mTrackableBehaviour.TrackableName == "whale")
            {
                Animalseleccionado.whaleseleccionado = false;
                Debug.Log("whale");
            }
            if (mTrackableBehaviour.TrackableName == "tiger")
            {
                Animalseleccionado.tigreseleccionado = false;
                Debug.Log("tigre");
            }
            if (mTrackableBehaviour.TrackableName == "gorilla")
            {
                Animalseleccionado.gorilaseleccionado = false;
                Debug.Log("gorila");
            }
            if (mTrackableBehaviour.TrackableName == "deer")
            {
                Animalseleccionado.deerseleccionado = false;
                Debug.Log("deer");
            }
            if (mTrackableBehaviour.TrackableName == "bear")
            {
                Animalseleccionado.ososeleccionado = false;
                Debug.Log("oso");
            }
            if (mTrackableBehaviour.TrackableName == "shark")
            {
                Animalseleccionado.sharkseleccionado = false;
                Debug.Log("shark");
            }
            if (mTrackableBehaviour.TrackableName == "octopus")
            {
                Animalseleccionado.pulposeleccionado = false;
                Debug.Log("pulpo");
            }
            if (mTrackableBehaviour.TrackableName == "owl")
            {
                Animalseleccionado.owlseleccionado = false;
                Debug.Log("owl");
            }
        }
        else
        {
            // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
            // Vuforia is starting, but tracking has not been lost or found yet
            // Call OnTrackingLost() to hide the augmentations
            OnTrackingLost();
        }
    }
コード例 #11
0
ファイル: TrackManager.cs プロジェクト: SunnyDecember/ARDemo
    /// <summary>
    /// 每次高通识别,都把状态记录起来。以便按钮按下可以进行恢复状态。
    /// </summary>
    /// <param name="imageTarget">为ImageTarget</param>
    /// <param name="previousStatus"></param>
    /// <param name="status"></param>
    public void SetTrackStatus(GameObject imageTarget, TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status status)
    {
        DeleteNullObject();

        //判断是否识别到。
        bool isFound = false;

        if (status == TrackableBehaviour.Status.DETECTED ||
            status == TrackableBehaviour.Status.TRACKED ||
            status == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            isFound = true;
            EventCenter.Instance.PostEvent(EventName.ModelFound);
        }
        else
        {
            isFound = false;
            EventCenter.Instance.PostEvent(EventName.ModelLost);
        }

        //把当前ImageTarget状态记录起来。
        StatusData data = new StatusData();

        data.previousStatus = previousStatus;
        data.newStatus      = status;
        data.isFound        = isFound;

        //添加到字典中。
        if (_trackStatusDictionary.ContainsKey(imageTarget))
        {
            _trackStatusDictionary[imageTarget] = data;
        }
        else
        {
            _trackStatusDictionary.Add(imageTarget, data);
        }

        //把模型添加到ModelManager中管理。
        Model[] modelArray = imageTarget.transform.GetComponentsInChildren <Model>(true);
        for (int i = 0; i < modelArray.Length; i++)
        {
            Model model = modelArray[i].gameObject.GetComponent <Model>();
            ModelManager.Instance.AddModel(model);
        }

        if (SceneData.Instance.type == SceneData.Type.SingleCard && isFound)
        {
            foreach (var kv in _trackStatusDictionary)
            {
                if (null != kv.Key && kv.Key != imageTarget)
                {
                    _trackStatusDictionary[kv.Key].isFound = false;
                }
            }
        }

        //如果没有识别到图片,这里就让模型消失吧。
        if (false == isFound)
        {
            SetTrackStatus();
        }
    }
コード例 #12
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     if (newStatus == TrackableBehaviour.Status.DETECTED ||
         newStatus == TrackableBehaviour.Status.TRACKED ||
         newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
     {
         OnMarkerFound(this);
     }
     else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
              newStatus == TrackableBehaviour.Status.NO_POSE)
     {
         OnMarkerLost(this);
     }
     else
     {
         OnMarkerLost(this);
     }
 }
コード例 #13
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     throw new System.NotImplementedException();
 }
コード例 #14
0
 public TrackingChangedEventHandlerArgs(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     PreviousStatus = previousStatus;
     NewStatus      = newStatus;
 }
コード例 #15
0
        public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
        {
            this.mPreviousStatus = previousStatus;
            this.mStatus = newStatus;

            if (HasTrackable)
            {
                this.mID = Trackable.ID;
                this.mName = Trackable.Name;
            }


            if (onTrackableStateChange != null)
                onTrackableStateChange(this);
        }
コード例 #16
0
ファイル: tracking.cs プロジェクト: Korn20000/Portfolio
 void ITrackableEventHandler.OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     throw new System.NotImplementedException();
 }
コード例 #17
0
        public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
        {
            if (m_TrackableBehaviour == null)
            {
                return;
            }

            if (newStatus == TrackableBehaviour.Status.DETECTED ||
                newStatus == TrackableBehaviour.Status.TRACKED ||
                newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            {
                AppController.Instance.OnMarkerFound(m_TrackableBehaviour.TrackableName, m_ID);
            }
            else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
                     newStatus == TrackableBehaviour.Status.NO_POSE)
            {
                AppController.Instance.OnMarkerLost(m_TrackableBehaviour.TrackableName, m_ID);
            }
            else
            {
                AppController.Instance.OnMarkerLost(m_TrackableBehaviour.TrackableName, m_ID);
            }
        }
コード例 #18
0
    void OnDevicePoseStatusChanged(TrackableBehaviour.Status status, TrackableBehaviour.StatusInfo statusInfo)
    {
        string statusMessage = "";

        m_currStatusInfo = statusInfo;

        SetActiveMessagePutObject(true);

        switch (statusInfo)
        {
        case TrackableBehaviour.StatusInfo.NORMAL:
        {
            statusMessage = "";
            HideSnackBar();
            if (imageVideo.IsPlaying)
            {
                imageVideo.StopVideo();
            }
            break;
        }

        case TrackableBehaviour.StatusInfo.UNKNOWN:
            statusMessage = "No hay suficientes características visuales (<b>ver en botón información</b>)";
            break;

        case TrackableBehaviour.StatusInfo.INITIALIZING:
            statusMessage = "<b>Apunta</b> con tu dispositivo al suelo y <b>mueve</b> para escanear";
            break;

        case TrackableBehaviour.StatusInfo.EXCESSIVE_MOTION:
            statusMessage = "Mueve tu dispositivo mas <b>lento</b>";
            break;

        case TrackableBehaviour.StatusInfo.INSUFFICIENT_FEATURES:
            statusMessage = "No hay suficientes características visuales (<b>ver en botón información</b>)";
            break;

        case TrackableBehaviour.StatusInfo.INSUFFICIENT_LIGHT:
            statusMessage = "No hay suficiente <b>luz</b>";
            break;

        case TrackableBehaviour.StatusInfo.RELOCALIZING:
            // Display a relocalization message in the UI if:
            // * No AnchorBehaviours are being tracked
            // * None of the active/tracked AnchorBehaviours are in TRACKED status

            // Set the status message now and clear it none of conditions are met.
            statusMessage = "<b>Mueve</b> la cámara al punto anterior para restaurar la detección";

            StateManager stateManager = TrackerManager.Instance.GetStateManager();
            if (stateManager != null)
            {
                // Cycle through all of the active AnchorBehaviours first.
                foreach (TrackableBehaviour behaviour in stateManager.GetActiveTrackableBehaviours())
                {
                    if (behaviour is AnchorBehaviour)
                    {
                        if (behaviour.CurrentStatus == TrackableBehaviour.Status.TRACKED)
                        {
                            // If at least one of the AnchorBehaviours has Tracked status,
                            // then don't display the relocalization message.
                            statusMessage = "";
                        }
                    }
                }
            }
            break;

        default:
            statusMessage = "";
            break;
        }

        if (statusInfo != TrackableBehaviour.StatusInfo.NORMAL)
        {
            HideMenu();

            ShowSnackBar(statusMessage);
            if (!imageVideo.IsPlaying)
            {
                imageVideo.PlayVideo();
            }
        }
        else
        {
            if (!m_IsGroundDetected)
            {
                statusMessage = "<b>Apunta</b> con tu dispositivo al suelo y <b>mueve</b> para escanear";
                ShowSnackBar(statusMessage);
                if (!imageVideo.IsPlaying)
                {
                    imageVideo.PlayVideo();
                }
            }
            else
            {
                ShowMenu();
            }
        }
    }
コード例 #19
0
        /// <summary>
        /// Implementation of the ITrackableEventHandler function called when the
        /// tracking state changes.
        /// </summary>
        public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
        {
            Debug.Log(previousStatus.ToString() + " -- " + newStatus.ToString());

            if (newStatus == TrackableBehaviour.Status.DETECTED ||
                newStatus == TrackableBehaviour.Status.TRACKED ||
                newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
            {
                OnTrackingFound();
            }
            else
            {
                OnTrackingLost();
            }
        }
コード例 #20
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     if (newStatus == TrackableBehaviour.Status.DETECTED ||
         newStatus == TrackableBehaviour.Status.TRACKED ||
         newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
     {
         OnTrackingFound();
     }
     else
     {
         OnTrackingLost();
     }
 }
コード例 #21
0
ファイル: Pathfinder20.cs プロジェクト: nabakin/NauticalNavAR
    void ITrackableEventHandler.OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
    {
        int oo = 1000;

        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            Debug.Log("Found");

            int NO_PARENT = -1;
            double[,] adjacencyMatrix = { {  0, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo,  0, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo,  0, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo,  0, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo,    0, 9.59, oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, 9.59,    0, oo, oo, oo,     oo,       6.67, oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,    0, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo,  0, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo,      0, oo,     oo,     oo,    oo,    oo,     oo,     12.853, oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,          0, oo,     oo,    oo,    oo,     11.403, oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,          0, 6.525,  6.38, 13.398, oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,      6.525,     0, 2.358, oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,       6.38, 2.358,     0, oo,     oo,     oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     13.398, oo,    oo,         0,   6.65, oo,     oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     11.403, oo,     oo,    oo,      6.65,      0,   6.67, oo,   oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, 12.853, oo,     oo,     oo,    oo,    oo,       6.67,      0, 4.06, oo,    oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,       4.06,    0,  4.93, oo,    oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     4.93,     0, 5.336, oo, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   5.336,     0, 20, 20 },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,       20,  0, oo },
                                          { oo, oo, oo, oo, oo,   oo,   oo, oo, oo,     oo,     oo,     oo,    oo,    oo,     oo,     oo,     oo,   oo,       20, oo,  0 } };

            int   thisNode        = 20;
            int[] theseEdgeNodes  = { 20, 19 };
            int[] theseEdgeAngles = { 0, 180 };
            int[,] finalPaths = dijkstra(adjacencyMatrix, thisNode - 1);

            int destination = -1;
            if (PopulateDropDown.destination == 0)
            {
                destination = 12;
            }
            else if (PopulateDropDown.destination == 1)
            {
                destination = 13;
            }
            else if (PopulateDropDown.destination == 2)
            {
                destination = 20;
            }
            else if (PopulateDropDown.destination == 3)
            {
                destination = 21;
            }
            else if (PopulateDropDown.destination == 4)
            {
                destination = 17;
            }
            else if (PopulateDropDown.destination == 5)
            {
                destination = 6;
            }

            int[] finalPath = new int[finalPaths.GetLength(0)];
            for (int i = 0; i < finalPaths.GetLength(0); i++)
            {
                finalPath[i] = finalPaths[destination - 1, i];
            }

            int nextNode = -1;

            if (thisNode != finalPath[0])
            {
                for (int i = 0; i < finalPath.Length; i++)
                {
                    if (finalPath[i] == 0)
                    {
                        nextNode = finalPath[i - 2];
                        break;
                    }
                }

                int angle = -1;
                for (int i = 0; i < theseEdgeNodes.Length; i++)
                {
                    if (theseEdgeNodes[i] == nextNode)
                    {
                        angle = theseEdgeAngles[i];
                    }
                }

                arrow.transform.localRotation = Quaternion.Euler(0, angle, 0);
            }
        }
        else
        {
            Debug.Log("Not Found");
        }
    }
コード例 #22
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     if (newStatus == TrackableBehaviour.Status.DETECTED ||
         newStatus == TrackableBehaviour.Status.TRACKED ||
         newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
     {
         foreach (GameObject sound in sounds)
         {
             sound.SetActive(true);
         }
         //            sound.SetActive(true);
     }
     else
     {
         foreach (GameObject sound in sounds)
         {
             sound.SetActive(false);
         }
         //            sound.SetActive(false);
     }
 }
コード例 #23
0
ファイル: PlaneManagerRes.cs プロジェクト: mariamonti96/ARApp
 void OnDevicePoseStatusChanged(TrackableBehaviour.Status status, TrackableBehaviour.StatusInfo statusInfo)
 {
     Debug.Log("OnDevicePoseStatusChanged(" + status + ", " + statusInfo + ")");
 }
コード例 #24
0
ファイル: Imagetargettracker.cs プロジェクト: weacw/skbrowser
        public void OnTrackableStateChanged(TrackableBehaviour.Status _previousstatus, TrackableBehaviour.Status _newstatus)
        {
            switch (_newstatus)
            {
            case TrackableBehaviour.Status.NOT_FOUND:
            case TrackableBehaviour.Status.UNKNOWN:
            case TrackableBehaviour.Status.UNDEFINED:
                Scannermanager.Getinstance().Ontrackerloseevent(this, this.gameObject);
                Debug.Log("Lose " + trackablebehaviour.TrackableName);
                break;

            case TrackableBehaviour.Status.DETECTED:
            case TrackableBehaviour.Status.TRACKED:
            case TrackableBehaviour.Status.EXTENDED_TRACKED:
                Scannermanager.Getinstance().Ontrackerfoundevent(this, this.gameObject);
                Debug.Log("Found " + trackablebehaviour.TrackableName);
                break;
            }
        }
コード例 #25
0
        public override void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
        {
            if (m_trackableBehaviour.VuMarkTarget != null)
            {
                Debug.Log(">>>> tracking " + m_trackableBehaviour.VuMarkTarget.InstanceId.StringValue);
            }

            base.OnTrackableStateChanged(previousStatus, newStatus);
        }
コード例 #26
0
        public void ApplyTrackingState(TrackableBehaviour trackableBehaviour, TrackableBehaviour.Status vuforiaStatus, Transform cameraTransform)
        {
            ExtendedTrackable extendedTrackable = trackableBehaviour.Trackable as ExtendedTrackable;

            if (extendedTrackable == null)
            {
                return;
            }
            float expr_16               = extendedTrackable.GetLargestSizeComponent();
            float maxPoseDistance       = expr_16 * this.mMaxPoseRelDistance;
            float minPoseUpdateDistance = expr_16 * this.mMinPoseUpdateRelDistance;
            int   iD = trackableBehaviour.Trackable.ID;

            VuforiaManager.TrackableIdPair trackableIdPair;
            if (trackableBehaviour is VuMarkAbstractBehaviour)
            {
                trackableIdPair = VuforiaManager.TrackableIdPair.FromTrackableAndResultId(iD, ((VuMarkAbstractBehaviour)trackableBehaviour).VuMarkResultId);
            }
            else
            {
                trackableIdPair = VuforiaManager.TrackableIdPair.FromTrackableId(iD);
            }
            if (vuforiaStatus == TrackableBehaviour.Status.TRACKED && this.mTrackablesExtendedTrackingEnabled.Contains(iD))
            {
                bool flag = true;
                if (this.mTrackingList.ContainsKey(trackableIdPair))
                {
                    HoloLensExtendedTrackingManager.PoseAgeEntry poseAgeEntry = this.mTrackingList[trackableIdPair];
                    float arg_D3_0 = (poseAgeEntry.CameraPose.Position - cameraTransform.position).magnitude;
                    float num      = Quaternion.Angle(poseAgeEntry.CameraPose.Rotation, cameraTransform.rotation);
                    if (arg_D3_0 <= this.mMaxCamPoseAbsDistance && num <= this.mMaxCamPoseAngleDiff)
                    {
                        if (!this.mTrackablesCurrentlyExtendedTracked.ContainsKey(trackableIdPair))
                        {
                            this.CheckHandoverToHoloLens(poseAgeEntry, trackableBehaviour, trackableIdPair, maxPoseDistance, false, out flag);
                        }
                        else
                        {
                            this.CheckForHoloLensPoseUpdates(poseAgeEntry, trackableBehaviour, trackableIdPair, iD, minPoseUpdateDistance, maxPoseDistance, cameraTransform, out flag);
                        }
                    }
                }
                if (flag)
                {
                    this.mTrackingList[trackableIdPair] = new HoloLensExtendedTrackingManager.PoseAgeEntry
                    {
                        Pose = new HoloLensExtendedTrackingManager.PoseInfo
                        {
                            Position = trackableBehaviour.transform.position,
                            Rotation = trackableBehaviour.transform.rotation
                        },
                        CameraPose = new HoloLensExtendedTrackingManager.PoseInfo
                        {
                            Position = cameraTransform.position,
                            Rotation = cameraTransform.rotation
                        },
                        Age = 1
                    };
                }
            }
            if (this.mTrackablesCurrentlyExtendedTracked.ContainsKey(trackableIdPair))
            {
                if (!this.mSetWorldAnchors || VuforiaRuntimeUtilities.IsPlayMode())
                {
                    HoloLensExtendedTrackingManager.PoseInfo poseInfo = this.mTrackablesCurrentlyExtendedTracked[trackableIdPair];
                    trackableBehaviour.transform.position = poseInfo.Position;
                    trackableBehaviour.transform.rotation = poseInfo.Rotation;
                }
                vuforiaStatus = this.mExtendedTrackablesState[trackableIdPair];
            }
            trackableBehaviour.OnTrackerUpdate(vuforiaStatus);
        }
コード例 #27
0
    void ITrackableEventHandler.OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
    {
        this.previousStatus = previousStatus;
        this.status         = newStatus;

        if (trackActiveGO)
        {
            trackActiveGO.SetActive(this.status == TrackableBehaviour.Status.TRACKED);
        }

        if (signalTrack)
        {
            signalTrack.Invoke(this);
        }
    }
コード例 #28
0
 private bool IsStatusApproxTracking(TrackableBehaviour.Status status)
 {
     return(status == TrackableBehaviour.Status.DETECTED ||
            status == TrackableBehaviour.Status.TRACKED ||
            status == TrackableBehaviour.Status.EXTENDED_TRACKED);
 }
コード例 #29
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     boatObj.SetActive(false);
 }
コード例 #30
0
    public void OnTrackableStateChanged(
        TrackableBehaviour.Status previousStatus,
        TrackableBehaviour.Status newStatus)
    {
        IEnumerable <TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetActiveTrackableBehaviours();

        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            if (mTrackableBehaviour.TrackableName == "10")
            {
                if (fObjects[0] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(0);
                    fText.PopUpText();
                }

                fObjects[0] = true;
            }

            if (mTrackableBehaviour.TrackableName == "8")
            {
                if (fObjects[1] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(1);

                    fText.PopUpText();
                }

                fObjects[1] = true;
            }

            if (mTrackableBehaviour.TrackableName == "9")
            {
                if (fObjects[2] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(2);

                    fText.PopUpText();
                }

                fObjects[2] = true;
            }

            if (mTrackableBehaviour.TrackableName == "5")
            {
                if (fObjects[3] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(3);

                    fText.PopUpText();
                }

                fObjects[3] = true;
            }

            if (mTrackableBehaviour.TrackableName == "6")
            {
                if (fObjects[4] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(4);

                    fText.PopUpText();
                }

                fObjects[4] = true;
            }

            if (mTrackableBehaviour.TrackableName == "4")
            {
                if (fObjects[5] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(5);

                    fText.PopUpText();
                }

                fObjects[5] = true;
            }

            if (mTrackableBehaviour.TrackableName == "1")
            {
                if (fObjects[6] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(6);

                    fText.PopUpText();
                }

                fObjects[6] = true;
            }

            if (mTrackableBehaviour.TrackableName == "2")
            {
                if (fObjects[7] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(7);

                    fText.PopUpText();
                }

                fObjects[7] = true;
            }

            if (mTrackableBehaviour.TrackableName == "7")
            {
                if (fObjects[8] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(8);

                    fText.PopUpText();
                }

                fObjects[8] = true;
            }

            if (mTrackableBehaviour.TrackableName == "3")
            {
                if (fObjects[9] == false)
                {
                    contPages.GetComponent <ContPages>().addObj(9);

                    fText.PopUpText();
                }

                fObjects[9] = true;
            }
        }
    }
コード例 #31
0
    void Update()
    {
        if(isAlive) {

            modelTransform.gameObject.GetComponent<HealtBarScript>().hp = currentHealts;

            currentStatus = mTrackableBehaviour.CurrentStatus;

            if( (Input.touchCount > 0) &&
               (currentStatus == TrackableBehaviour.Status.DETECTED ||
             currentStatus == TrackableBehaviour.Status.TRACKED ||
             currentStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)  )
            {
                //we can proceed with calculation

                if(Input.GetTouch(0).phase == TouchPhase.Began) {

                    objectPos = Camera.main.WorldToScreenPoint(modelTransform.position);
                    touchPos = Input.GetTouch(0).position;
                }
                else if(Input.GetTouch(0).phase == TouchPhase.Moved)
                {
                    if(objectPos.x > (ScreenWidth * 0.5f) && touchPos.x > (ScreenWidth * 0.5f) ||
                       objectPos.x < (ScreenWidth * 0.5f) && touchPos.x < (ScreenWidth * 0.5f) ) {

                        //both finger and object are on the same side

                        currentPos = Input.GetTouch(0).position;
                        Vector2 translation = touchPos - currentPos;

                        if( translation.y < 0 )	{

                            TurretUp();
                        }
                        else {

                            TurretDown();
                        }

                    }

                }

            }

            markerDistance = Vector3.Distance( lastPosition, transform.position);
            lastPosition = transform.position;

            if(turretUpFlag) {

                TurretUp();
            }

            if(turretDownFlag) {

                TurretDown();
            }
        }
    }
コード例 #32
0
 void OnDevicePoseStatusChanged(TrackableBehaviour.Status status)
 {
     Debug.Log("OnDevicePoseStatusChanged(" + status.ToString() + ")");
 }
コード例 #33
0
 public void SetStatus(TrackableBehaviour.Status status)
 {
     mStatus = status;
 }
コード例 #34
0
 public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
 {
     //Debug.Log(string.Format("Trackable {0} changed from {1} to {2}", _trackableBehaviour.TrackableName, previousStatus, newStatus));
     if (OnTrackingChanged != null)
     {
         OnTrackingChanged(this, new TrackingChangedEventHandlerArgs(previousStatus, newStatus));
     }
 }