public void Update() { if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } if (Session.Status != SessionStatus.Tracking) { return; } Session.GetTrackables <AugmentedImage>(m_TempAugmentedImages, TrackableQueryFilter.Updated); foreach (var image in m_TempAugmentedImages) { AugmentedImageVisualizer visualizer = null; m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer); if (image.TrackingState == TrackingState.Tracking && visualizer == null) { Anchor anchor = image.CreateAnchor(image.CenterPose); visualizer = (AugmentedImageVisualizer)Instantiate(AugmentedImageVisualizerPrefab, anchor.transform); visualizer.Image = image; m_Visualizers.Add(image.DatabaseIndex, visualizer); } else if (image.TrackingState == TrackingState.Stopped && visualizer != null) { m_Visualizers.Remove(image.DatabaseIndex); Destroy(visualizer.gameObject); } } foreach (var visualizer in m_Visualizers.Values) { if (visualizer.Image.TrackingState == TrackingState.Tracking) { FitToScanOverlay.SetActive(false); return; } } FitToScanOverlay.SetActive(true); }
// Update is called once per frame void Update() { // Exit the app when the 'back' button is pressed. if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } // 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) { visualizer = null; 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); visualizer = (AugmentedImageVisualizer)Instantiate(AugmentedImageVisualizerPrefab, anchor.transform); visualizer.Image = image; m_Visualizers.Add(image.DatabaseIndex, visualizer); Debug.LogWarning("First if is called and visualizer is created"); } else if (image.TrackingState == TrackingState.Stopped && visualizer != null) { m_Visualizers.Remove(image.DatabaseIndex); GameObject.Destroy(visualizer.gameObject); } } if (m_Visualizers.Count > 0) { FrameLowerLeft = visualizer.FrameLowerLeft.transform.position; FrameLowerRight = visualizer.FrameLowerRight.transform.position; FrameUpperLeft = visualizer.FrameUpperLeft.transform.position; FrameUpperRight = visualizer.FrameUpperRight.transform.position; } }
private void RemoveVisualizer(AugmentedImage image, AugmentedImageVisualizer visualizer) { _visualizers.Remove(image.DatabaseIndex); Destroy(visualizer.gameObject); }
public void Update() { // Check that motion tracking is tracking. if (Session.Status != SessionStatus.Tracking) { return; } // 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 (AugmentedImage image in m_TempAugmentedImages) { AugmentedImageVisualizer visualizer = null; 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); visualizer = (AugmentedImageVisualizer)Instantiate(prefabs[image.DatabaseIndex], anchor.transform); visualizer.transform.localScale = Vector3.one * 0.1f; //TO DO CHECK THE ROTATION!! visualizer.Image = image; m_Visualizers.Add(image.DatabaseIndex, visualizer); if (image.DatabaseIndex > 0) { trackerManager.PlanetTracked(image.Name); currentPlanetName = image.Name; } } else if (image.TrackingState == TrackingState.Tracking) { if (image.DatabaseIndex > 0) { if (m_Visualizers.ContainsKey(image.DatabaseIndex)) { if (currentPlanetName != image.Name) { DestroyImmediate(m_Visualizers[image.DatabaseIndex].gameObject); m_Visualizers.Remove(image.DatabaseIndex); //trackerManager.PlanetTracked(image.Name); //currentPlanetName = image.Name; } } } } 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 visualizer in m_Visualizers.Values) { if (visualizer.Image.TrackingState == TrackingState.Tracking) { FitToScanOverlay.SetActive(false); return; } } FitToScanOverlay.SetActive(true); }
private void RemoveVisualizer(AugmentedImage image, AugmentedImageVisualizer visualizer) { _ShowAndroidToastMessage("Removing visualizer"); visualizers.Remove(image.DatabaseIndex); Destroy(visualizer); }