방법

Unity 및 Android XR 시작하기

전문 길이: 6분
Luke Hopkins
개발자 관계팀 엔지니어, Android

Android XR로 구동되는 Samsung Galaxy XR이 출시되었습니다. 이 블로그 게시물은 Android XR Spotlight Week의 일환으로 작성되었으며, 이 기간 동안 Android XR용 앱을 학습, 빌드, 준비하는 데 도움이 되는 리소스(블로그 게시물, 동영상, 샘플 코드 등)가 제공됩니다. 

지금이야말로 XR 개발을 시작하기에 가장 적절한 시기입니다. 지난해 12월 Google은 OpenXR 및 Vulkan과 같은 개방형 표준을 기반으로 구축된 새로운 Android 플랫폼인 Android XR을 발표했습니다. 이를 통해 XR 개발이 그 어느 때보다 더 쉬워졌습니다.


Unity의 기존 XR 도구와 결합하면 강력하고 성숙한 개발 스택을 얻을 수 있습니다. 이를 통해 여러 기기에서 작동하는 XR 앱을 만들고 배포할 수 있습니다.

openxr_face_tracking2.webp

XR 개발 경험이 있든 없든 개발을 시작할 수 있도록 지원해 드립니다.

이 블로그에서는 Android XR 및 Unity 개발을 시작하는 방법을 알아봅니다. 환경을 구성하고, 패키지 생태계를 이해하고, 빌드를 시작하는 실용적인 단계에 중점을 둘 것입니다.

이 블로그를 마치면 다음 사항을 잘 이해하게 됩니다.

  • 패키지 생태계
  • 필수 설정 단계
  • 입력 방법
  • 개인 정보 보호 및 권한
  • 컴포지션 레이어

Android XR 개발용 Unity

크로스 플랫폼 호환성을 위해 Unity를 선택하여 한 번 빌드하고 Android XR 및 기타 XR 기기에 배포할 수 있습니다.

Unity를 사용하면 성숙한 XR 생태계와 도구를 활용할 수 있습니다. XR Interaction Toolkit, OpenXR 플러그인, XR 컴포지션 레이어, XR Hands와 같은 기존 패키지, XR 지원 구성요소와 템플릿이 가득한 광범위한 애셋 스토어, XR 시뮬레이션 및 테스트 도구가 이미 있습니다. 또한 지난 11월에 출시된 Unity 6의 개선된 URP (범용 렌더링 파이프라인) 성능, 향상된 Vulkan 그래픽 지원, 강화된 빌드 프로필을 활용할 수 있습니다.

다음은 할 수 있는 작업에 대한 아이디어를 얻을 수 있는 샘플 프로젝트입니다.

필수 설정: 개발 기본 사항

Unity 6 요구사항 및 설치

이전 버전에서는 Android XR을 지원하지 않으므로 앱을 만들려면 Unity 6가 필요합니다. 먼저 Unity Hub를 설치한 다음 이 단계에 따라 Android 빌드 지원 모듈이 포함된 Unity 6를 설치합니다.

unity6.png

Android XR 빌드 프로필: 구성 간소화

Unity 빌드 프로필은 플랫폼별 설정과 구성을 저장하는 프로젝트 애셋입니다. 따라서 여러 메뉴에서 15~20개의 서로 다른 설정을 수동으로 설정하는 대신 빌드 프로필을 사용하여 자동으로 설정할 수 있습니다.
자체 빌드 프로필을 만들 수 있지만 현재는 Google에서 만든 전용 Android XR 빌드 프로필을 사용하는 것이 좋습니다.

Unity 프로젝트에서 File > Build Profile을 선택하여 빌드 프로필을 선택할 수 있습니다. 자세한 안내는 Android XR 개발 워크플로 페이지를 참고하세요.

직접 변경한 후 새 빌드 프로필을 만들어 팀과 공유할 수 있습니다. 이렇게 하면 전반적으로 일관된 빌드 환경을 보장할 수 있습니다.

buildprofiles.png

이 단계를 완료하면 Android XR 기기용 APK를 빌드하고 실행할 수 있습니다.

그래픽 API: Vulkan이 중요한 이유

Android XR 빌드 프로필로 Unity 프로젝트를 설정한 후에는 먼저 Vulkan이 그래픽 API로 설정되어 있는지 확인하는 것이 좋습니다. Android XR은 Vulkan 우선 플랫폼으로 빌드됩니다. 2025년 3월 Google은 Vulkan이 이제 Android의 공식 그래픽 API라고 발표했습니다. 이는 개발자가 최신 GPU의 성능을 극대화하고 레이 트레이싱, 멀티 스레딩과 같은 고급 기능을 활용하여 현실적이고 몰입감 있는 게임 시각적 요소를 구현할 수 있도록 지원하는 최신 로우레벨 그래픽 API입니다.

이러한 표준은 기존 애플리케이션에 최적의 호환성을 제공하고 포팅 문제와 비용을 줄여줍니다. 또한 URP 애플리케이션 공간 워프, 시선 추적 렌더링과 같은 고급 Android XR 기능을 사용 설정할 수 있습니다. 

Unity 6에서는 Vulkan을 자동으로 처리하므로 Android XR 빌드 프로필을 사용하면 Unity에서 Vulkan을 그래픽 API로 구성합니다. 이렇게 하면 수동 구성 없이 모든 고급 Android XR 기능에 액세스할 수 있습니다.

'편집' > '프로젝트 설정' > '플레이어' > 'Android 탭' > '기타 설정' > '그래픽 API'로 이동하여 그래픽 API 설정을 확인할 수 있습니다.

appentrypoint.png

패키지 생태계 이해하기

Unity에서 Android XR에 사용할 수 있는 두 가지 패키지가 있습니다. 하나는 Unity용 Android XR 확장 프로그램을 사용하는 것이고 다른 하나는 Unity OpenXR: Android XR 패키지를 사용하는 것입니다.

동일한 내용처럼 들릴 수 있지만 잠시만 기다려 주세요.

Unity OpenXR: Android XR 패키지는 Android XR 지원을 위한 공식 Unity 패키지입니다. OpenXR 표준을 통해 제공되는 대부분의 Android XR 기능을 제공합니다. 또한 혼합 현실 기능을 위한 AR Foundation 통합도 지원합니다. Unity OpenXR: Android XR 패키지를 사용하면 XR 기기를 지원하는 통합 API를 제공한다는 주요 이점이 있습니다.


Unity용 Android XR 확장 프로그램은 Android XR 기기용 개발을 위해 특별히 설계된 Google의 XR 패키지입니다. 환경 혼합 모드, 장면 메싱, 이미지 추적, 신체 추적과 같은 추가 기능으로 Unity OpenXR 패키지를 보완합니다. 단점은 Android XR 기기용으로만 개발할 수 있다는 것입니다.


어떤 것을 선택할지는 구체적인 요구사항에 따라 다르지만 일반적으로 Unity OpenXR: Android XR을 사용하는 것이 좋습니다. 앱과 호환되는 기기에 훨씬 더 많은 유연성을 제공하기 때문입니다. 그런 다음 애플리케이션 요구사항에 따라 Unity용 Android XR 확장 프로그램을 추가할 수 있습니다.

패키지 설치 방법

새 패키지를 추가하려면 Unity에서 프로젝트를 연 상태로 'Window'(창) > 'Package Management'(패키지 관리) > 'Package Manager'(패키지 관리자)를 선택합니다.

여기에서 'Unity 레지스트리' 탭에서 다음 패키지를 설치할 수 있습니다.

packagemanager.png

➕ 아이콘을 선택하고 'git URL에서 패키지 설치'를 선택한 다음 'https://github.com/android/android-xr-unity-package.git'을 입력하여 GitHub를 통해 Android XR for Unity 패키지를 설치할 수 있습니다.

packagemanager2.png

필수 OpenXR 기능

이제 필요한 패키지가 설치되었으므로 프로젝트가 작동하도록 몇 가지 핵심 기능을 사용 설정해 보겠습니다.

'Edit' -> 'Project Settings' -> 'XR Plugin Management' -> Android를 클릭하고 OpenXR을 사용 설정을 통해 Android용 OpenXR 설정을 사용 설정할 수 있습니다.

xrpluginmgmt.png

다음으로 'Android XR 지원'을 사용 설정해야 합니다. 다른 OpenXR 기능은 필요에 따라 다루겠습니다. 지금은 Android XR 지원이 사용 설정되어야 합니다.

입력

Android XR은 손, 음성, 눈 추적, 키보드, 컨트롤러의 입력을 지원합니다. 시작하는 데 가장 적합한 프리팹이 포함되어 있으므로 XR Interaction ToolkitXR Hands를 설치하는 것이 좋습니다. 이러한 프리팹을 사용하면 앱에서 손과 컨트롤러를 지원하는 데 필요한 모든 것을 갖추게 됩니다.

xrinteractiontoolkit.png

XR Hands와 XR Interactive 툴킷이 모두 설치되면 스타터 애셋과 Hands Interaction Demo를 가져오는 것이 좋습니다. 그런 다음 손 상호작용Khronos Simple Controller 프로필을 사용 설정하고 손 추적 하위 시스템 및 Meta 손 추적 조준 기능을 사용 설정해야 합니다.

'수정' > '프로젝트 설정' > 'XR 플러그인 관리' > 'OpenXR'로 이동하여 이러한 설정을 수정할 수 있습니다.

profiles.png

또한 XR 공간에서 사용자의 위치와 방향을 나타내는 Unity의 프리팹인 XR Origin을 사용하는 것이 좋습니다. 여기에는 올바른 시점에서 XR 환경을 렌더링하는 데 필요한 카메라 리그와 추적 구성요소가 포함됩니다.

이 프리팹을 추가하는 가장 간단한 방법은 이전에 가져온 손 통합 데모에서 가져오는 것입니다. 이 데모는 'Hands Integration Toolkit' > 'Hand Interaction' > 'Prefabs' > 'XR Origin'에서 찾을 수 있습니다.

prefabs.png

게임 객체의 'XR Origin' 옵션 대신 이 Prefab을 사용하는 것이 좋습니다. 이 Prefab은 사용자 손과 컨트롤러 간에 자동으로 전환되는 XR Input Modality Manager를 사용하기 때문입니다. 이렇게 하면 손과 컨트롤러 간에 전환할 때 가장 성공적인 결과를 얻을 수 있습니다.

개인 정보 보호 및 권한: 사용자 신뢰 구축

무엇을 빌드하든 사용자로부터 런타임 권한을 캡처해야 합니다. 이는 장면 이해, 눈 추적, 얼굴 추적, 핸드 트래킹이 사용자에게 더 민감할 수 있는 데이터에 대한 액세스를 제공하기 때문입니다.

이러한 기능은 기존 데스크톱 또는 모바일 앱보다 더 자세한 개인 정보를 제공하므로 런타임 권한을 통해 사용자는 공유할 데이터를 완전히 제어할 수 있습니다. 따라서 Android의 보안 및 개인 정보 보호 정책을 준수하기 위해 Android XR에는 이러한 각 기능에 대한 권한이 있습니다.

예를 들어 맞춤 손동작에 XR Hands 패키지를 사용하는 경우 이 패키지에서 사용자의 손에 관한 많은 정보를 추적해야 하므로 핸드 트래킹 권한을 요청해야 합니다 (아래 참고). 여기에는 손 관절 포즈와 각속도 및 선형 속도 추적 등이 포함됩니다.

참고: 권한이 필요한 확장 프로그램의 전체 목록은 XR 개발자 웹사이트에서 확인하세요.

const string k_Permission = "android.permission.HAND_TRACKING";

#if UNITY_ANDROID
void Start()
{
    if (!Permission.HasUserAuthorizedPermission(k_Permission))
    {
        var callbacks = new PermissionCallbacks();
        callbacks.PermissionDenied += OnPermissionDenied;
        callbacks.PermissionGranted += OnPermissionGranted;
        
        Permission.RequestUserPermission(k_Permission, callbacks);
    }
}

void OnPermissionDenied(string permission)
{
    // handle denied permission
}


void OnPermissionGranted(string permission)
{
    // handle granted permission
}

#endif // UNITY_ANDROID

컴포지션 레이어로 시각적 품질 개선

컴포지션 레이어는 UI 요소를 렌더링하는 데 권장되는 방법입니다. 모든 항목이 플랫폼의 컴포지터에 직접 렌더링되므로 Unity의 표준 렌더링 파이프라인에 비해 훨씬 높은 품질로 요소를 표시할 수 있습니다.

예를 들어 텍스트를 표시하는 경우 표준 Unity 렌더링에서는 텍스트가 흐리고, 가장자리가 부드러우며, 시각적 아티팩트가 있을 가능성이 높습니다. 반면 컴포지션 레이어를 사용하면 텍스트가 더 선명해지고 윤곽선이 더 날카로워지며 전반적인 환경이 개선됩니다.


텍스트뿐만 아니라 동영상, 이미지, UI 요소도 훨씬 높은 품질로 렌더링합니다. 이는 런타임의 컴포지터 레이어에 대한 네이티브 지원을 활용하여 실행됩니다.

컴포지션 레이어를 사용 설정하려면 패키지 관리자를 열고 'Unity Register'를 선택한 다음 'XR Composition Layers'를 설치하세요.

빌드 및 실행

이제 OpenXR 패키지가 설치되고 기능이 사용 설정되었으므로 손과 머리 움직임을 위한 프리팹 설정을 사용하여 장면을 빌드하고 테스트를 위해 헤드셋에 직접 배포할 수 있습니다.

다음 단계: 기술 확장

이제 Android XR 개발 환경을 설정하고 주요 개념을 이해했으므로 XR 개발 여정을 계속하기 위한 다음 단계는 다음과 같습니다.

지속적인 학습을 위한 필수 리소스:

탐색할 샘플 프로젝트:

작성자:

계속 읽기