123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- using UnityEngine.Events;
- using UnityEngine.XR.ARFoundation;
- using UnityEngine.XR.ARSubsystems;
- public class ImageRecognitionBasic : MonoBehaviour
- {
- public string ReferenceImageName;
- private ARTrackedImageManager _TrackedImageManager;
- public Dictionary<string, GameObject> modelPrefabs;
-
- private void Awake()
- {
- _TrackedImageManager = FindObjectOfType<ARTrackedImageManager>();
-
- }
-
- private void OnEnable()
- {
- if (_TrackedImageManager != null)
- {
- _TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;
- }
- }
- private void OnDisable()
- {
- if (_TrackedImageManager != null)
- {
- _TrackedImageManager.trackedImagesChanged -= OnTrackedImagesChanged;
- }
- }
- private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs e)
- {
- foreach (var trackedImage in e.added)
- {
- Debug.Log($"Tracked image detected: {trackedImage.referenceImage.name} with size: {trackedImage.size}");
- }
- UpdateTrackedImages(e.added);
- UpdateTrackedImages(e.updated);
- UpdateTrackedImages(e.removed);
- }
- private void UpdateTrackedImages(IEnumerable<ARTrackedImage> trackedImages)
- {
-
- var trackedImage =
- trackedImages.FirstOrDefault(x => x.referenceImage.name == ReferenceImageName);
- if (trackedImage == null)
- {
- return;
- }
- if (trackedImage.trackingState != TrackingState.None)
- {
- var trackedImageTransform = trackedImage.transform;
- transform.SetPositionAndRotation(trackedImageTransform.position, trackedImageTransform.rotation);
- this.gameObject.GetComponent<ObjectDropper>().objectWasScanned();
- }
- }
-
- }
|