Example #1
0
    void TargetLost(ImageTargetController controller)
    {
        string name = controller.Target.name();

        Debug.LogFormat("Lost target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), controller.Target.name());
        detectedTargets = detectedTargets & ~controllerMap[controller]; //remove controller from list of detected controllers
    }
Example #2
0
 private void AddCubeOnTarget(ImageTargetController controller)
 {
     videoPlayer.transform.parent        = controller.transform;
     videoPlayer.transform.localPosition = new Vector3(0, 0, -0.1f);
     videoPlayer.transform.eulerAngles   = new Vector3(0, 0, 0);
     videoPlayer.transform.localScale    = new Vector3(1f, 1f / controller.Target.aspectRatio(), 1f);
 }
Example #3
0
    void TargetFound(ImageTargetController controller)
    {
        string name = controller.Target.name();

        Debug.LogFormat("Found target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), name);
        detectedTargets |= controllerMap[controller]; //add controller to list of detected controllers
    }
Example #4
0
        private void AddTargetControllerEvents(ImageTargetController controller)
        {
            if (!controller)
            {
                return;
            }

            controller.TargetFound += () =>
            {
                Debug.LogFormat("Found target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), controller.Target.name());
            };
            controller.TargetLost += () =>
            {
                Debug.LogFormat("Lost target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), controller.Target.name());
            };
            controller.TargetLoad += (Target target, bool status) =>
            {
                imageTargetControllers[controller] = status ? true : imageTargetControllers[controller];
                Debug.LogFormat("Load target {{id = {0}, name = {1}, size = {2}}} into {3} => {4}", target.runtimeID(), target.name(), controller.Size, controller.Tracker.name, status);
            };
            controller.TargetUnload += (Target target, bool status) =>
            {
                imageTargetControllers[controller] = status ? false : imageTargetControllers[controller];
                Debug.LogFormat("Unload target {{id = {0}, name = {1}}} => {2}", target.runtimeID(), target.name(), status);
            };
        }
Example #5
0
        private void Awake()
        {
            imageTracker = Session.GetComponentInChildren <ImageTrackerFrameFilter>();
            cameraDevice = Session.GetComponentInChildren <VideoCameraDevice>();

            // targets from scene
            controllerNamecard = GameObject.Find("ImageTarget-namecard").GetComponent <ImageTargetController>();
            controllerIdback   = GameObject.Find("ImageTarget-idback").GetComponent <ImageTargetController>();
            imageTargetControllers[controllerNamecard] = false;
            imageTargetControllers[controllerIdback]   = false;
            AddTargetControllerEvents(controllerNamecard);
            AddTargetControllerEvents(controllerIdback);

            CreateTargets();

            var launcher = "AllSamplesLauncher";

            if (Application.CanStreamedLevelBeLoaded(launcher))
            {
                var button = BackButton.GetComponent <Button>();
                button.onClick.AddListener(() => { UnityEngine.SceneManagement.SceneManager.LoadScene(launcher); });
            }
            else
            {
                BackButton.gameObject.SetActive(false);
            }
        }
Example #6
0
        void Start()
        {
            SetPrefabs();

            //界面切换初始化
            canvasNav = GameObject.Find("/CanvasNav");
            buttonNav = GameObject.Find("/Canvas/ButtonNav").GetComponent <Button>();
            buttonNav.onClick.AddListener(ShowUINav);
            buttonNav.interactable = false;
            GameObject.Find("/CanvasNav/Panel/ButtonClose").GetComponent <Button>().onClick.AddListener(CloseUINav);
            //加载目标点
            navRoot   = GameObject.Find("/NavRoot").transform;
            common    = GetComponent <Common>();
            svContent = GameObject.Find("/CanvasNav/Panel/Scroll View/Viewport/Content").transform;

            LoadArrivalsAndScan();
            LoadRoads();
            SetLine();

            status = -1;

            imageTarget              = GameObject.Find("ImageTarget").GetComponent <ImageTargetController>();
            imageTarget.TargetFound += OnFound;
            imageTarget.TargetLost  += OnLost;
            scanFrame = GameObject.Find("/Canvas/Image");
            scanFrame.SetActive(false);

            CloseUINav();
        }
Example #7
0
        private void Awake()
        {
            var folder = Application.persistentDataPath + "/FrameRecording/";

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
            filePath = folder + "recording.eif";

            controllerNamecard = GameObject.Find("ImageTarget-namecard").GetComponent <ImageTargetController>();
            controllerIdback   = GameObject.Find("ImageTarget-idback").GetComponent <ImageTargetController>();
            AddTargetControllerEvents(controllerNamecard);
            AddTargetControllerEvents(controllerIdback);

            CreateRecorder();

            var launcher = "AllSamplesLauncher";

            if (Application.CanStreamedLevelBeLoaded(launcher))
            {
                var button = BackButton.GetComponent <Button>();
                button.onClick.AddListener(() => { UnityEngine.SceneManagement.SceneManager.LoadScene(launcher); });
            }
            else
            {
                BackButton.gameObject.SetActive(false);
            }
        }
Example #8
0
    public void CreateNewTarget(string filePath)
    {
        GameObject            target     = Instantiate(targetPrefab);
        ImageTargetController controller = target.GetComponent <ImageTargetController>();

        controller.Type         = PathType.Absolute;
        controller.TargetPath   = filePath;
        controller.ImageTracker = trackerBehavior;
    }
Example #9
0
        private void AddCubeOnTarget(ImageTargetController controller)
        {
            var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

            cube.GetComponent <MeshRenderer>().material = Resources.Load("Materials/EasyAR") as Material;
            cube.transform.parent        = controller.transform;
            cube.transform.localPosition = new Vector3(0, 0, -0.1f);
            cube.transform.eulerAngles   = new Vector3(0, 0, 180);
            cube.transform.localScale    = new Vector3(0.5f, 0.5f / controller.Target.aspectRatio(), 0.2f);
        }
Example #10
0
 private void LoadTargetIntoTracker(ImageTargetController controller)
 {
     controller.Tracker      = tracker;
     controller.TargetFound += () =>
     {
         isTracking = true;
     };
     controller.TargetLost += () =>
     {
         isTracking = false;
     };
 }
Example #11
0
 private void LoadTargetIntoTracker(ImageTargetController controller)
 {
     controller.Tracker      = tracker;
     controller.TargetFound += () =>
     {
         cloudRecognizer.enabled = false;
     };
     controller.TargetLost += () =>
     {
         cloudRecognizer.enabled = true;
     };
 }
Example #12
0
        private void Start()
        {
            controller   = GetComponentInParent <ImageTargetController>();
            meshRenderer = GetComponent <MeshRenderer>();
            StatusChanged();

            player        = GetComponent <UnityEngine.Video.VideoPlayer>();
            player.source = VideoSource.Url;

            var path = Application.streamingAssetsPath + "/" + VideoInStreamingAssets;

            if (Application.platform == RuntimePlatform.Android)
            {
                path = Application.persistentDataPath + "/" + VideoInStreamingAssets;
            }

            // Note: Use the Unity VideoPlayer in your own way.
            // We use video file in StreamingAssets in the samples only to keep compatiblity.
            // Some versions of Unity will have strange behaviors if video in resources.
            if (Application.platform == RuntimePlatform.Android && !File.Exists(path) && !path.StartsWith("https://"))
            {
                StartCoroutine(FileUtil.LoadFile(VideoInStreamingAssets, PathType.StreamingAssets, (data) =>
                {
                    StartCoroutine(WriteFile(path, data));
                }));
            }
            else
            {
                player.url = path;
                ready      = true;
            }

            controller.TargetFound += () =>
            {
                if (FitTarget)
                {
                    transform.localScale = new Vector3(1, 1 / controller.Target.aspectRatio(), 1);
                }
                found = true;
                StatusChanged();
            };
            controller.TargetLost += () =>
            {
                found = false;
                StatusChanged();
            };

            player.prepareCompleted += (source) =>
            {
                prepared = true;
                StatusChanged();
            };
        }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.I))
        {
            ImageTargetController.SwitchToNextImageTarget();
        }

        if (localTarget != ImageTargetController.CurrentImageTarget)
        {
            ActiavteImageTarget();
            localTarget = ImageTargetController.CurrentImageTarget;
        }
    }
Example #14
0
        private void Awake()
        {
            imageTracker = Session.GetComponentInChildren <ImageTrackerFrameFilter>();
            cameraDevice = Session.GetComponentInChildren <VideoCameraDevice>();

            // targets from scene
            controllerNamecard = GameObject.Find("ImageTarget-namecard").GetComponent <ImageTargetController>();
            controllerIdback   = GameObject.Find("ImageTarget-idback").GetComponent <ImageTargetController>();
            imageTargetControllers[controllerNamecard] = false;
            imageTargetControllers[controllerIdback]   = false;
            AddTargetControllerEvents(controllerNamecard);
            AddTargetControllerEvents(controllerIdback);

            CreateTargets();
        }
Example #15
0
    //}

    private void CreatAllImageTarget()
    {
        //路径

        //获取指定路径下面的所有资源文件
        if (Directory.Exists(AssetConst.ImageSavePath))
        {
            DirectoryInfo direction = new DirectoryInfo(AssetConst.ImageSavePath);
            FileInfo[]    files     = direction.GetFiles("*", SearchOption.AllDirectories);
            Debug.Log(files.Length);

            for (int i = 0; i < files.Length; i++)
            {
                if (Path.GetExtension(files[i].Name).ToLower() == ".jpg")
                {
                    //Debug.Log("Name:" + Path.GetFileNameWithoutExtension(files[i].Name));
                    GameObject ImageTarget = new GameObject(Path.GetFileNameWithoutExtension(files[i].Name));
                    //ImageTarget.SetActive(true);
                    ImageTarget.transform.localPosition = Vector3.zero;

                    ImageTrackerBehaviour       tracker          = FindObjectOfType <ImageTrackerBehaviour>();
                    ImageTargetController       targetController = ImageTarget.AddComponent <ImageTargetController>();
                    FerreroImageTargetBehaviour targetBehaviour  = ImageTarget.AddComponent <FerreroImageTargetBehaviour>();
                    targetBehaviour.Bind(tracker);
                    targetBehaviour.SetupWithImage(files[i].FullName, StorageType.Absolute, ImageTarget.name, new Vector2());
                    //创建画布
                    GameObject canvas = Instantiate(Resources.Load("picCanvas")) as GameObject;
                    canvas.GetComponent <RectTransform>().sizeDelta = Singleton <ImageTargetDataModel> .GetInstance().GetPadWH();

                    targetBehaviour.Bind(tracker);
                    Vector3 scaleP = Vector3.one * Singleton <ImageTargetDataModel> .GetInstance().GetScaleFatorFor(1);

                    //Debug.Log("scaleP=" + scaleP);
                    canvas.GetComponent <RectTransform>().localScale = scaleP;
                    GameObject backGroundImage = canvas.transform.Find("backgroundImage").gameObject;

                    backGroundImage.GetComponent <RectTransform>().sizeDelta = new Vector2(canvas.GetComponent <RectTransform>().sizeDelta.x, canvas.GetComponent <RectTransform>().sizeDelta.y);
                    targetController.BG_IMG   = backGroundImage;
                    targetController.m_canvas = canvas;
                    //Debug.Log("Load Canvas Prefab Suceess=======================" + canvas.name);
                    canvas.transform.parent = targetBehaviour.gameObject.transform;
                }
            }

            //Debug.Log( "FullName:" + files[i].FullName );
            //Debug.Log( "DirectoryName:" + files[i].DirectoryName );
        }
    }
Example #16
0
 void Awake()
 {
     material    = GetComponent <MeshRenderer>().material;
     imageTarget = GetComponentInParent <ImageTargetController>();
     CameraRenderer.RequestTargetTexture((camera, texture) =>
     {
         renderTexture = texture;
     });
     imageTarget.TargetFound += () =>
     {
         if (freezed.OnNone)
         {
             freezed = false;
         }
     };
 }
Example #17
0
 private void Awake()
 {
     buttonText  = ButtonChange.transform.Find("Text").GetComponent <Text>();
     imageTarget = GetComponentInParent <ImageTargetController>();
     material    = GetComponent <MeshRenderer>().material;
     CameraRenderer.RequestTargetTexture((camera, texture) => { renderTexture = texture; });
     imageTarget.TargetFound += () =>
     {
         if (freezed.OnNone)
         {
             buttonText.text = "Freeze";
             freezed         = false;
         }
         ButtonChange.interactable = true;
     };
     imageTarget.TargetLost += () =>
     {
         ButtonChange.interactable = false;
     };
     ButtonChange.onClick.AddListener(() =>
     {
         if (freezed.Value)
         {
             freezed         = false;
             buttonText.text = "Freeze";
             if (freezedTexture)
             {
                 Destroy(freezedTexture);
             }
         }
         else
         {
             freezed         = true;
             buttonText.text = "Thaw";
             if (freezedTexture)
             {
                 Destroy(freezedTexture);
             }
             if (renderTexture)
             {
                 freezedTexture = new RenderTexture(renderTexture.width, renderTexture.height, 0);
                 Graphics.Blit(renderTexture, freezedTexture);
             }
             material.SetTexture("_MainTex", freezedTexture);
         }
     });
 }
Example #18
0
        private void Awake()
        {
            vioCamera          = Session.GetComponentInChildren <VIOCameraDeviceUnion>();
            controllerNamecard = GameObject.Find("ImageTarget").GetComponent <ImageTargetController>();
            TouchControl.TurnOn(TouchControl.gameObject.transform, Camera.main, true, true, true, true);

            var launcher = "AllSamplesLauncher";

            if (Application.CanStreamedLevelBeLoaded(launcher))
            {
                var button = BackButton.GetComponent <Button>();
                button.onClick.AddListener(() => { UnityEngine.SceneManagement.SceneManager.LoadScene(launcher); });
            }
            else
            {
                BackButton.gameObject.SetActive(false);
            }
        }
 public void CheckExhibitCompletion()
 {
     if (!IsSwordOver)
     {
         if (exhibitAudioManager.SwordStory[1].hasFinished && exhibitAudioManager.SwordStory[2].hasFinished &&
             exhibitAudioManager.SwordStory[3].hasFinished)
         {
             IsSwordOver = true;
             ExhibitVisitedEvent(ExhibitTag.Sword);
             StartCoroutine(MoveOnToNextExhibit(swordMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
     if (!IsNeedlesOver)
     {
         if (exhibitAudioManager.NeedlesStory[1].hasFinished && exhibitAudioManager.NeedlesStory[2].hasFinished &&
             exhibitAudioManager.NeedlesStory[3].hasFinished)
         {
             IsNeedlesOver = true;
             ExhibitVisitedEvent(ExhibitTag.Tattoo);
             StartCoroutine(MoveOnToNextExhibit(needlesMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
     if (!IsTubOver)
     {
         if (exhibitAudioManager.TubStory[1].hasFinished && exhibitAudioManager.TubStory[2].hasFinished &&
             exhibitAudioManager.TubStory[3].hasFinished)
         {
             IsTubOver = true;
             ExhibitVisitedEvent(ExhibitTag.Bathtub);
             StartCoroutine(MoveOnToNextExhibit(tubMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
     if (!IsSignOver)
     {
         if (exhibitAudioManager.SignStory[1].hasFinished && exhibitAudioManager.SignStory[2].hasFinished &&
             exhibitAudioManager.SignStory[3].hasFinished)
         {
             IsSignOver = true;
             ExhibitVisitedEvent(ExhibitTag.Petrea);
             StartCoroutine(MoveOnToNextExhibit(signMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
     if (!IsSkullOver)
     {
         if (exhibitAudioManager.SkullStory[1].hasFinished && exhibitAudioManager.SkullStory[2].hasFinished &&
             exhibitAudioManager.SkullStory[3].hasFinished)
         {
             IsSkullOver = true;
             ExhibitVisitedEvent(ExhibitTag.Skull);
             StartCoroutine(MoveOnToNextExhibit(skullMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
     if (!IsBankOver)
     {
         if (exhibitAudioManager.BankStory[1].hasFinished && exhibitAudioManager.BankStory[2].hasFinished &&
             exhibitAudioManager.BankStory[3].hasFinished)
         {
             IsBankOver = true;
             ExhibitVisitedEvent(ExhibitTag.Bank);
             StartCoroutine(MoveOnToNextExhibit(bankMoveOn));
             ImageTargetController.SwitchToNextImageTarget();
         }
     }
 }
Example #20
0
 private void Awake()
 {
     tracker            = Session.GetComponentInChildren <SurfaceTrackerFrameFilter>();
     controllerNamecard = GameObject.Find("ImageTarget").GetComponent <ImageTargetController>();
     TouchControl.TurnOn(TouchControl.transform, Camera.main, false, false, true, true);
 }
Example #21
0
        private void Start()
        {
            controller   = GetComponentInParent <ImageTargetController>();
            meshRenderer = GetComponent <MeshRenderer>();
            StatusChanged();

            player        = GetComponent <UnityEngine.Video.VideoPlayer>();
            player.source = VideoSource.Url;

            var path = Application.streamingAssetsPath + "/" + VideoInStreamingAssets;

            if (Application.platform == RuntimePlatform.Android)
            {
                path = Application.persistentDataPath + "/" + VideoInStreamingAssets;

                {
                    // Workaround Unity bug: https://issuetracker.unity3d.com/issues/android-video-player-cannot-play-files-located-in-the-persistent-data-directory-on-android-10
                    // more info in this thread: https://forum.unity.com/threads/error-videoplayer-on-android.742451/
                    // If you are using Unity versions with this issue fixed, you can safely skip this code block
                    int sdkVersion = 0;
#if UNITY_ANDROID && !UNITY_EDITOR
                    using (var buildVersion = new AndroidJavaClass("android.os.Build$VERSION"))
                    {
                        sdkVersion = buildVersion.GetStatic <int>("SDK_INT");
                    }
#endif
                    if (sdkVersion >= 29)
                    {
                        GUIPopup.EnqueueMessage("Use web video to workaround Unity VideoPlayer bug on Android Q\nthe video play may be slow", 5);
                        path = "https://staticfile-cdn.sightp.com/easyar/video/" + Path.GetFileName(VideoInStreamingAssets);
                    }
                }
            }

            // Note: Use the Unity VideoPlayer in your own way.
            // We use video file in StreamingAssets in the samples only to keep compatiblity.
            // Some versions of Unity will have strange behaviors if video in resources.
            if (Application.platform == RuntimePlatform.Android && !File.Exists(path) && !path.StartsWith("https://"))
            {
                StartCoroutine(FileUtil.LoadFile(VideoInStreamingAssets, PathType.StreamingAssets, (data) =>
                {
                    StartCoroutine(WriteFile(path, data));
                }));
            }
            else
            {
                player.url = FileUtil.PathToUrl(path);
                ready      = true;
            }

            controller.TargetFound += () =>
            {
                if (FitTarget)
                {
                    transform.localScale = new Vector3(1, 1 / controller.Target.aspectRatio(), 1);
                }
                found = true;
                StatusChanged();
            };
            controller.TargetLost += () =>
            {
                found = false;
                StatusChanged();
            };

            player.prepareCompleted += (source) =>
            {
                prepared = true;
                StatusChanged();
            };
        }
 public void Awake()
 {
     trackedImageManager   = GameObject.FindObjectOfType <ARSessionOrigin>().GetComponent <ARTrackedImageManager>();
     imageTargetController = GetComponent <ImageTargetController>();
 }
Example #23
0
 private void Awake()
 {
     vioCamera          = Session.GetComponentInChildren <VIOCameraDeviceUnion>();
     controllerNamecard = GameObject.Find("ImageTarget").GetComponent <ImageTargetController>();
     TouchControl.TurnOn(TouchControl.gameObject.transform, Camera.main, true, true, true, true);
 }