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); } }
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); }