이 블로그는 애드센스 수익으로 운영되고 있습니다.
광고차단앱을 해제해주시면 블로그 운영에 큰 도움이 됩니다.
Please disable Adblock?
본문 바로가기
정보, 기술/개발 모음

ARCore 시작부터 테스트 앱 빌드까지! | 유니티(Unity)

by 킨쨩 2020. 12. 17.
반응형

ARCore 시작부터 테스트 앱 빌드까지! | 유니티(Unity)

 최근 내가 듣는 도쿄대 대학원의 한 수업에서는, 로봇공학과 관련된 지식을 기반으로 직접 프로젝트를 진행해서 어떠한 결과물을 내놓아야하는 수업이이 있다. 이참에 배워보고 싶었던 언리얼 엔진을 사용해서 6자유도 로봇을 만들어보려고 했지만, 어영부영하는 사이에 시간이 너무 많이 흘러서, 약간 목표를 하향 조정해서 유니티로, 스카라 로봇을 제작해보게 되었다. 자세한 코드를 직접 공유하기 보다는, 몇가지 내가 한 삽질들을 공유해볼 생각으로 본 게시글을 적어보게 되었다.


참고용 실제 제작 환경

ARCore를 이용해서, 안드로이드에 앱 형태(APK)로 결과물을 제작해볼 생각이다. 위에서 말했다시피, 언리얼 엔진을 하려다가 시간이 없어서 일단 유니티로 제작하게 되었다.

  • 유니티(unity) : 19.4 LTS(2019.4.16f1) 버전
  • 스마트폰 : 갤럭시 s8(일본 AU판)
  • ARCore SDK for Unity : 1.21.0 
  • 안드로이드 스튜디오 : 적당히 최신버전 (어짜피 패키지 관리자만 쓴다)
  • 컴퓨터 : 윈도우 10 64bit 노트북 사용(XPS 13 7390 i7, 4K)
  • 케이블 : usb A to C 케이블 사용

 참고로 구글링을 해보면 된다고 검증된 1~2년 이상의 글들이 상당히 많다. 혹시 잘 안 되서 이 글을 읽으러 온 사람이라면, 제일 쉬운 방법으로는 된다고 이미 여러사람들에게 검증된 구버전의 유니티와 ARCore를 다른 사람들의 세팅과 같게 맞춰서 돌리는 것이다. 19.4 버전이 된다는 글은 없었지만, 나는 굉장한 시행착오를 거치면서 이것저것 해보게 되었다. 참고로 아래의 메뉴의 버튼이나 위치, 항목은 버전에 따라서 달라지는 경우가 많으니 나처럼 검증 안된 버전을 써보려고 하면 굉장한 삽질이 필요하게 될 수 있음을 주의하자. 

 

 어쨋든 지금은 19.4 버전도 아래의 세팅대로 따라하면 된다는 건 확실하다. 다만, 스마트폰의 경우 가능하면 아래의 링크(2020.12.17확인)에 등록되어있는 안드로이드 기기를 준비하도록 하자.

 

ARCore overview  |  Google Developers

ARCore is Google’s platform for building augmented reality experiences. Using different APIs, ARCore enables your phone to sense its environment, understand the world and interact with information. Some of the APIs are available across Android and iOS to

developers.google.com

 이제부터 아래에 어떤 순서대로 어떤 조치를 취해야하는 지를 정리해보도록 하겠다. 정확하게 순서까지 지키지 않으면 작동이 되지 않는 경우도 종종 있다. 혹시 그렇게 되었다면. 다시 처음부터 설치하면 잘 될 것이다. 

 혹시 ARCore의 임포트 중에 오류가 발생하였을 경우에는, 임포트한 것들을 삭제한 뒤 다시 임포트를 해도 제대로 작동하지 않았기에, 새로운 프로젝트를 작성한 뒤 다시 처음부터 하도록 하자.


작업 환경 세팅하기

1 unity 설치.

Unity hub를 통해서 설치하는 것을 추천한다.  일단 최근의 버전들은 모두 지원하는 듯하지만, 위에서도 말한듯이 나의 경우, 19.4 LTS(2019.4.16f1)를 사용하였다.

설치할 때에는 다음의 모듈들을 잊지말고 설치해주기 바란다. 

  • Microsoft Visual Studio Community 2019
  • Android build support
  • Documentation
  • (필요에 따라) 일본어, 한국어

이미 유니티가 설치되어 있다면, Add modules를 통해서 위의 모듈들을 추가로 설치해주도록 하자.

2. Android studio 설치

특정 버전을 요구하는 얼리언 엔진과는 다르게, 그냥 최신버전으로 다운 받아주면된다. 아래의 3번의 sdk를 직접 설치할 생각인 사람은 굳이 다운 받지 않아도 되지만, 쉽게 쉽게 하기 위해서 설치를 추천한다. 구버전도 크게 문제는 없지만 자신의 작업환경에 맡게 적당히 다운 받자.

3.Android sdk 설치

Android studio에서

File - settings - Appearance & behavior - System settings - Android SDK 

로 들어간다.

이후, Android 7.0(Nougat)부터 최신 버전까지를 모두 체크한 뒤, Apply를 눌러서 이후 나타나는 설치창의 지시에 따라서 SDK를 설치해준다. 덤으로 SDK의 설치되는 장소를 확인해둔다.

4. ARCore 패키지 다운로드

ARCore SDK for Unity를 아래의 링크(2020.12.17 확인)에서 최신버전으로 다운 받으면 된다.  참고로 나의 경우, 1.21.0 버전이다.

 

SDK Downloads  |  ARCore  |  Google Developers

 이로써 미리 다운로드, 설치해야할 것들은 끝났다. 하지만, 한가지 더 확인해둬야하는 것이 있다. 바로 핸드폰이 제대로 컴퓨터와 연결이 되는가 이다.

5. 핸드폰을 안드로이드 스튜디오에서 인식시켜본다.

  1. 핸드폰의 설정 - ...(핸드폰 기종에 따라 약간 다르다) - 휴대전화 정보(또는 소프트웨어 정보) - 빌드 번호
  2. 빌드 번호를 7번 눌러주면 개발자 옵션이 활성화 된다.
  3. Usb 디버깅을 활성화 시켜준다.
  4. 핸드폰과 맥북/윈도우 기기 등등에 연결해본다.
  5. 연결 이후, 혹시 모르니 핸드폰의 usb 구성(설정)에서 USB 사용 용도를 파일전송(PTP, MTP) 등등으로 설정한다.

맥북의 경우, android file transfer라는 프로그램의 설치가 필요할 수 있다.
윈도우의 경우, 별도의 드라이버 설치가 필요할 수 있다.

해당 사진처럼 내 기기가 표시되면 성공이다.


유니티 내부 세팅하기

6. 유니티 프로젝트 만들기

템플릿은 3D, 적당한 이름과 경로를 설정해서 만들어준다.

7. 유니티에서 특정 패키지 인스톨하기

  1. 유니티의 프로젝트가 열린 이후 
  2. Windows - Package Manager 를 열어준다. 
  3. 잠시 로딩이 끝나는 것을 기다려준다.
  4. Multiplayer HLAPI를 install해준다.
  5. XR Legacy Input Helper를 install해준다.

8. Player 설정 적용하기

  1. File - build settings
  2. 에서 안드로이드를 선택한 뒤, switch platform을 눌러 준다.
  3. 잠시 기다린다. 
  4. File - build settings - player settings - 안드로이드 탭 - other settings 
  5. 패키지 이름과 회사명을 적당히 바꿔주도록 하자. 가능하면 영어로.
  6. 다음 항목에 체크 넣기
    Auto Graphic API
    Static Batching
  7. 다음 항목에 체크 빼기
    Multithreaded Rendering*
  8. Minimum API level을 최소 Android 7.0 'nougat' (API level 24)이상으로 세팅한다. (저거 보다 높은 레벨로 자신의 핸드폰에 맞게 세팅해주면 된다.)
  9. Scripting backend를 IL2CPP로 설정해준다.
  10. Target Architectures 를 ARMv7 에서 ARM64로 체크를 옮겨준다.
  11. File - build settings - player settings - 안드로이드 탭 - XR settings
  12. ARCore Supported에 체크를 넣어 준다.
  13. File - build settings - player settings - 안드로이드 탭 - Publishing settings
  14. Custom main grade template, custom launcher grade template 에 각각 체크를 넣어준다.

9.ARCore 임포트하기

  1. Assets - Import package - Custom package
  2. 아까 다운받은 ARCore SDK for Unity를 임포트 해준다.
  3. 기본적으로 전부 다 임포트하면 되는데, 예제 같은건 빼도 큰 문제는 없을 것이다.

여기까지가 유니티 내부에서의 세팅이다. 드디어 ARCore를 사용하기 위한 세팅이 끝났다.


테스트용 앱 작성하기

 약간의 유니티에 대한 지식이 없다면 이해하는 데 지장이 있을 수 있다. 향후 그러한 유니티의 필수 지식에 대해서 정리해볼 기회가 있었으면 좋겠다.

10. AR앱 기초 세팅하기

  1. 가장 먼저, Hierachy의 Main camera와 Directional light를 삭제해준다.
  2. 프로젝트 메뉴의 Assets/GoogleARCore/Prefabs/에서 ARCore Device, Environmental Light라는 Prefab을 가져오도록 하자.
  3. ARCore Deviced의 경우, 위치가 (0,0,0)이 되어 있도록 설정하자. (일반적으로 디폴트 값이긴 하다.)
  4. Hierachy의 빈 공간을 우클릭하거나 GameObject 메뉴에서,
  5. UI-EventSystem를 눌러서 하나 추가해주도록 하자.

11. 테스트용 스크립트를 작성하자

  1. Hierachy의 빈 공간을 우클릭하거나 GameObject 메뉴에서, Create Empty를 이용해서 요소를 하나 만들어주자.
  2. 이름을 SceneController로 변경한다.
  3. Project의 적당한 공간에서 우클릭을 한 뒤, Create - C # Script 를 누른 뒤, 이름을 SceneController로 설정한 빈 스크립트를 생성한다.
  4. 생성된 스크립트를 더블 클릭으로 열어본다.
  5. 맨 윗줄에 using GoogleARCore;를 추가해준다. (아래를 참고하자)
  6. public class SceneController : MonoBehaviour 가 다음과 같은 형태가 되도록, void QuitOnConnectionErrors() 등등을 복붙해준다.(아래를 참고하자)
  7. 저장해준다.
using GoogleARCore;
public class SceneController : MonoBehaviour
{
    void QuitOnConnectionErrors()
    {
        if (Session.Status == SessionStatus.ErrorPermissionNotGranted)
        {
            StartCoroutine(CodelabUtils.ToastAndExit(
                "Camera permission is needed to run this application.", 5));
        }
        else if (Session.Status.IsError())
        {
            // This covers a variety of errors.  See reference for details
            // https://developers.google.com/ar/reference/unity/namespace/GoogleARCore
            StartCoroutine(CodelabUtils.ToastAndExit(
                "ARCore encountered a problem connecting. Please restart the app.", 5));
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        QuitOnConnectionErrors();
    }

    // Update is called once per frame
    void Update()
    {
        // The session status must be Tracking in order to access the Frame.
        if (Session.Status != SessionStatus.Tracking)
        {
            int lostTrackingSleepTimeout = 15;
            Screen.sleepTimeout = lostTrackingSleepTimeout;
            return;
        }
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }
}

 별다른 기능은 없지만, 카메라 권한을 요구하는 스크립트이다. 여기까지 따라왔다면 테스트용 앱 작성이 끝났다.


직접 스마트폰에서 앱 빌드 및 확인하기!

12. 앱 빌드 및 기기에서 실행해보기.

  1. File - build settings - android
  2. Build and run을 눌러준다.
  3. 적당히 경로를 지정하고, 파일 이름을 정해준뒤 Save를 눌러준다.
  4. Resolution succeeded라는 메세지가 표시된다면 ok를 눌러준다. 여러번 표시될 수 있으니 잘 지켜보고 있다.
  5. 참을성을 가지고 기다려 준다. (오류가 표시된다면 아래의 링크를 참고하도록 하자.)
  6. 조금 기다려준 뒤, 빌드가 끝났다면 usb케이블로 연결된 핸드폰을 꺼내보도록 하자.
  7. Made with unity 라는 화면 이후에, 권한을 주겠냐는 메세지가 나타난다. 이후 카메라만 나오고 그 외에는 아무것도 나오지 않는 다면 빌드 성공이다!

오른쪽 사진은 Plane 인식까지 진행했을 때의 모습으로, 실제로는 그냥 카메라만 보이게 된다.

13. 앱 종료하기


전체 화면이 되었고, 아직 UI를 만들지 않았기에, 뒤로가기 버튼 등등이 보이지 않을 것이다.
홈 버튼 쪽에서 손가락으로 살짝 위로 터치하면서 쓸어주면 메뉴가 나타나는데, 이를 이용해서 종료해주면 된다.

 축하한다! 이제 확실하게 ARCore를 사용해서 유니티를 통해서 안드로이드 앱을 개발할 수 있는 환경을 갖추는데 성공했다. 참고로 중간에 발생할 수 있는 오류들이 있는데, 이 포스팅이 너무 길었기에 분리하여서 포스팅을 해두도록 할테니 참고하도록 하자.

 

ARCore 관련 Unity 에러 해결하기! | 유니티(Unity)

ARCore 관련 Unity 에러 해결하기! | 유니티(Unity)  이번 게시글에서는 내가 직접 ARCore 환경을 갖추는 과정에서 겪었던 오류들에 관해서 정리해보도록 하겠다. 참고로 아래에 있는 것과 다른 오

kin-archive.tistory.com

 

참고용 원본

developers.google.com/ar/develop/unity/instant-preview

 

Using Instant Preview  |  ARCore  |  Google Developers

codelabs.developers.google.com/codelabs/arcore-intro/index.html?index=..%2F..%2Fio2018#0


요약

 이번 게시글에서는 확실하게 성공한 버전에 대한 정보들을 공유한 뒤, 작업 환경으로써 프로그램들을 세팅하고, 유니티 프로젝트에서 필요한 세팅과 ARCore의 임포트를 행한 뒤,  정상 작동이 되는 지 확인 할 수 있는 테스트 앱을 작성하고, 실제 테스트까지 행해보았다. 

 구체적인 활용 방법이나, 내용 등등은 담고 있지 않기에 별 생각 없이 배워볼까하는 사람들에게는 크게 도움이 안될지도 모르지만, 무엇을 만들고 싶은지 확실하게 인식하고 있는 사람들에게는 개발 환경을 갖추는 데 매우 도움이 될거라고 믿고 있다. 다들 유니티로 재밌고 즐겁게 AR개발을 즐겨보도록 하길 바라며 이 글을 마친다.

밑에 공감 버튼 한 번씩 클릭 부탁드립니다! 
내용에 관한 질문이나 의견이 있다면 댓글로 남겨주세요.

인스타: @initial_dongsik

크라우드픽: @Gehdtlr2547

 

일본 유학 KIN쨩 작가 - 크라우드픽의 사진, 이미지, 일러스트, 캘리그라피

저작권 걱정 없는 상업용 이미지 서비스 크라우드픽에서 일본 유학 KIN쨩 작가의 이미지를 무료로 사용해보세요

www.crowdpic.net

Copyright 2020 KIN All rights reserved. 
KIN

 

반응형

댓글