public void ChangeModel()
        {
            if (visualizer != null)
            {
                AugmentedImage image  = visualizer.Image;
                Anchor         anchor = visualizer.anchor;

                //m_Visualizers.Remove(image.DatabaseIndex);
                GameObject.Destroy(visualizer.gameObject);
                ManipulationSystem.Instance.SelectedObject = null;

                GameObject modelExample = CollectionManager.Instance.ActiveModel;
                GameObject model        = modelExample;
                model.AddComponent <MarkerVisualizer>();
                model.GetComponent <MarkerVisualizer>().ManipulatorPrefab = ManipulatorExample;

                visualizer = (MarkerVisualizer)Instantiate(
                    model.GetComponent <MarkerVisualizer>(), anchor.transform);
                visualizer.anchor = anchor;
                visualizer.Image  = image;

                // m_Visualizers.Add(image.DatabaseIndex, visualizer);
            }
        }
Ejemplo n.º 2
0
        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)
            {
                m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer);
                if (image.TrackingState == TrackingState.Tracking && visualizer == null)
                {
                    // Create an anchor to ensure that ARCore keeps tracking this augmented image.
                    Anchor anchor = image.CreateAnchor(image.CenterPose);

                    GameObject modelExample = objectPrefab;
                    GameObject model        = modelExample;
                    model.AddComponent <MarkerVisualizer>();
                    model.GetComponent <MarkerVisualizer>().ManipulatorPrefab = ManipulatorExample;

                    visualizer = (MarkerVisualizer)Instantiate(
                        model.GetComponent <MarkerVisualizer>(), anchor.transform);
                    visualizer.anchor = anchor;
                    var pose = anchor.m_NativeSession.AnchorApi.GetPose(anchor.m_NativeHandle);
                    anchor.transform.position = pose.position;
                    anchor.transform.rotation = pose.rotation;

                    visualizer.Image = image;
                    visualizer.Init();
                    m_Visualizers.Add(image.DatabaseIndex, visualizer);
                }
                else if (image.TrackingState == TrackingState.Stopped && visualizer != null)
                {
                    m_Visualizers.Remove(image.DatabaseIndex);
                    Destroy(visualizer.gameObject);
                }
            }

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