개발/Unity

유니티 AR - 이미지 타겟팅으로 오브젝트 띄우기 From Image (Vuforia Image Targeting From Image)

피로물든딸기 2023. 6. 6. 22:36
반응형

Unity 전체 링크

 

참고

- 유니티 AR 뷰포리아 튜토리얼

- 프로젝트에 뷰포리아 라이센스 키 적용하기

- 드래그로 오브젝트 Y축 회전하기

- 이미지 타겟팅으로 오브젝트 띄우기 From DataBase

 

뷰포리아에서 제공하는 기본 이미지 타겟팅 외에

다른 이미지를 인식하여, 원하는 오브젝트(= AR 오브젝트)를 띄워보자.

 

여기서는 Image Target TypeFrom Image로 설정한다.

그리고 AR로 구현한 오브젝트를 회전시켜 보자.


Image Target Object 만들기

 

기존 샘플 ImageTarget은 비활성화 시킨 후,

Hierarchy에서 마우스 오른쪽 버튼을 눌러, [Vuforia Engine] - [Image Target]을 추가하자.

 

새로운 씬에서 시작하고 싶다면 해당 씬의 카메라를 지우고 AR Camera를 추가하면 된다.

 

Image Target(= Test)이 만들었다면, Scene에 아래와 같이 하얀 평면이 보이게 된다.

 

Inspector에 보면 타겟으로 정할 Image를 올려야 하는 것을 알 수 있다.

Type은 From Image로 설정해둔다.

 

여기서는 아래의 이미지를 예시로 하였다. 

 

Scene에서 샘플 이미지로 변경된 것을 알 수 있다.


AR 오브젝트 만들기

 

이제 위 이미지가 인식되면 큐브를 띄워보자.

이미지 위에 큐브를 올려둔다. (스케일 조정)

 

이때, 반드시 샘플 이미지에 자식 오브젝트로 설정해야 한다.

즉, 큐브(AR 오브젝트)는 Test 오브젝트(Image Target)의 자식이 된다.

 

그리고 드래그로 오브젝트를 회전하는 코드를 참고하여, 큐브에 스크립트를 추가하자.

 

추가한 DragAndRotate.cs는 다음과 같다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragAndRotate : MonoBehaviour
{
    bool rotating;
    float rotateSpeed = 150.0f;
    Vector3 mousePos, offset, rotation;

    void OnMouseDown()
    {
        rotating = true;

        mousePos = Input.mousePosition;
    }

    void OnMouseUp()
    {
        rotating = false;
    }

    void Update()
    {
        if (rotating)
        {
            offset = (Input.mousePosition - mousePos);

            rotation.y = -(offset.x + offset.y) * Time.deltaTime * rotateSpeed;

            transform.Rotate(rotation);

            mousePos = Input.mousePosition;
        }
    }
}

 

이제 게임을 실행하면 큐브가 나오게 된다.

그리고 큐브를 드래그하면 AR로 만들어진 오브젝트도 정상적으로 회전하게 된다.


참고

 

From Image는 라이센스 키가 적용된 상태에서만 사용할 수 있다.

 

만약 Vuforia Configuration에서 License Key가 없다면 아래와 같은 경고 문구가 나타난다.

 

또한 게임을 실행해도 오브젝트가 나타나지 않고, 화면에 Vuforia 워터마크가 생기게 된다.

 

반응형