1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
-
- namespace NRKernal.NRExamples
- {
- using System.Collections.Generic;
- using UnityEngine;
-
- [HelpURL("https://developer.nreal.ai/develop/unity/image-tracking")]
- public class TrackingImageExampleController : MonoBehaviour
- {
-
- public TrackingImageVisualizer TrackingImageVisualizerPrefab;
-
- public GameObject FitToScanOverlay;
-
- private Dictionary<int, TrackingImageVisualizer> m_Visualizers
- = new Dictionary<int, TrackingImageVisualizer>();
-
- private List<NRTrackableImage> m_TempTrackingImages = new List<NRTrackableImage>();
-
- public void Update()
- {
- #if !UNITY_EDITOR
-
- if (NRFrame.SessionStatus != SessionState.Running)
- {
- return;
- }
- #endif
-
- NRFrame.GetTrackables<NRTrackableImage>(m_TempTrackingImages, NRTrackableQueryFilter.New);
-
-
- foreach (var image in m_TempTrackingImages)
- {
- TrackingImageVisualizer visualizer = null;
- m_Visualizers.TryGetValue(image.GetDataBaseIndex(), out visualizer);
- if (image.GetTrackingState() != TrackingState.Stopped && visualizer == null)
- {
- NRDebugger.Info("Create new TrackingImageVisualizer!");
-
- visualizer = (TrackingImageVisualizer)Instantiate(TrackingImageVisualizerPrefab, image.GetCenterPose().position, image.GetCenterPose().rotation);
- visualizer.Image = image;
- visualizer.transform.parent = transform;
- m_Visualizers.Add(image.GetDataBaseIndex(), visualizer);
- }
- else if (image.GetTrackingState() == TrackingState.Stopped && visualizer != null)
- {
- m_Visualizers.Remove(image.GetDataBaseIndex());
- Destroy(visualizer.gameObject);
- }
- FitToScanOverlay.SetActive(false);
- }
- }
-
- public void EnableImageTracking()
- {
- var config = NRSessionManager.Instance.NRSessionBehaviour.SessionConfig;
- config.ImageTrackingMode = TrackableImageFindingMode.ENABLE;
- NRSessionManager.Instance.SetConfiguration(config);
- }
-
- public void DisableImageTracking()
- {
- var config = NRSessionManager.Instance.NRSessionBehaviour.SessionConfig;
- config.ImageTrackingMode = TrackableImageFindingMode.DISABLE;
- NRSessionManager.Instance.SetConfiguration(config);
- }
- }
- }
|