이 가이드에서는 Android XR용 Unity로 개발하는 방법을 간략하게 설명합니다. Android XR은 Unity에서 기대할 수 있는 익숙한 도구 및 기능과 함께 작동하며, Unity의 Android XR 지원은 OpenXR을 기반으로 빌드되므로 OpenXR 개요에 설명된 많은 기능이 Unity에서도 지원됩니다.
이 가이드를 따라 다음 사항을 알아보세요.
- Android XR용 Unity 지원
- Unity XR 기본사항
- Android XR용 앱 개발 및 게시
- Android XR용 Unity 패키지
- Unity OpenXR: Android XR 패키지
- Unity용 Android XR 확장 프로그램
- 기능 및 호환성 고려사항
- 입력 및 상호작용
Android XR용 Unity 지원
Android XR용 Unity 앱을 빌드할 때 최신 버전의 Unity 6에서 혼합 현실 도구와 기능을 활용할 수 있습니다. 여기에는 XR Interaction Toolkit, AR Foundation, OpenXR 플러그인을 사용하는 혼합 현실 템플릿이 포함되어 있어 빠르게 시작할 수 있습니다. Android XR용 Unity로 앱을 빌드할 때는 렌더링 파이프라인으로 범용 렌더 파이프라인 (URP)을, 그래픽 API로 Vulkan을 사용하는 것이 좋습니다. 이러한 기능을 사용하면 Vulkan에서만 지원되는 Unity의 일부 그래픽 기능을 활용할 수 있습니다. 이러한 설정을 구성하는 방법에 대한 자세한 내용은 프로젝트 설정 가이드를 참조하세요.
Unity XR 기본사항
Unity 또는 XR 개발을 처음 접하는 경우 Unity의 XR 설명서를 참고하여 기본 XR 개념과 워크플로를 이해할 수 있습니다. XR 설명서에는 다음 정보가 포함되어 있습니다.
- Unity OpenXR: Android XR 및 Unity용 Android XR 확장 프로그램을 비롯한 XR 제공업체 플러그인
- XR 지원 패키지: 추가 애플리케이션 수준 기능 추가
- Unity XR 기술 스택과 XR 하위 시스템을 설명하는 XR 아키텍처 가이드
- XR 프로젝트 설정
- XR 앱 빌드 및 실행
- XR 그래픽 안내(범용 렌더링 파이프라인, 스테레오 렌더링, 포비티드 렌더링, 멀티뷰 렌더링 영역, VR 프레임 시간 포함)
- 오디오 공간화 도구 지원을 포함한 XR 오디오 가이드
Android 앱 개발 및 게시
Unity는 Android용 개발, 빌드, 게시를 위한 심층적인 문서를 제공하며, 여기에는 Unity의 Android 권한, Android 빌드 설정, Android용 앱 빌드, Google Play에 전송과 같은 주제가 포함됩니다.
Android XR용 Unity 패키지
Android XR용 Unity 앱 빌드를 지원하는 패키지는 두 가지가 있습니다. 두 패키지 모두 XR 제공업체 플러그인이며 Unity의 XR 플러그인 관리 패키지를 통해 사용 설정할 수 있습니다. XR 플러그인 관리자는 XR 플러그인의 로드, 초기화, 설정, 빌드 지원을 관리하고 지원하기 위한 프로젝트 설정을 추가합니다. 앱이 런타임에 OpenXR 기능을 실행하도록 허용하려면 프로젝트에서 플러그인 관리자를 통해 이러한 기능을 사용 설정해야 합니다.
이 이미지는 Unity 편집기를 통해 이러한 기능 그룹을 사용 설정할 수 있는 위치의 예를 보여줍니다.

Unity OpenXR Android XR
Unity OpenXR Android XR 패키지는 Unity에 Android XR 지원을 추가하는 XR 플러그인입니다. 이 XR 플러그인은 Unity를 위한 대부분의 Android XR 지원을 제공하며 AR Foundation 프로젝트에 Android XR 기기 지원을 사용 설정합니다. AR Foundation은 AR 또는 혼합 현실 환경을 만들려는 개발자를 위해 설계되었습니다. AR 기능의 인터페이스를 제공하지만 자체적으로 기능을 구현하지는 않습니다. Unity OpenXR Android XR 패키지가 구현을 제공합니다. 이 패키지를 시작하려면 시작 가이드가 포함된 패키지 설명서를 확인하세요.
Unity용 Android XR 확장 프로그램
Unity용 Android XR 확장 프로그램은 Unity OpenXR Android XR 패키지를 보완하며 몰입형 환경을 빌드하는 데 도움이 되는 추가 기능을 포함합니다. 단독으로 사용하거나 Unity OpenXR Android XR 패키지와 함께 사용할 수 있습니다.
이 패키지를 시작하려면 프로젝트 설정 가이드 또는 Unity용 Android XR 확장 프로그램 가져오기 빠른 시작을 따르세요.
기능 및 호환성 고려사항
다음 표에서는 Unity OpenXR: Android XR 패키지와 Unity용 Android XR 확장 프로그램 패키지에서 지원하는 기능을 설명하며, 필요한 기능이 포함된 패키지와 호환성 고려사항을 확인하는 데 사용할 수 있습니다.
기능 |
Unity OpenXR: Android XR 기능 문자열 |
Unity용 Android XR 확장 프로그램 기능 문자열 |
사용 사례 및 예상 동작 |
|---|---|---|---|
Android XR: AR 세션
|
Android XR (확장 프로그램): 세션 관리
|
두 패키지의 기능을 사용하려면 해당 패키지의 AR 세션 기능을 사용 설정해야 합니다. 두 기능 세트를 동시에 사용 설정할 수 있으며, 개별 기능은 충돌을 적절하게 처리합니다. |
|
해당 사항 없음 |
해당 사항 없음 |
기기 추적은 실제 공간에서 기기의 위치와 회전을 추적하는 데 사용됩니다. XR Origin GameObject는 XROrigin 구성요소와 GameObject 계층 구조를 카메라 및 TrackedPoseDriver와 함께 사용하여 기기 추적 및 추적 가능한 항목을 Unity의 좌표계로 변환하는 작업을 자동으로 처리합니다. |
|
Android XR: AR 카메라 |
해당 사항 없음 |
이 기능은 조명 추정 및 전체 화면 패스 스루를 지원합니다. |
|
Android XR: AR 평면 |
해당 사항 없음 |
이 기능은 실제 환경에서 평평한 표면을 감지하고 추적하는 기능을 지원합니다. |
|
해당 사항 없음 |
Android XR (확장 프로그램): 객체 추적 |
이 기능은 참조 객체 라이브러리와 함께 사용되어 실제 환경에서 객체를 감지하고 추적하는 기능을 지원합니다. |
|
Android XR: AR 페이스
|
Android XR: 얼굴 추적
|
아바타 눈 지원은 Android XR: AR Face 기능을 통해 제공됩니다. Android XR: 얼굴 추적 기능을 통해 사용자의 얼굴 표정에 액세스합니다. 이 두 기능은 함께 사용할 수 있습니다. |
|
Android XR: AR 레이캐스트
|
해당 사항 없음 |
이 기능을 사용하면 광선을 투사하고 물리적 환경에서 감지된 평면 추적 가능 항목 또는 깊이 추적 가능 항목과 광선 사이의 교차점을 계산할 수 있습니다. |
|
Android XR: AR 앵커 |
해당 사항 없음 |
AR 앵커는 AR Foundation을 통해 공간, 평면, 영구 앵커를 지원합니다. |
|
Android XR: AR 오클루전
|
해당 사항 없음 |
오클루전을 사용하면 앱의 혼합 현실 콘텐츠가 실제 환경의 객체 뒤에 숨겨지거나 부분적으로 가려진 상태로 표시될 수 있습니다. |
|
실적 측정항목 |
Android XR 실적 측정항목 |
해당 사항 없음 |
이 기능을 사용하여 Android XR 기기의 실적 측정항목에 액세스합니다. |
컴포지션 레이어 지원 (OpenXR 플러그인 및 XR 컴포지션 레이어 필요) |
Android XR: 패스스루 컴포지션 레이어
|
Unity의 컴포지션 레이어 지원을 사용하여 기본 컴포지션 레이어 (예: 쿼드, 실린더, 프로젝션)를 만듭니다. Android XR: 패스스루 컴포지션 레이어를 사용하여 Unity의 GameObject에서 읽는 커스텀 메시로 패스스루 레이어를 만들 수 있습니다. |
|
포비티드 렌더링 (OpenXR 플러그인 필요)
|
포비에이션 (기존) |
포비티드 렌더링을 사용하면 사용자의 주변 시야에 있는 영역의 해상도를 낮춰 렌더링 속도를 높일 수 있습니다. Unity의 포비티드 렌더링 기능은 URP 및 Vulkan을 사용하는 앱에서만 지원됩니다. Unity용 Android XR 확장 프로그램의 포비에이션 (기존) 기능은 기본 제공 렌더 파이프라인과 OpenGL ES도 지원합니다. 가능하면 Unity의 포비티드 렌더링 기능을 사용하는 것이 좋습니다. Android XR용으로 빌드할 때는 URP와 Vulkan을 모두 사용하는 것이 좋습니다. |
|
해당 사항 없음 |
이 기능은 XRInputSubsystem 추적 원점 모드를 Unbounded로 설정합니다. Unbounded는 XRInputSubsystem이 변경될 수 있는 월드 앵커와 관련하여 모든 InputDevice를 추적함을 나타냅니다. |
||
해당 사항 없음 |
환경 혼합 모드 |
이 기능을 사용하면 XR 환경 혼합 모드를 설정할 수 있습니다. 이 모드는 패스 스루가 사용 설정된 경우 가상 이미지가 실제 환경과 혼합되는 방식을 제어합니다. |
|
해당 사항 없음 |
|
||
해당 사항 없음 |
클라우드 지원 서비스에 대한 세션 인증 구성 전략 (API 키, 키리스, 인증 토큰)을 제공합니다. |
||
해당 사항 없음 |
구성 가능한 멀티모달 얼굴 추적 방식 ( |
||
해당 사항 없음 |
|
||
Android XR: AR 카메라 |
해당 사항 없음 |
Unity의 ARCameraFeature를 사용하여 실제 패스 스루 디밍 수준을 쿼리하고 설정할 수 있습니다. |
|
해당 사항 없음 |
|
||
해당 사항 없음 |
|
||
Android XR: AR 경계 상자 |
OpenXR Spatial Entities 프레임워크 ( |
||
해당 사항 없음 |
|
||
해당 사항 없음 |
애플리케이션 콘텐츠를 전체 공간 모드에서 시스템 관리 3D 볼륨 컨테이너 내에 렌더링할 수 있도록 허용하며, |
입력 및 상호작용
Android XR은 멀티모달 자연 입력을 지원합니다.
손 및 눈 추적 외에도 6DoF 컨트롤러, 마우스, 실물 키보드와 같은 주변기기도 지원됩니다. 즉, Android XR용 앱은 손 상호작용을 지원해야 하며 모든 기기에 컨트롤러가 함께 제공된다고 가정할 수 없습니다.
상호작용 프로필
Unity는 상호작용 프로필을 사용하여 XR 애플리케이션이 다양한 XR 기기 및 플랫폼과 통신하는 방식을 관리합니다. 이러한 프로필은 다양한 하드웨어 구성에 예상되는 입력과 출력을 설정하여 다양한 플랫폼에서 호환성과 일관된 기능을 촉진합니다. 상호작용 프로필을 사용 설정하면 XR 애플리케이션이 다양한 기기에서 올바르게 작동하고, 일관된 입력 매핑을 유지하며, 특정 XR 기능에 액세스할 수 있습니다. 상호작용 프로필을 설정하려면 다음 안내를 따르세요.
- Project Settings(프로젝트 설정) 창을 엽니다(메뉴: Edit > Project Settings(수정 > 프로젝트 설정)).
- XR Plug-in Management를 클릭하여 플러그인 섹션을 펼칩니다 (필요한 경우).
- XR 플러그인 목록에서 OpenXR을 선택합니다.
- 상호작용 프로필 섹션에서 + 버튼을 선택하여 프로필을 추가합니다.
- 목록에서 추가할 프로필을 선택합니다.
손 상호작용
손 상호작용 (XR_EXT_hand_interaction)은 OpenXR 플러그인에서 제공하며, 손 상호작용 프로필을 사용 설정하여 Unity 입력 시스템에서 <HandInteraction> 기기 레이아웃을 노출할 수 있습니다. OpenXR에서 정의한 네 가지 작업 포즈('pinch', 'poke', 'aim', 'grip')에서 지원하는 손 입력에 이 상호작용 프로필을 사용합니다. 추가 손 상호작용 또는 핸드 트래킹 기능이 필요한 경우 이 페이지의 XR Hands를 참고하세요.
시선 상호작용
시선 상호작용 (XR_EXT_eye_gaze_interaction)은 OpenXR 플러그인에서 제공되며, 이 레이아웃을 사용하여 확장 프로그램에서 반환하는 눈 포즈 데이터 (위치 및 회전)를 가져올 수 있습니다. OpenXR 입력 가이드에서 시선 상호작용에 관해 자세히 알아보세요.
컨트롤러 상호작용
Android XR은 6DoF 컨트롤러에 Oculus Touch 컨트롤러 프로필을 지원합니다. 두 프로필 모두 OpenXR 플러그인에서 제공됩니다.
마우스 상호작용
Android XR 마우스 상호작용 프로필 (XR_ANDROID_mouse_interaction)은 Unity용 Android XR 확장 프로그램에서 제공됩니다. Unity 입력 시스템에서 <AndroidXRMouse> 기기 레이아웃을 노출합니다.
손바닥 포즈 상호작용
OpenXR 플러그인은 손바닥 포즈 상호작용 (XR_EXT_palm_pose)을 지원하며, 이는 Unity 입력 시스템 내에서 <PalmPose> 레이아웃을 노출합니다.
손바닥 포즈는 더 복잡한 사용 사례를 위해 핸드 트래킹을 실행하는 확장 프로그램이나 패키지의 대안이 아닙니다. 대신 아바타 시각 요소와 같은 앱별 시각적 콘텐츠를 배치하는 데 사용할 수 있습니다. 손바닥 포즈는 손바닥 위치와 방향으로 구성됩니다.
XR Hands
XR Hands 패키지를 사용하면 XR_EXT_hand_tracking 및 XR_FB_hand_tracking_aim를 사용하여 핸드 트래킹 데이터에 액세스할 수 있으며, 핸드 트래킹의 손 관절 데이터를 입력 포즈로 변환하는 래퍼를 제공합니다. XR Hands 패키지에서 제공하는 기능을 사용하려면 Hand Tracking Subsystem 및 Meta Hand Tracking Aim OpenXR 기능을 사용 설정합니다.
XR hands 패키지는 더 세분화된 손 자세 또는 손 관절 데이터가 필요하거나 맞춤 동작을 사용해야 하는 경우에 유용할 수 있습니다.
자세한 내용은 Unity의 프로젝트에서 XR Hands 설정에 관한 문서를 참고하세요.
얼굴 추적 신뢰도 영역
XR_ANDROID_face_tracking 확장 프로그램은 왼쪽 상단, 오른쪽 상단, 얼굴 하단 등 세 가지 얼굴 영역에 대한 신뢰도 값을 제공합니다. 이 값은 0 (신뢰도 없음)에서 1 (최고 신뢰도) 사이이며 각 영역의 얼굴 추적 정확도를 나타냅니다.
이러한 신뢰도 값을 사용하여 블렌드셰이프를 점진적으로 사용 중지하거나 해당 얼굴 영역에 시각적 필터 (예: 블러 처리)를 적용할 수 있습니다. 기본의 경우 해당 얼굴 영역에서 블렌드셰이프를 비활성화합니다.
'얼굴 하단' 영역은 입, 턱, 뺨, 코를 포함하여 눈 아래의 모든 부분을 나타냅니다. 두 개의 상단 영역에는 얼굴의 왼쪽과 오른쪽에 있는 눈과 눈썹 영역이 포함됩니다.
다음 C# 코드 스니펫은 Unity 스크립트에서 신뢰도 데이터에 액세스하고 사용하는 방법을 보여줍니다.
using UnityEngine;
using Google.XR.Extensions;
public class FaceTrackingConfidence : MonoBehaviour
{
void Update()
{
if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
{
DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
return;
}
else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
{
DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
return;
}
for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
{
switch (x)
{
case (int)XRFaceConfidenceRegion.Lower:
regionText = "Bottom";
break;
case (int)XRFaceConfidenceRegion.LeftUpper:
regionText = DebugTextConfidenceLeft;
break;
case (int)XRFaceConfidenceRegion.RightUpper:
regionText = DebugTextConfidenceRight;
break;
}
}
}
자세한 내용은 Unity용 Android XR 확장 프로그램 문서를 참고하세요.
손을 렌더링하는 방법 선택
Android XR은 손을 렌더링하는 두 가지 방법, 즉 손 메시와 프리팹 시각화 도구를 지원합니다.
손 메시
Android XR Unity 패키지에는 XR_ANDROID_hand_mesh extension에 대한 액세스를 제공하는 손 메시 기능이 포함되어 있습니다. 손 메시 기능은 사용자의 손에 메시를 제공합니다. 손 메시에는 손의 도형을 나타내는 삼각형의 꼭짓점이 포함됩니다. 이 기능은 시각화를 위해 사용자의 손의 실제 기하학적 구조를 나타내는 맞춤설정된 메시를 제공하는 데 사용됩니다.
XR Hands 프리팹
XR Hands 패키지에는 Hands visualizer라는 샘플이 포함되어 있습니다. 이 샘플에는 사용자의 손을 상황에 맞게 렌더링하기 위해 완전히 리깅된 왼손과 오른손이 포함되어 있습니다.
시스템 동작
Android XR에는 사용자가 뒤로 이동하거나, 런처를 열거나, 실행 중인 앱의 개요를 확인할 수 있는 메뉴를 여는 시스템 동작이 포함되어 있습니다. 사용자는 주로 사용하는 손으로 핀치하여 이 시스템 메뉴를 활성화할 수 있습니다.
사용자가 시스템 탐색 메뉴와 상호작용하는 경우 애플리케이션은 헤드 트래킹 이벤트에만 응답합니다. XR Hands 패키지는 사용자가 이 시스템 탐색 메뉴와 상호작용하는 등의 특정 작업을 수행할 때 이를 감지할 수 있습니다. AimFlags, SystemGesture, DominantHand를 확인하면 이 시스템 작업이 수행되는 시점을 알 수 있습니다. AimFlags에 관한 자세한 내용은 Unity의 Enum MetaAimFlags 문서를 참고하세요.
XR Interaction Toolkit
XR Interaction Toolkit 패키지는 VR 및 AR 환경을 만들기 위한 고급 구성요소 기반 상호작용 시스템입니다. Unity 입력 이벤트에서 3D 및 UI 상호작용을 사용할 수 있는 프레임워크를 제공합니다. 햅틱 반응, 시각적 피드백, 이동을 비롯한 상호작용 작업을 지원합니다.
OpenXR™ 및 OpenXR 로고는 The Khronos Group Inc. 소유의 상표이며 중국, 유럽 연합, 일본, 영국에서 상표로 등록되어 있습니다.