본문 바로가기

Unity/ARCore

ARFoundation으로 ARCore 사용하기 - 이미지 트래킹

ARFoundation으로 ARCore 사용하기 - 이미지 트래킹

 

이미지를 찾아 이미지 위에 객체를 띄우는 작업을 해보겠습니다.

AR Tracked Image Manager를 사용하면 쉽게 가능합니다.

 

ARSessionOrigin 객체에 AR Tracked Image Manager를 컴퍼넌트로 등록합니다.

그리고 파일창(Project창)에 우클릭 -> Create -> XR -> ReferenceImageLibrary를 생성합니다.

Add Image를 클릭 후 원하는 이미지를 등록합니다.

빌드 후 모바일에서 테스트를 해보면 잘 나옵니다.

 

그러면, 이미지 트래킹 할때 생성되는 이벤트를 사용해 보도록 하겠습니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

public class TrackedImageHandler : MonoBehaviour
{
    public ARTrackedImageManager arTrackedImageManager;

    // Start is called before the first frame update
    void Start()
    {
        arTrackedImageManager.trackedImagesChanged += ArTrackedImageManager_trackedImagesChanged;
    }

    private void ArTrackedImageManager_trackedImagesChanged(ARTrackedImagesChangedEventArgs obj)
    {
        List<ARTrackedImage> addedImages = obj.added;
        List<ARTrackedImage> removedImages = obj.removed;

        foreach (ARTrackedImage image in addedImages)
        {
            if (image.referenceImage.name == "sample_qr")
            {
                image.GetComponent<Renderer>().material.color = Color.red;
            }

            if (image.trackingState != TrackingState.None)
            {
                image.GetComponent<Renderer>().enabled = true;
            }
            else
            {
                image.GetComponent<Renderer>().enabled = false;
            }
        }
    }
}

스트립트를 생성한 후 ARSessionOrigin 객체에 등록해 줍니다.

ARTrackedImageManager를 드래그해서 등록해 주면 됩니다.

 

빌드 후 테스트 해 봅시다.