Exemplo n.º 1
0
 bool CheckIsOver()
 {
     foreach (var image in m_TempAugmentedImages)
     {
         ZYC_AugmentedImageVisualizer visualizer = null;
         m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer);
         if (visualizer != null && !visualizer.getIsOver())
         {
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 2
0
        /// <summary>
        /// The Unity Update method.
        /// </summary>
        public void Update()
        {
            // Exit the app when the 'back' button is pressed.
            if (Input.GetKey(KeyCode.Escape))
            {
                Application.Quit();
            }

            // Only allow the screen to sleep when not tracking.
            if (Session.Status != SessionStatus.Tracking)
            {
                Screen.sleepTimeout = SleepTimeout.SystemSetting;
            }
            else
            {
                Screen.sleepTimeout = SleepTimeout.NeverSleep;
            }

            // Get updated augmented images for this frame.
            Session.GetTrackables <AugmentedImage>(
                m_TempAugmentedImages, TrackableQueryFilter.Updated);

            // Create visualizers and anchors for updated augmented images that are tracking and do
            // not previously have a visualizer. Remove visualizers for stopped images.
            foreach (var image in m_TempAugmentedImages)
            {
                ZYC_AugmentedImageVisualizer visualizer = null;
                m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer);
                if (image.TrackingState == TrackingState.Tracking && visualizer == null)
                {
                    if (!CheckIsOver())
                    {
                        break;
                    }
                    // Create an anchor to ensure that ARCore keeps tracking this augmented image.
                    Anchor anchor = image.CreateAnchor(image.CenterPose);
                    if (image.Name == "P49_1")
                    {
                        visualizer = (ZYC_AugmentedImageVisualizer)Instantiate(
                            AugmentedImageVisualizerPrefabs[0], anchor.transform);
                    }
                    else if (image.Name == "P52_1")
                    {
                        visualizer = (ZYC_AugmentedImageVisualizer)Instantiate(
                            AugmentedImageVisualizerPrefabs[1], anchor.transform);
                    }
                    else
                    {
                        visualizer = (ZYC_AugmentedImageVisualizer)Instantiate(
                            AugmentedImageVisualizerPrefabs[2], anchor.transform);
                        visualizer.gameObject.name = image.Name;
                    }
                    visualizer.Image         = image;
                    visualizer.m_Visualizers = m_Visualizers;
                    m_Visualizers.Add(image.DatabaseIndex, visualizer);
                }

                /*
                 * else if ((image.TrackingState == TrackingState.Stopped) && visualizer != null)
                 * {
                 *  m_Visualizers.Remove(image.DatabaseIndex);
                 *  GameObject.Destroy(visualizer.gameObject);
                 * }
                 */
            }

            // Show the fit-to-scan overlay if there are no images that are Tracking.
            foreach (var visualizer in m_Visualizers.Values)
            {
                if (visualizer.Image.TrackingState == TrackingState.Tracking)
                {
                    FitToScanOverlay.SetActive(false);
                    hand.SetActive(false);
                    return;
                }
            }

            FitToScanOverlay.SetActive(true);
        }