이번 포스트에서는 저번 포스트에 이어, HelloAR 예제를 공부한 내용을 기록하고자 한다. 따라서 정확도는 떨어질 수 있다. 이번 포스트는 유니티와 C#에 대해 어느정도 알고 있는 편이 좋을 것 같다. (프리팹 등 유니티 용어에 대해서 세세하게 다루지는 않을 예정이다.)
이번포스트는 크게
1. Hierachy
2. HelloARController
3. 빌드
로 이루어져 있다.
이번 포스트는 아래 링크를 많이 참고하였다.
(아마 아래 글은 낮은 버전의 AR Core SDK를 기준으로 쓰인 듯 하다. 이 포스트는 arcore-unity-sdk-1.20 이상의 버전을 사용하였으니 본 포스트의 설명과 아래 글의 설명이 완전히 같지 않을 수 있다.)
참고 링크: https://developers.google.com/ar/develop/unity/tutorials/hello-ar-sample
Explore the HelloAR sample app code | ARCore | Google Developers
Dive into the ARCore SDK for Unity sample app code to learn how SDK components work in an AR scene. Prerequisites This guide assumes that you have downloaded and installed the ARCore SDK for Unity. If you are new to the SDK, see the ARCore SDK for Unity qu
developers.google.com
1. Hierachy
저번 포스트에서 언급했듯 Assests > GoogleARCore > Example > HelloAR의 경로로 HelloAR 예제에 접근할 수 있다. HelloAR 폴더 안에 있는 Scenes폴더에 들어가면 HelloAR이라는 이름의 씬을 찾을 수 있다. 더블클릭으로 씬을 열 수 있다. 그럼 Hierarchy에 HelloAR씬이 올라가 아래와 같은 화면이 된다.

Hierarchy에 있는 것을 하나씩 간단하게 분석해보자.
![]() |
AR Core Device 프리팹은 First Person Camera를 가지고 있다. 이는 AR 어플리케이션을 사용할 기기의 후면 카메라를 이용해 real world를 capture하고 AR의 배경으로 이용한다. |
| Environmental Light 프리팹은 EnvironmentalLight라는 이름의 스크립트 파일을 갖고 있으며 카메라로 capture된 이미지의 픽셀을 분석하여 각 픽셀들의 평균 밝기 추정치를 이용해 AR scene의 조명을 조절한다. 이를 통해 생성되는 AR object에 비치는 빛의 방향, 세기 등을 조절하는 것으로 보인다. | |
| Point Cloud는 감지된 특징점들을 다룬다. 이렇게 감지된 점들을 이용해 평면을 인식한다. | |
![]() |
PlaneDiscovery는 Discovery Point Cloud를 갖고 평면을 인식한다. 사용자에게 카메라를 움직이는 애니메이션을 보여주는 기능도 여기서 수행하고 있는 것으로 보인다. |
| Plane Generator는 인식한 평면을 시각화하는 것으로 보인다. DetectedPlaneVisualizer 스크립트에 의해 제어된다. | |
![]() |
Canvas는 전체적인 화면 구성을 다루고 있다. Depth등의 설정과 설정과 관련된 버튼 등을 여기서 확인할 수 있다. |
| EventSystem에 대해서는 아직 자세히 알아보지 못했다. 더 공부해본 후 추가하도록 하겠다. | |
| HelloAR Controller는 AR scene의 전반적인 부분을 다루고 있는 게임 오브젝트이며, HelloARController 스크립트 등을 갖고 있다. 터치 또는 평면 인식 시 튀어나올 object등의 프리팹 또한 갖고 있다. Virtual Ruler 구현을 위해 일단 이 HelloARController 스크립트를 다뤄볼 예정이다. |
Hierachy에 있는 각각의 게임 오브젝트들을 클릭하면 (보통 화면 우측의) inspector부분에서 더 자세히 확인할 수 있다.
2. HelloARController
위에서 말했듯 HelloARController 스크립트를 수정해야하기 때문에, HelloARController.cs의 코드를 직접 공부해봐야했다.
해당 스크립트 파일은 Asset > GoogleARCore > Examples > HelloAR > Scripts 폴더로 들어가거나 Hierachy에서 HelloAR Controller를 눌러 우측 inspector에서 Hello AR Controller(script) 아래의 스크립트 파일을 더블클릭해서 파일의 경로로 바로 이동할 수 있다. 아래 우측 사진에서 보이는 C# 아이콘을 더블클릭하면 Visual Studio에서 파일을 열 수 있다.
![]() |
![]() |
메인 함수 격인 public class HelloARController : MonoBehaviour를 조금 들여다보자.
앞부분은 위와 같이 변수 선언으로 이뤄진다. GameObject 변수들은 Unity내에서 드래그해서 넣을 수 있다. (코드의 바로 위 왼쪽 사진 참고) ...으로 줄인 부분에 각 게임 오브젝트들의 역할이 적혀있으니 읽어보면 이해에 도움이 될 것이다.
조금 뛰어넘고 바로 필요한 부분인 터치한 곳에 object를 생성하는 부분을 보도록 하겠다. public class HelloARController : MonoBehaviour 안의 Update() 함수이다.
Instantiate는 게임 오브젝트를 원하는 위치에 생성할 수 있다. 위 코드로 prefab을 hit, 즉 터치한 곳의 좌표에 생성할 수 있다. anchor는 이름 그대로 닻의 역할을 하여 오브젝트가 해당 위치에 잘 고정되도록 돕는다. AR Core에서는 이 기능을 이용해 평면을 더 잘 인식할 수 있도록 하는 것으로 보이는데, 이 부분은 후에 평면 인식과 길이 인식의 정확도를 높이기 위해 공부할 필요성이 있어보인다.
UpdateApplicationLifecycle()는 Update()에서 call되어서 motion tracking 기능을 수행한다.
그 외에도 어플리케이션의 종료나 화면 꺼진 방지의 기능도 하는 것으로 보인다.
3. 빌드
이렇게 HelloAR의 코드를 조금 살펴보았다. 이제 HelloAR 예제를 빌드해보도록 할 것이다.
이 글을 작성할때는 유니티 2019.2.8f1 버전을 이용하였다.
우선, 앞 포스트와 같이 빌드 설정을 해준다.
보통 유니티에서 빌드할 땐 File > Build Settings > Add Open Scenes > Build 버튼을 눌러 apk 파일을 만들 수 있다.

그런데 왜인지 Gradle에서 에러가 생겼었다.


gradle의 버전 문제인 것으로 보이는데, 그래서 안드로이드 스튜디오를 이용해 빌드를 해보기로 했다.

우측 사진과 같이 Export Project를 체크하면 Build 버튼이 Export로 바뀐다. Export를 클릭하면 Android Studio에서 내보내기 한 해당 파일을 열 수 있다.
안드로이드 스튜디오에서 Open...(Open File or Project) 를 통해 유니티에서 내보낸 프로젝트 폴더를 찾아, 연다.
그 후 안드로이드 스튜디오에서 Build > Build Bundle(s) / APK(s) > Build APK(s) 를 클릭해 빌드할 수 있다.
이 경우 혹시 Mssing Package와 관련된 에러가 뜬다면 아래의 링크를 참고하기를 바란다. 유니티 버전에 따라 gradle 설정을 바꿔줄 필요가 있다.
https://developers.google.com/ar/develop/unity/android-11-build
Build for Android 11 with Unity | ARCore | Google Developers
또한 sdk, gradle 등의 경로에 이상이 생긴다면 아래의 글을 참고하여 해결할 수 있다.
How to fix "JAVA_HOME environment references a directory" in unity3d
I have a problem showed on this screenshot - https://imgur.com/a/VGHrpVV The problem has appeared when I imported GoogleMobileAds package to insert AdMob ads to my project. I tried to create 2 local
stackoverflow.com
영어로 되어있기에 기회가 된다면 한글로 풀어서 설명해보도록 하겠다.

이렇게 만들어진 apk파일을 핸드폰에서 실행해볼 수 있다.
우측 사진과 같이 평면이 인식되고, 터치한 위치에 오브젝트가 생성되는 것을 확인할 수 있다.
다음 포스트부터는 오늘 보았던 HelloAR을 기반으로 하여 AR ruler를 만들어보도록 하겠다.
이 포스트는 상황에 따라 추후 업데이트 될 수 있다.
-작성일: 2020.11.26
-2020.12.02 하단 연관 포스트 추가
-Last Updated: 2022.06.29 코드를 Github Gist로 변경
연관 포스트
'💻기타 프로젝트 > 🚛BARO_AR Ruler' 카테고리의 다른 글
| AR Foundation으로 Virtual Ruler 구현하기 (0) | 2021.05.17 |
|---|---|
| Virtual Ruler 중간정리 (0) | 2020.12.08 |
| 4. AR Ruler② (0) | 2020.11.26 |
| 3. AR Ruler① (0) | 2020.11.26 |
| 1. 유니티에서 ARCore 시작하기 (0) | 2020.11.26 |









