본문 바로가기
개발/Unity

유니티 AR - QR 코드, 바코드 인식하기 (Vuforia QR Code, Barcode Scanner)

by 피로물든딸기 2023. 6. 25.
반응형

Unity 전체 링크

 

참고

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

- https://library.vuforia.com/objects/barcode-scanner/barcode-scanner-in-unity

 

뷰포리아Barcode 오브젝트를 이용해 QR 코드를 인식해보자.

 

바코드 오브젝트에서 Advanced를 클릭하면 적용가능한 Type이 보인다. 

여기서는 기본 설정대로 놔둔다.

 

이제 아래 API 문서를 참고하여 스크립트를 추가해보자.

https://library.vuforia.com/objects/barcode-scanner/barcode-scanner-in-unity

 

Barcode Scanner in Unity | Vuforia Library

 

library.vuforia.com

 

BarcodeOutlineBehaviour는 Vuforia에서 제공하는 바코드 아웃라인을 위한 스크립트다.

기본적으로 스크립트를 추가하면 Material두께를 설정할 수 있다.

 

게임을 실행하고 카메라로 QR 코드를 찾아보자.

인식가능한 QR 코드 주변에 Outline이 생기는 것을 알 수 있다.

 

이제 BarcodeCollider.cs를 추가하자.

인식한 바코드의 주소Update에서 로그를 찍도록 하였다.

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

public class BarcodeCollider : MonoBehaviour
{
    BarcodeBehaviour mBarcodeBehaviour;
    MeshCollider mMeshCollider;

    void Start()
    {
        mBarcodeBehaviour = GetComponent<BarcodeBehaviour>();
        if (mBarcodeBehaviour != null)
        {
            mBarcodeBehaviour.OnBarcodeOutlineChanged += OnBarcodeOutlineChanged;
        }
    }

    void OnBarcodeOutlineChanged(Vector3[] vertices)
    {
        UpdateMeshCollider(vertices);
    }

    void UpdateMeshCollider(Vector3[] vertices)
    {
        if (!mMeshCollider)
        {
            mMeshCollider = gameObject.AddComponent<MeshCollider>();
            mMeshCollider.cookingOptions = MeshColliderCookingOptions.None;
        }

        Mesh mesh = new Mesh();
        mesh.vertices = vertices;
        mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3 }; // Creates 2 triangles

        mMeshCollider.sharedMesh = mesh;
    }

    private void Update()
    {
        if (mBarcodeBehaviour != null && mBarcodeBehaviour.InstanceData != null)
        {
            Debug.Log(mBarcodeBehaviour.InstanceData.Text);
        }
    }
}

 

게임을 실행하고 QR 코드를 인식하면 해당 QR 코드의 URL이 콘솔에 나오게 된다.

 

반응형

댓글