⚙️ Programming/C# & Unity

[Unity] AR SDK 소개, 설치 후 세팅

Sugar0810 2023. 1. 15. 13:16

※ Unity AR Components

1. AR Foundation

유니티에서 공식 제공(무료)

Documents(바로가기)

1-1. Support Platform

  • ARCore(Android)
  • ARKit(IOS)
  • Magic Leap
  • HoloLens

1-2. 지원 하는 기능

안드로이드는 종류가 많아서 IOS에 비해 기능적 제한이 있다.

image

  • 자주 사용되는 기능
    • Device tracking
    • Plane tracking : 4개의 점 좌표를 기반해 평면으로 보여준다.
    • Point clouds : 4개의 점 좌표 추적
    • Face tracking : 얼굴 추적
    • 2D/3D Image tracking : 이미지 추적
    • 3D Object tracking(Only IOS): 3차원적 물체를 추적(집, 사람 등)
    • 2D & 3D body tracking(Only IOS) : 몸을 추적
    • Raycast
    • Occlusion

2. MAXST

퍼포먼스가 가볍다.

무료 버전은 워터마크가 있음(유료 전환 시 삭제 可)

3. Vuforia

 

※ Setup AR Foundation in Unity Project

1. 유니티 프로젝트 -> 패키지 매니저에서 아래의 패키지 인스톨

  • AR Foundation
  • ARCore XR Plugin : Andorid
  • ARKit Face Tracking : IOS Face Tracking
  • ARKit XR Plugin : IOS
    image

2. AR Foundation Samples 에서 버전 선택(4.2) 후 Download Zip

3. 압축 해제한 파일 프로젝트로 덮어쓰기


 

※ AR Foundation Module Option

자주 사용하는 모듈을 정리했다.

#SimpleAR

image

ARSessionOrigin.cs

통제 대상이 될 기준(카메라)을 가져온다.

ARPlaneManager.cs

평면(Plane)을 이미지 프로세싱하여 추적한다.

Player(Origin)가 걸어다닐 곳을 판단

image

 

image

ARPointCloudManager.cs

평면 인식을 사용하는 포인트, 유용하진 않다.

image

ARRaycastManager.cs

Ray로 추적한 Obj 정보를 전부 가져온다.

프리팹은 Ray에서 지정한 위치에 생성된다.

PlaceOnPlane.cs

사각 평면을 찾는다.

프리팹은 평면을 찾았을 때 그 평면 위에 생성된다.

AR Session Origin - AR Camera - Scirpts

image

#Object Tracking: 오브젝트 추적

AR Session Origin - Scirpts

image

ARTrackedObjectManager.cs

비슷한 물체를 추적하도록 돕는 스크립트

Reference Library : 추적 기준이 되는 본체 모듈

#Image Tracking: 이미지 추적

AR Session Origin - Scirpts

image

#Face Tracking: 사람 얼굴 인식

#CameraGrain: 카메라 해상도

#Configurations

#Depth


 

※ Setup MAXST in Unity Project

  • 회원가입 필수
  • 4.1.3 버전으로 다운로드(버전업 할 수록 웹캠은 지원하지 않음)
  1. 공식 홈페이지 : MAXST AR SDK Download
  2. In Project → Package Import

 

※ MAXST Module Option

#GPU Engine Change

OpenGL Core 생성 후 기존 엔진 삭제 -> Restart

Direct X 11 -> OpenGL 4.5

image

#CameraConfiguration

카메라 셋팅 AR Camera OBJ만 있으면 바로 사용 가능

CameraBackground 내에서 이미지 프로세싱을 한다.

image

 

image

#CodeReader : 바코드 스캔

image

 

image

#InstantTracker : 오브젝트 위치 지정

트래킹 후에 카메라가 회전해도 오브젝트는 제 자리에 있음

카메라가 많을 수록 정확도가 높다.

image

#ImageTracker : 이미지 트래킹

트래킹 전용 데이터(이미지)를 설정해주는 작업이 필요하다.

MAXST 홈페이지에서 타깃 그룹/데이터를 업로드하고 학습받은 데이터를 내려받는다.

Image Trackable Obj -> Image Trackable Behavior 스크립트

이미지 타겟 선정

트래킹 성공 시 Image Trackable Obj 자식들을 Enable해준다. 그 때 자식 오브젝트는 오디오 소스, url, 모델 등 유니티 내에서 불러낼 수 있는 요소는 무엇이든 가능하다.

image

 

image

#VideoTracker : 비디오 트래킹

보통은 드문 경우이지만, 재생중인 영상에게 트래킹을 시도해서 추가 정보를 전달할 때 사용한다.

기술이 어렵고(시간, 비용이 높다.)

보통 전시회나 관공서에서 사용하고 이외엔 잘 없음

image

#CloudRecognizer : 서버의 데이터와 트래킹해준다.

트래킹 할 오브젝트의 컴포넌트로 설정

유료로 전환해야 제대로 사용할 수 있음

클라우드의 개념상, 정적인 개념에 가까워 그다지 유용하지 않다.

MAXST에서 SceneMgr의 역할은 어느 모듈이여도 초기화하고 준비하는 역할로 사용된다.

image

빌드 중일 때 스크립트에 의해 SceneMgr에서 비디오 플레이어를 준비하게 된다.

image

#ObjectTracker : 실제 물체를 트래킹한다.

인앱을 이용해 좌표를 스캔하고서 그 데이터를 다른 트래킹에 이용할 수 있다.

오브젝트 촬영, 핀 설정 후 데이터 내보내고 프로젝트에서 임포트하기

image

임포트한 오브젝트를 배치하고 핀에 Trackable obj를 배치한다.

image

이후 빌드

image