Search Unity

Question MutableRuntimeReferenceImageLibrary: track images added at runtime

Discussion in 'AR' started by yyna, Jun 13, 2022.

  1. yyna

    yyna

    Joined:
    Feb 26, 2020
    Posts:
    1
    I'm having trouble with MutableRuntimeReferenceImageLibrary and getting the tracked images. I'm using this coroutine for adding images

    private IEnumerator AddAllImagesToMutableReferenceImageLibraryAR(MutableRuntimeReferenceImageLibrary mutableLibrary)
    {
    if (m_TrackedImageManager.descriptor.supportsMutableLibrary)
    {
    Texture2D textureImg = Resources.Load("qr1") as Texture2D;
    JobHandle job;
    if (textureImg.isReadable)
    {
    string name = "qrcode1";
    job = mutableLibrary.ScheduleAddImageJob(textureImg, name, 0.1f);
    yield return new WaitUntil(() => job.IsCompleted);
    }
    textureImg = Resources.Load("qr2") as Texture2D;
    if (textureImg.isReadable)
    {
    name = "qrcode2";
    job = mutableLibrary.ScheduleAddImageJob(textureImg, name, 0.1f);
    yield return new WaitUntil(() => job.IsCompleted);
    }

    m_TrackedImageManager.enabled = true;
    m_TrackedImageManager.referenceLibrary = mutableLibrary;
    m_TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;

    }
    }

    and then this code for scanning the images

    void OnEnable()
    {
    m_TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;
    }
    void OnDisable()
    {
    m_TrackedImageManager.trackedImagesChanged -= OnTrackedImagesChanged;
    }
    private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs e)
    {
    UpdateTrackedImages(e.added);
    UpdateTrackedImages(e.updated);
    }

    private void UpdateTrackedImages(IEnumerable trackedImages)
    {
    var trackedImage =
    trackedImages.FirstOrDefault(x => x.referenceImage.name == "qrcode1");
    var trackedImage2 =
    trackedImages.FirstOrDefault(x => x.referenceImage.name == "qrcode2");

    if (trackedImage)
    {
    CorrectMsg.SetActive(true);
    WrongMsg.SetActive(false);

    }
    if (trackedImage2)
    {
    WrongMsg.SetActive(true);
    CorrectMsg.SetActive(false);
    }
    }

    When I had a non-rutime library I had no trouble with it scanning the images. Now, I'm not even sure if the images are added. How can I know if the problem is with adding the images or with scanning them?

    Does anyone have any suggestions?

    thank you in advance
     
  2. davidmo_unity

    davidmo_unity

    Unity Technologies

    Joined:
    Jun 18, 2019
    Posts:
    99