ARFoundation을 활용한 다중 이미지 트래킹 콘텐츠 개발하기
이전 실습에 이어서 여러장의미지에 각기 다르 오브젝트를 증강할 수 있는 콘텐츠르 개발해 봅니다.
Beatchoi's Blog
List of Postings
이전 실습에 이어서 여러장의미지에 각기 다르 오브젝트를 증강할 수 있는 콘텐츠르 개발해 봅니다.
ARFoundation을 활용하여 이미지를 인식하고 인식한 이미지에 가상의 오보젝트를 증강시켜 봅니다.
ARFoundation의 환경설정을 진행합니다.
AR Session Origin
및 AR Session
오브젝트를 추가합니다.
Project
청에서 마우스 우 클릭, Create
-> XR
-> Reference Image Library
를 선택하여 추가합니다.
<01. Reference Image Library 추가>
인식할 이미지 파일을 Project
창으로 옮겨 프로젝트에 추가합니다.
인식할 이미지의 형태에 따라 인식률에 차이가 있으며 인식이 불가능한 이미지의 경우 빌드가 되지 않습니다.
아래 이미지를 활용해 봅니다.
<02. Image Target>
생성된 Reference Image Library
를 선택하고 우측 인스펙터 창을 확인합니다.
Add Image
버튼을 클릭하여 인식될 이미지를 추가할 항목을 생성합니다.
이어서 프로젝트 창에 있는 인식할 이미지를 드래그하여 Texture 2D
항목에 끌어 놓습니다.
Specify Size
항목을 체크하고 생기는 하단 항목의 Physical Size
항목의 X 값을 1로 설정합니다.
<03. Reference Image 추가>
이어서 AR Session Origin
오브젝트를 선택하고 Inspector
창에서 AR Tracked Image Manager
컴포넌트르 추가합니다.
AR Tracked Image Manager
컴포넌트의 Serialized Library
항목에 Reference Image Library
파일을 끌어다 놓습니다.
<04. AR Tracked Image Library Manager 추가>
이제 이미지를 인식하면 생성이 될 3D 오브젝트를 생성합니다. Cube
오브젝트를 생성하고 본 오브젝트를 Prefab
으로 만들어 줍니다.
<05. Cube 오브젝트 생성>
<06. Cube 오브젝트 Prefab 생성>
마지막으로 AR Session Origin
오브젝트의 AR Tracked Image Manager
컴포넌트의 Tracked Image Prefab
항목에 Cube
프리펩을 연결합니다.
Hierarchy
창의 Cube 오브젝트는 제거합니다.
<07. Cube Prefab 연결>
ARFoundation을 활용하여 증강현실 콘텐츠를 만들 수 있는 준비를 해봅니다.
상단 메뉴에서 Window
탭의 Package Manager
를 선택합니다.
<01. 패키지 매니저 - 01>
패키지 매니저 창에서 Packages
항목을 아래와 같이 Unity Registry
로 변경합니다.
<02. 패키지 매니저 - 02>
Package Manager
창에서 ARFoundation
패키지를 설치합니다. 우측 하단 Install 버튼을 클릭합니다.
<03. ARFoundation 패키지 설치>
Package Manager
창에서 ARCore XR Plugin
패키지를 설치합니다. 우측 하단 Install 버튼을 클릭합니다.
<04. ARCore XR Plugin 패키지 설치>
프로젝트를 생성하고 Build Settings
창에서 플랫폼을 Android
로 변경합니다.
<05. 개발 플렛폼 변경>
Player Settings
-> Other Settings
항목에서 Rendering
항목을 찾습니다.
Auto Graphics API
항목을 체크 해제합니다.
OpenGLES3
이 Vulcan
의 상단으로 갈 수 있도록 마우스로 클릭, 드래그하여 끌어줍니다.
<06. Graphic API Level 변경>
Player Settings
-> Other Settings
항목에서 Identification
항목의 Minimum API Level
을 Android 10.0 (API Level 29)
으로 변경합니다.
<07. Android API Level 변경>
본인의 안드로이드 디바이스의 버전이 10 이상일 경우 구글 어플리케이션 정책에 의해 64비트의 어플리케이션만 실행이 가능하기 때문에 아래 항목을 진행합니다.
Other Settings
항목의 Configuration
항목을 찾습니다.
Scripting Backend
항목을 Mono
에서 IL2CPP
로 바꿔줍니다.
또한 Target Architectures
항목의 ARM64 항목을 체크해줍니다.
<08. 64비트 안드로이드 어플리케이션 설정>
Project Settings
창에서 좌측 하단 XR Plug-in Managerment
항목을 찾아 클릭합니다.
XR Plug-in Managerment
창에서 안드로이드 탭으로 설정이 되어있는지 확인하고 ARCore
항목을 체크하여 설정합니다.
<09. XR Plug-in Managerment 설정>
계층구조창에서 마우스 오른쪽 클릭 XR
항목에서 AR Session Origin
버튼을 클릭합니다.
<10. AR Session Origin 오브젝트 생성>
계층구조창에서 마우스 오른쪽 클릭 XR
항목에서 AR Session
버튼을 클릭합니다.
<12. AR Session 오브젝트 생성>
계층구조창에서 Main Camera
오브젝트를 제거합니다.
<13. Main Camera 오브젝트 제거>
ARFoundation의 Face Tracking
기능을 활용하는 방법을 알아봅니다.
이전 ARFoundation의 설정과 마찬가지로 Package Manager
에서 ARFoundation
, ARCore, ARKit XR Plugin
을 설치합니다.
만약 모바일 플랫폼이 IOS라면 ARKit Face Tracking
플러그인도 함께 설치해줍니다.
<01. 플러그인 설치>
플러그인이 모두 설치되면 계층구조창에 AR Session Origin
, AR Session
오브젝트를 생성합니다.
AR Session Origin
오브젝트를 선택하고 해당 오브젝트에 AR Face Manager
컴포넌트를 추가합니다.
인스펙터 창 하단 Add Component
버튼을 눌러 추가해줍니다.
<02. AR Face Manager 컴포넌트 추가>
계층구조창에서 마우스 오른쪽 클릭을 하고 XR
-> AR Default Face
오브젝트를 생성해 줍니다.
<03. AR Default Face 오브젝트 생성>
생성된 오브젝트를 아래 프로젝트 창으로 끌어서 프리펩으로 만들어 줍니다.
계층구조창에 생성한 오브젝트는 제거해 줍니다.
<04. AR Face Manager 프리펩화>
만든 프리펩을 아까 생성한 AR Session Origin
오브젝트의 AR Face Manager
컴포넌트의 Face Prefab
항목으로 끌어서 놓습니다.
<05. AR Face Manager 프리펩 연결>
AR Session Origin
오브젝트의 하위에 있는 AR Camera
오브젝트를 선택합니다.
우측 인스펙터창의 AR Camera Manager
컴포넌트의 Facing Direction
항목을 User
로 바꿔줍니다.
이 방법으로 모바일 디바이스의 전면 카메라를 활용할 수 있습니다.
<06. 전면카메라 사용 옵션>
이전 포스팅에서 진행했던 것과 마찬가지로 빌드 세팅을 진행한 후 모바일 디바이스에서 확인해 봅니다.
이번 포스팅에서는 SamplePosition
이라는 함수를 통해 특정 지역을 기준으로 특정 반경 내 무작위로 위치를 선정하고 이동해보는 과정을 알아보도록 하겠습니다.
SamplePosition
은 특정 위치에 네이비게이션 메쉬가 존재하는지 확인하고 존재한다면 참, 없다면 거짓을 반환하는 함수입니다.
선수 포스팅으로 네비게이션 메시 :: AI 길찾기 - Navigation Mesh 알기 - 21.07.28 를 보시고 오시면 따라하기 편합니다.
스테이지는 이전 포스팅에서 생성한 대로 진행합니다.
걸어다닐 수 있는 네비게이션 메시까지 구워줍니다.
NavMeshMove.cs
스크립트를 열어 다음과 같이 작성합니다.
Latest Posts
DOTS는 Data Oriented Tech Stack
의 약자로서 기본 상태에서 최적의 성능을 확보할 수 있는 전혀 다른 방식의 코드 작성 방법입니다. DOTS 방식으로 코드를 짠다면 멀티스레드 성능을 통해 더 많은 개체, 더 많은 이펙트, 더 나은 비주얼을 가진 복잡한 콘텐츠를 만들 수 있습니다.
DOTS는 Entity Component System
, C# Job System
, Burst Compiler
세 가지 요소로 이루어져 있습니다. 본 포스팅에서는 ECS
에 대해서 알아봅니다.