본문 바로가기

- GameProgramming/ └ VR/AR

★ 2. Unity 환경의 증강현실(AR) 기초 구현 2/2

반응형

이제 실질적으로 스마트 기기에서 증강 현실을 구동시켜보도록 하겠습니다.


제가 설정해둔 '타겟' 위에 큐브를 하나 올려 놓고 화면이 터치될 때마다 색깔이 바뀌도록 만들어보겠습니다.


일단 'Materials'라는 폴더를 하나 만들고 '폴더 우클릭 -> Create -> Material'로 새로운 머테리얼을 하나 만들어줍니다.

그다음 Hierarchy의 'ImageTarget' 하단에 큐브를 하나 만들고 새롭게 만든 Material을 입혀줍시다.





이제 터치하면 큐브의 Color를 바꿔줄 코드를 작성해보겠습니다.

프로젝트에 'colorChange.cs' 라는 스크립트를 하나 만들어 아래와 같이 작성해줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using UnityEngine;
using System.Collections;
 
public class colorChange : MonoBehaviour {
 
    int touchCount;
    int maxColorCount;
    int currentColor;
    Material material;
    public Color[] colors;
 
    void Awake()
    {
        touchCount = 0;
        maxColorCount = 3;
        currentColor = 0;
        material = GetComponent<MeshRenderer>().material;
 
        StartCoroutine("colorFunc");
        StartCoroutine("colorFunc2");
    }
 
    IEnumerator colorFunc()
    {
        while (true)
        {
            yield return null;
 
            this.touchCount = Input.touchCount;
 
            if (this.touchCount > 0)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Began)
                {
                    currentColor++;
                    if (currentColor >= maxColorCount) currentColor = 0;
 
                    material.color = colors[currentColor];
                }
            }
        }
    }
 
    IEnumerator colorFunc2()
    {
        while (true)
        {
            yield return null;
 
            if (Input.GetMouseButtonDown(0))
            {
                currentColor++;
                if (currentColor >= maxColorCount) currentColor = 0;
 
                material.color = colors[currentColor];
            }
        }
    }
}
cs


'18번 째 줄에 "material.color = colors[currentColor];" 를 추가해 주시면 좋을 것 같습니다.'

colorFunc() 코루틴 함수는 모바일 용이고, colorFunc2() 코루틴 함수는 pc에서 확인해볼 수 있는 코드로 작성되었습니다.

코드를 간략히 설명해드리겠습니다.

화면을 터치하면 자신이 정한 3가지 색상으로 차례대로 큐브의 색을 변경시켜 주는 코드입니다.


코드를 다 작성하셨다면 Hierarchy에 있는 ImageTarget 하단에 만들어 둔 Cube에 'colorChange.cs' 스크립트를 넣어줍니다.


이제 Cube의 Inspector 창을 보면 아래와 같이 나옵니다.



위에서 작성한 코드에 maxColorCount를 3으로 설정해두었습니다. 최대 사용할 Color 갯수를 의미하며 위 사진 부분의 Size에 3을 적고 Enter 키를 눌러줍니다.



3가지 색상을 추가할 수 있는 부분이 생기게되며, 검정 색으로 지정된 부분을 클릭하셔서 원하는 색 3가지를 마음대로 고르셔서 바꿔줍니다.


이제 안드로이드 스마트 폰에서 확인해볼 차례가 남았습니다.

먼저 ARCamera를 클릭하시고 Inspector창의 Vuforia Behaviour 스크립트에 'Open Vuforia configuration'을 클릭해줍니다.



아래와 같은 화면이 뜨면 Datasets 탭의 Load sampleAR Database에 체크를 하시고 그 아래의 Activate에도 체크해줍니다.



이제 안드로이드 설치 파일인 .apk 파일로 추출할 차례입니다.


먼저 유니티에서 'Ctrl + S' 키를 누르면 씬을 저장할 수 있습니다.

저는 'main'이라는 이름으로 저장했습니다.

씬 저장이 완료 되었다면 File -> Build & Settings를 눌러줍니다.



씬을 추가하기 위해 'Add Open Scenes' 버튼을 눌러 씬을 추가해줍니다. 추가가 정상적으로 되었다면 'main'이라는 씬이 추가될 것입니다. 그 다음 PC, Mac & Linux Standalone으로 플랫폼이 설정되어 있을텐데 'Android'를 선택하고 Switch Platform 버튼을 눌러 플랫폼을 변경해줍니다.



플랫폼이 정상적으로 변경되면 Android 우측에 유니티 로고가 위치하게됩니다.

이제 Player Settings를 눌러주면 아래와 같은 창이 뜨게됩니다.
Company Name에 Test를 적었습니다. Product Name은 프로젝트 이름이 그대로 들어가 있을 것입니다.
아래 부분에 Bundle Identifier 부분에 'com.[Company Name].[Product Name]' 양식대로 적어줍니다.
그리고 최소 API Level은 제 갤럭시 노트3 환경인 4.4 Kit Kat으로 설정하였습니다.



이제 다시 Build & Settings 창에 들어가셔서 Build 버튼을 누르면 .apk 파일로 추출할 수 있습니다.

apk파일을 스마트폰에 넣고 다운로드 받은 뒤 실행하면 아래와 같이 '마커'로 설정한 타겟 이미지 위에 색이 변하는 큐브가 카메라에 나타나는 것을 보실 수 있습니다. 화면을 터치하면 자신이 정한 3가지 색으로 바뀔 것입니다.


Vuforia의 AR SDK를 활용해 기초 구현을 완성해보았습니다.

다음에 좋은 예제가 생기면 포스팅해보도록 하겠습니다.


반응형