Пример #1
0
        /// <summary>
        ///     認識した写真に応じて、ARObjectを動かす
        ///     高頻度で動かすために、線形補完機能される
        /// </summary>
        /// <param name="aRObjects"></param>
        /// <param name="aRTrackedImage"></param>
        /// <param name="t"></param>
        /// <param name="slearp"></param>
        public void AlignObjectsHighFrequency(GameObject aRObjects, ARTrackedImage aRTrackedImage, float t, bool slearp)
        {
            // 画像名から、対応する子オブジェクトの座標、クォータニオンを取得する
            var(success, childLocalPosition, childLocalRotation) =
                arObjectIdentify.GetLocalPositionByName(aRTrackedImage.referenceImage.name);
            // GetLocalPositionByNameに失敗するとfalseが返ってくるので、その場合は何もしない
            if (!success)
            {
                return;
            }

            // 回転計算
            var aRObjectRotation = aRObjects.transform.rotation;
            var setRotation      =
                calculator.CalculateSpin(aRObjectRotation, aRTrackedImage.transform.rotation, childLocalRotation);

            setRotation = slearp
                ? Quaternion.Slerp(setRotation, aRObjectRotation, t)
                : Quaternion.Lerp(setRotation, aRObjectRotation, t);
            aRObjects.transform.rotation = setRotation;

            // 座標計算
            var movement =
                calculator.CalculateMovement(aRTrackedImage.transform.position, childLocalPosition, setRotation);

            movement = Vector3.Lerp(movement, aRObjects.transform.position, t); // 線形補完
            aRObjects.transform.position = movement;
        }
    private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
    {
        ARTrackedImage trackedImage = null;

        for (int i = 0; i < eventArgs.added.Count; i++)
        {
            trackedImage = eventArgs.added[i];
            string imgName = trackedImage.referenceImage.name;

            if (imgName == "sw-12")
            {
                arContents = Instantiate(arPrefabs, trackedImage.transform);
                cube       = CreateCubeForARFoundationTarget(this.gameObject, trackedImage.size.x, trackedImage.size.y, trackedImage.transform);
            }
        }

        for (int i = 0; i < eventArgs.updated.Count; i++)
        {
            trackedImage = eventArgs.updated[i];

            if (trackedImage.trackingState == TrackingState.Tracking)
            {
                arContents.SetActive(true);
            }
            else
            {
                arContents.SetActive(false);
            }
        }

        for (int i = 0; i < eventArgs.removed.Count; i++)
        {
            arContents.SetActive(false);
        }
    }
    //https://vrgamedevelopment.pro/master-image-tracking-with-arkit-3-part-2/

    // method to update image tracked game object visibility
    void UpdateGameObject(ARTrackedImage trackedImage)
    {
        Debug.Log("Tracking State: " + "Tracking Image");
        //if tracked image tracking state is comparable to tracking
        if (trackedImage.trackingState == TrackingState.Tracking)
        {
            //This Code worked for IOS, but not for Android
            //Debug.Log("Tracking State: Ich will die Canvas AUSSCHALTEN");

            Debug.Log("Tracking State: Bild gefunden: " + trackedImage.referenceImage.name);

            if (trackedImage.referenceImage.name == "caritas")
            {
                trackedImage.gameObject.SetActive(true);

                //Debug.Log("Prefab game Object: " + trackedImage.gameObject.name);

                //trackedImage.gameObject.transform.Find("P7_MotorTarget").gameObject.SetActive(true);
                //trackedImage.gameObject.transform.Find("MotorTarget").gameObject.SetActive(true);
                //trackedImage.gameObject.transform.Find("P5_WaterTarget").gameObject.SetActive(true);
            }
        }
        else if (trackedImage.trackingState == TrackingState.Limited)//if tracked image tracking state is limited or none
        {
            Debug.Log("Tracking State: " + "Limited");


            trackedImage.gameObject.SetActive(false);
        }
        else if (trackedImage.trackingState == TrackingState.None)//if tracked image tracking state is limited or none
        {
            Debug.Log("Tracking State: " + "None");
        }
    }
Пример #4
0
    void UpdateInfo(ARTrackedImage trackedImage)
    {
        if (trackedImage.referenceImage.name == "Rafflesia")
        {
            trackedImage.GetComponent <itp.Tracked>().Choose(0);
        }
        if (trackedImage.referenceImage.name == "Logo")
        {
            trackedImage.GetComponent <itp.Tracked>().Choose(1);
        }
        if (trackedImage.referenceImage.name == "QRCode")
        {
            trackedImage.GetComponent <itp.Tracked>().Choose(2);
        }

        if (trackedImage.trackingState == TrackingState.Tracking)
        {
            trackedImage.transform.localScale = new Vector3(trackedImage.size.x, trackedImage.size.x, trackedImage.size.y);
            //trackedImage.GetComponent<Renderer>().material.mainTexture = (trackedImage.referenceImage.texture == null) ? null : trackedImage.referenceImage.texture;
        }
        else
        {
            trackedImage.GetComponent <itp.Tracked>().Choose(-1);
        }
    }
Пример #5
0
    private void UpdateInfo(ARTrackedImage trackedImage)
    {
        var canvas = trackedImage.GetComponentInChildren <Canvas>();

        canvas.worldCamera = worldSpaceCanvasCamera;

        var text = canvas.GetComponentInChildren <Text>();

        text.text = string.Format
                    (
            "{0}\ntrackingState: {1}\nGUID: {2}\nReference size: {3} cm\nDetected size: {4} cm",
            trackedImage.referenceImage.name,
            trackedImage.trackingState,
            trackedImage.referenceImage.guid,
            trackedImage.referenceImage.size * 100f,
            trackedImage.size * 100f);

        var planeParentGo = trackedImage.transform.GetChild(0).gameObject;
        var planeGo       = planeParentGo.transform.GetChild(0).gameObject;

        if (trackedImage.trackingState != TrackingState.None)
        {
            planeGo.SetActive(true);

            trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);

            var material = planeGo.GetComponentInChildren <MeshRenderer>().material;
            material.mainTexture = trackedImage.referenceImage.texture == null ? defaultTexture : trackedImage.referenceImage.texture;
        }
        else
        {
            planeGo.SetActive(false);
        }
    }
Пример #6
0
    void UpdateInfo(ARTrackedImage trackedImage)
    {
        // Set canvas camera
        var canvas = trackedImage.GetComponentInChildren <Canvas>();

        canvas.worldCamera = canvasCamera;

        // Update information about the tracked image
        var text = canvas.GetComponentInChildren <Text>();

        text.text = string.Format(
            "Nom de l'oeuvre: {0}",
            trackedImage.referenceImage.name);

        var planeParentGo = trackedImage.transform.GetChild(0).gameObject;
        var planeGo       = planeParentGo.transform.GetChild(0).gameObject;

        // Disable the visual plane if it is not being tracked
        if (trackedImage.trackingState != TrackingState.None)
        {
            planeGo.SetActive(true);

            // The image extents is only valid when the image is being tracked
            trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);

            // Set the texture
            var material = planeGo.GetComponentInChildren <MeshRenderer>().material;
            material.mainTexture = (trackedImage.referenceImage.texture == null) ? defaultTexture : trackedImage.referenceImage.texture;
        }
        else
        {
            planeGo.SetActive(false);
        }
    }
Пример #7
0
        private void SetImage(ARTrackedImage trackedImage)
        {
            var newPrefab = AnimalsManager.Instance.GetAnimalByName(trackedImage.referenceImage.name).prefab;

            var placedPrefab = Instantiate(newPrefab, trackedImage.transform.position, trackedImage.transform.rotation, trackedImage.transform);

            placedPrefab.AddComponent <ArKitObject>();

            // Init object manipulator ( Tracked Image )
            trackedImage.GetComponent <ArKitManipulatorsManager>().ArKitObject    = placedPrefab.GetComponent <ArKitObject>();
            trackedImage.GetComponent <ArKitManipulatorsManager>().rayCastManager = rayCastManager;
            trackedImage.GetComponent <ArKitManipulatorsManager>().mainCamera     = mainCamera;

            // Instantiate object selected visual queue ( circle under object )
            var selectionVisualization = Instantiate(selectionPrefab, placedPrefab.transform, true);

            selectionVisualization.transform.localPosition = Vector3.zero;
            selectionVisualization.transform.localScale    = placedPrefab.transform.localScale;
            selectionVisualization.transform.localRotation = Quaternion.Euler(0, 0, 0);

            // Init prefab components
            placedPrefab.GetComponent <ArKitObject>().Init(trackedImage.GetComponent <ArKitManipulatorsManager>(), selectionVisualization, runtimeAnimatorController);

            // Set object selected
            manipulationSystem.Select(placedPrefab.GetComponent <ArKitObject>());

            // Add to list
            placedObjects.Add(trackedImage.gameObject);
        }
Пример #8
0
        private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
        {
            trackingImage = null;

            // // 画像を新規認識時に、位置合わせを行う
            // foreach (var trackedImage in eventArgs.added)
            // {
            //     moveSessionOrigin.move_arObjects_parallel(arObjects, trackedImage);
            // }

            // Tracking数を1に設定すること
            foreach (var trackedImage in eventArgs.updated)
            {
                if (trackedImage.trackingState != TrackingState.Tracking)
                {
                    continue;
                }
                trackingImage = trackedImage;
            }

            if (trackingImage == null)
            {
                return;
            }

            Profiler.BeginSample("位置合わせのコスト");
            objectFitting.AlignObjectsHighFrequency(arObjects, trackingImage, 0.5f, true);
            Profiler.EndSample();
        }
Пример #9
0
    // show game start buttons, stars if not collected or questions if its star hasn't been collected yet
    private void UpdateImage(ARTrackedImage trackedImage)
    {
        Debug.Log("Is star collected: " + IsStarCollected(trackedImage.referenceImage.name));
        if (IsStarCollected(trackedImage.referenceImage.name))
        {
            return;
        }
        string  name     = trackedImage.referenceImage.name;
        Vector3 position = trackedImage.transform.position;

        GameObject prefab = spawnedPrefabs[name];

        prefab.transform.position   = position;
        prefab.transform.rotation   = trackedImage.transform.rotation;
        PositionSaveSystem.position = prefab.transform.position;
        PositionSaveSystem.rotation = prefab.transform.rotation;
        prefab.transform.Rotate(90, 0, 0);
        if (!prefab.name.Contains("star"))
        {
            ShowGameIcon(prefab);
        }

        if (prefab.name.Contains("question"))
        {
            prefab.transform.Rotate(0, -90, 0);
        }

        prefab.SetActive(true);
        Debug.Log(prefab.name + " spotted");
    }
Пример #10
0
    private void UpdateARImage(ARTrackedImage trackedImage)
    {
        //Get the name of the current tracked image
        // set the fixed position to this slightly above and behind this fixed image, this will be used to anchor the object
        //Identify the the items group e.g. Recylable, General or Compost. Update UI accordingly
        // Set the users scan count

        string raw_image_name = trackedImage.referenceImage.name;

        scanImageIcon.enabled = false;
        Vector3 position = trackedImage.transform.position + trackedImage.transform.up * 0.05f + trackedImage.transform.forward * 0.1f;

        fixedPosition = position;


        ReturnItemName(raw_image_name);
        string name = DetectImageGroup(raw_image_name);

        AssignGameObject(name, position);
        scannedCount += 1;
        PlayerPrefs.SetInt("scanned_count", scannedCount);
        PlayerPrefs.SetInt("general_scanned_count", generalItemsScannedCount);
        PlayerPrefs.SetInt("compost_scanned_count", compostItemsScannedCount);
        PlayerPrefs.SetInt("recycle_scanned_count", recycleItemsScannedCount);
        PlayerPrefs.Save();
    }
Пример #11
0
        void UpdateARMarker(ARTrackedImage trackedImage)
        {
            if (trackedImage.trackingState != TrackingState.None)
            {
                trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);
                if (trackedImage.referenceImage.texture != null)
                {
                    var material = trackedImage.gameObject.GetComponentInChildren <MeshRenderer>().material;
                    material.mainTexture = trackedImage.referenceImage.texture;
                }

                string  imageName  = trackedImage.referenceImage.name;
                Vector3 localScale = new Vector3(trackedImage.size.x, trackedImage.size.x, trackedImage.size.x);

                GameObject arObject = null;
                GameObject prefab   = null;
                if (!_ARObjects.TryGetValue(imageName, out arObject))
                {
                    if (_ARObjectPrefabs.TryGetValue(imageName, out prefab))
                    {
                        arObject = GameObject.Instantiate(prefab, Vector3.zero, Quaternion.identity);
                        _ARObjects.Add(imageName, arObject);
                    }
                }
                arObject.transform.localScale = localScale;
                arObject.transform.position   = trackedImage.transform.position;
                arObject.transform.rotation   = trackedImage.transform.rotation;
            }
        }
Пример #12
0
    private void UpdateARImage(ARTrackedImage trackedImage)
    {
        imageTrackedText.text = "Detectado: " + trackedImage.referenceImage.name;

        AssignGameObject(trackedImage.referenceImage.name, trackedImage.transform.position);
        Debug.Log($"ImageRecognition: {trackedImage.referenceImage.name}");
    }
    private void UpdateARImage(ARTrackedImage trackedImage)
    {
        // Assign and Place Game Object
        AssignGameObject(trackedImage.referenceImage.name, trackedImage.transform.position, trackedImage.referenceImage.texture, trackedImage.size);

        //Debug.Log($"trackedImage.referenceImage.name: {trackedImage.referenceImage.name}");
    }
Пример #14
0
    void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
    {
        foreach (var trackedImage in eventArgs.added)
        {
            currentInsruction = trackedImage;

            SetupInstruction(trackedImage);

            UpdateInstruction(trackedImage);

            UpdateModel(trackedImage);

            break;
        }

        foreach (var trackedImage in eventArgs.updated)
        {
            UpdateInstruction(trackedImage);
        }

        foreach (var trackedImage in eventArgs.removed)
        {
            // Does not get invoked when the image goes out of view
        }
    }
    private void FindTrackedImageDistanceMin()
    {
        if (_trackedImageList.Count == 1)
        {
            UpdateTrackedImageDistanceMin(_trackedImageList[0]);
        }
        else
        {
            var            distanceMin = float.MaxValue;
            ARTrackedImage found       = null;

            foreach (var trackedImage in _trackedImageList)
            {
                var distance = Vector3.Distance(_camera.transform.position, trackedImage.transform.position);
                if (distance < distanceMin)
                {
                    distanceMin = distance;
                    found       = trackedImage;
                }
            }
            if (found != _trackedImageDistanceMin)
            {
                UpdateTrackedImageDistanceMin(found);
            }
        }
    }
Пример #16
0
    private void UpdateARImage(ARTrackedImage trackedImage)
    {
        // Display the name of the tracked image in the canvas
        //imageTrackedText.text = trackedImage.referenceImage.name;
        Seeker   = arObjects["Plusieurs"].transform.Find("Seeker").gameObject;
        Target_1 = arObjects["Plusieurs"].transform.Find("Target_1").gameObject;
        Target_2 = arObjects["Plusieurs"].transform.Find("Target_2").gameObject;

        // Assign and Place Game Object
        if (trackedImage.referenceImage.name == "Plusieurs")
        {
            PathRequestManager.RequestPath(Seeker.transform.position, Target_1.transform.position, OnPathFound);
            PathRequestManager.RequestPath(Seeker.transform.position, Target_2.transform.position, OnPathFound);
        }
        else if (trackedImage.referenceImage.name == "Remplie")
        {
            PathRequestManager.RequestPath(Seeker.transform.position, Target_1.transform.position, OnPathFound);
        }
        else
        {
        }


        AssignGameObject("Plusieurs", trackedImage.transform.position);


        Debug.Log($"trackedImage.referenceImage.name: {trackedImage.referenceImage.name}");
    }
Пример #17
0
    private void UpdateImage(ARTrackedImage trackedImage)
    {
        string     name     = trackedImage.referenceImage.name;
        Vector3    position = trackedImage.transform.position;
        Quaternion rotation = trackedImage.transform.rotation;

        GameObject prefab = spawnedPrefabs[name];

        prefab.transform.position = position;
        prefab.transform.rotation = rotation;
        //prefab.SetActive(true);
        prefab.gameObject.SetActive(true);

        if (name == "Monalisa")
        {
            infoVar = 0;
        }
        else if (name == "LedaAtomica")
        {
            infoVar = 1;
        }
        else
        {
            infoVar = 2;
        }
        foreach (GameObject go in spawnedPrefabs.Values)
        {
            if (go.name != name)
            {
                go.gameObject.SetActive(false);
                //go.SetActive(false);
            }
        }
    }
Пример #18
0
    private void ImageChanged(ARTrackedImagesChangedEventArgs obj)
    {
        ARTrackedImage trackedImage = null;

        for (int i = 0; i < obj.added.Count; i++)
        {
            PrefabsInitialization();
        }
        for (int i = 0; i < obj.updated.Count; i++)
        {
            trackedImage = obj.updated[i];
            if (trackedImage.trackingState == TrackingState.Tracking)
            {
                string  tmpName = trackedImage.referenceImage.name;
                Vector3 tmpPose = trackedImage.transform.position;
                _tmpText.text = tmpName;

                _tmpGameObject = spawnedPrefabs[tmpName];
                _tmpGameObject.transform.position = tmpPose;
                HideAllPrefabs();
                _tmpGameObject.SetActive(true);
            }
        }
        for (int i = 0; i < obj.removed.Count; i++)
        {
            Destroy(_tmpGameObject);
        }
    }
Пример #19
0
        void UpdateInfo(ARTrackedImage trackedImage)
        {
            Debug.Log("UpdateInfo: " + trackedImage.name);

            if (trackedImage.referenceImage.name.Equals(ImageTargetName) || TrackAll)
            {
                if ((trackedImage.trackingState == TrackingState.Tracking))
                {
                    if (this.previousState != TrackingState.Tracking)
                    {
                        Debug.Log("Tracking: " + trackedImage.referenceImage.name);
                        CallPoseFound();
                        this.previousState = TrackingState.Tracking;
                    }
                    contentHolder.transform.position = trackedImage.transform.position;
                    contentHolder.transform.rotation = trackedImage.transform.rotation;
                }
                else if (trackedImage.trackingState == TrackingState.Limited)
                {
                    contentHolder.transform.position = trackedImage.transform.position;
                    contentHolder.transform.rotation = trackedImage.transform.rotation;
                }
                else if (trackedImage.trackingState == TrackingState.None)
                {
                    if (this.previousState != TrackingState.None)
                    {
                        Debug.Log("No tracking");
                        CallPoseLost();
                        this.previousState = TrackingState.None;
                    }
                }
            }
        }
Пример #20
0
    private void UpdateImage(ARTrackedImage trackedImage)
    {
        string     name     = trackedImage.referenceImage.name;
        Vector3    position = trackedImage.transform.position;
        Quaternion rotation = trackedImage.transform.rotation;

        GameObject prefab = spawnedPrefabs[name];

        prefab.transform.position = position;
        prefab.transform.rotation = rotation;
        if (toggle.isOn == true)
        {
            prefab.SetActive(true);
        }
        else
        {
            prefab.SetActive(true);
            foreach (GameObject go in spawnedPrefabs.Values)
            {
                if (go.name != name)
                {
                    go.SetActive(false);
                }
            }
        }
    }
Пример #21
0
 private void OntrackedImagesChanged(ARTrackedImagesChangedEventArgs args)
 {
     // 검출된 마커를 다 검사해서
     for (int i = 0; i < args.updated.Count; i++)
     {
         ARTrackedImage image = args.updated[i];
         // 만약 검출된 마커의 이름과 내가 보유한 마커(markerList)의 이름이 같다면
         for (int j = 0; j < markerList.Length; j++)
         {
             if (image.referenceImage.name == markerList[j].name)
             {
                 //  만약 그 마커가 추적중이라면
                 if (image.trackingState == TrackingState.Tracking)
                 {
                     // 그 마커의 게임오브젝트를 활성화하고
                     markerList[j].gobj.SetActive(true);
                     // 위치도 동기화 하고싶다.
                     markerList[j].gobj.transform.position = image.transform.position;
                 }
                 //  그렇지않고 추적중이 아니라면
                 else
                 {
                     // 그 마커의 게임오브젝트를 비활성화 하고싶다.
                     markerList[j].gobj.SetActive(false);
                 }
             }
         }
     }
 }
    void UpdateInfo(ARTrackedImage trackedImage, Texture2D texture = null)
    {
        var planeParentGo = trackedImage.transform.GetChild(0).gameObject;
        var planeGo       = planeParentGo.transform.GetChild(0).gameObject;

        if (texture)
        {
            // Set the texture
            trackedImage.name = texture.name;
            CornerSandboxParenter sender = trackedImage.GetComponentInChildren <CornerSandboxParenter>();
            m_parenters.Add(sender);

            sender.SetCornerTypeFromString(texture.name);

            var material = planeGo.GetComponentInChildren <MeshRenderer>().material;
            material.mainTexture = texture;
        }

        // Disable the visual plane if it is not being tracked
        if (trackedImage.trackingState != TrackingState.None)
        {
            planeGo.SetActive(true);

            // The image extents is only valid when the image is being tracked
            trackedImage.transform.localScale = new Vector3(trackedImage.size.x, trackedImage.size.x, trackedImage.size.y);
        }
        else
        {
            planeGo.SetActive(false);
        }
    }
Пример #23
0
    void UpdateInfo(ARTrackedImage trackedImage)
    {
        var trackedImageTransform = trackedImage.transform;
        var referenceImageName    = getReferenceName(trackedImage);
        var syncPoint             = Repositories.SyncPointRepository.Get()
                                    .FirstOrDefault(element => element.Name == referenceImageName);

        LogThings(trackedImage);
        MoveDetectedImageMarker(trackedImageTransform.position);

        if (syncPoint != null)
        {
            SetPendingSyncPointToSyncPoint(trackedImageTransform, syncPoint, referenceImageName);
        }

        var planeGo = trackedImageTransform.gameObject;

        if (TrackedImageHasTrackingState(trackedImage))
        {
            planeGo.SetActive(true);
            trackedImageTransform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);
        }
        else
        {
            planeGo.SetActive(false);
        }
    }
    void MatchImageWithMarker(ARTrackedImage trackedImage)
    {
        StationaryMarker virtualMarker;

        if (virtualMarkersDict.TryGetValue(trackedImage.referenceImage.guid, out virtualMarker))
        {
            if (trackedImage.trackingState != TrackingState.None)
            {
                lastTrackedMarker = virtualMarker;
                lastTrackedImage  = trackedImage;

                if (trackedImage.transform.lossyScale != virtualMarker.transform.lossyScale)
                {
                    trackedImage.transform.localScale = virtualMarker.transform.lossyScale;
                    Debug.LogWarning("trackedImage scale " + trackedImage.transform.lossyScale.ToString("F2") + " != " + virtualMarker.transform.lossyScale.ToString("F2") + " of virtual marker! Positioning might become incorrect!");
                }

                //lastTrackedImage.transform.localScale = Vector3.one;
                virtualMarker.gameObject.SetActive(true);
                SyncOffset();
            }
            else
            {
                virtualMarker.gameObject.SetActive(false);
            }
        }
    }
Пример #25
0
    void UpdateInstruction(ARTrackedImage trackedImage)
    {
        var planeParentGo = trackedImage.transform.GetChild(0).gameObject;
        var planeGo       = planeParentGo.transform.GetChild(0).gameObject;
        var canvasGroup   = trackedImage.GetComponentInChildren <CanvasGroup>();
        var text          = trackedImage.GetComponentInChildren <Text>();

        // Disable/Enable the visuals based on if this is the current instruction and it is tracked
        if (trackedImage == currentInsruction && trackedImage.trackingState != TrackingState.None)
        {
            planeGo.SetActive(true);
            canvasGroup.alpha = 1f;

            // The image extents is only valid when the image is being tracked
            trackedImage.transform.localScale = new Vector3(trackedImage.size.x, trackedImage.size.y, trackedImage.size.y);

            // Set the texture
            var material = planeGo.GetComponentInChildren <MeshRenderer>().material;
            material.mainTexture = (trackedImage.referenceImage.texture == null) ? defaultTexture : trackedImage.referenceImage.texture;

            // Update the step number
            if (stepper != null)
            {
                text.text = "Step: " + stepper.GetCurrentStep().Number;
            }
        }
        else
        {
            planeGo.SetActive(false);
            canvasGroup.alpha = 0f;
        }
    }
Пример #26
0
    private void AisleFound(ARTrackedImage trackedImage)
    {
        String aisleName = trackedImage.referenceImage.name;

        aisleImageLocation = trackedImage.transform.position;
        aisleImageRotation = trackedImage.transform.rotation;
        switch (aisleName)
        {
        case "chips":
            if (!inAisle)
            {
                aisleMarker    = Instantiate(groundMarker, aisleImageLocation, aisleImageRotation);
                aisleContainer = aisleMarker.transform.GetChild(0).gameObject;
                aisleContainer.transform.localPosition = new Vector3(6f, 0f, -1.5f);
                aisleContainer.transform.Rotate(new Vector3(90, 0, 0));
                childName            = aisleContainer.name;
                markerPlacedLocation = aisleMarker.transform.position;
                containerLocation    = aisleContainer.transform.position;
                inAisle = true;
                marker.SetActive(false);
            }
            else
            {
                aisleMarker.transform.position = trackedImage.transform.position;
                aisleMarker.transform.rotation = trackedImage.transform.rotation;
                markerPlacedLocation           = aisleMarker.transform.position;
                containerLocation = aisleContainer.transform.position;
            }
            break;

        default:
            break;
        }
    }
Пример #27
0
 public void UpdateInfo(ARTrackedImage trackedImage)
 {
     if (trackedImage.trackingState != TrackingState.None)
     {
         traking.transform.position = arcamera.transform.position;
         OnTargetFound.Invoke();
     }
 }
Пример #28
0
 /// <summary>
 ///     画像を認識すると同時にmove_arObjectsを行うと、更新前のため
 ///     aRTrackedImage.transform.positionの取得がうまくいかない。
 ///     少し時間をおいてmove_arObjectsを行う
 /// </summary>
 /// <param name="aRObjects">動かしたいオブジェクト群</param>
 /// <param name="aRTrackedImage">認識している写真</param>
 public void AlignObjectsParallel(GameObject aRObjects, ARTrackedImage aRTrackedImage)
 {
     Task.Run(() =>
     {
         Task.Delay(50);
         AlignObjectsLowFrequency(aRObjects, aRTrackedImage);
     });
 }
 void UpdateInfo(ARTrackedImage trackedImage)
 {
     if (trackedImage.referenceImage.name != null)
     {
         Debug.Log(trackedImage.referenceImage.name);
     }
     Debug.Log(trackedImage.trackingState.ToString());
 }
    private void UpdateArImage(ARTrackedImage trackedImage)
    {
        // Display the name of the tracked image in the canvas
        imageTrackedText.text = trackedImage.referenceImage.name;

        // Assign and Place Game Object
        AssignGameObject(trackedImage.referenceImage.name, trackedImage.transform.position);
    }