이 가이드에서는 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 패키지
- Android XR Extensions for Unity
- 기능 및 호환성 고려사항
- 입력 및 상호작용
Android XR용 Unity 지원
Android XR용 Unity 앱을 빌드할 때 최신 버전의 Unity 6에 있는 혼합 현실 도구와 기능을 활용할 수 있습니다. 여기에는 XR Interaction Toolkit, AR Foundation, OpenXR 플러그인을 사용하는 혼합 현실 템플릿이 포함되어 있어 빠르게 시작할 수 있습니다. Android XR용 Unity로 앱을 빌드할 때는 범용 렌더링 파이프라인 (URP)을 렌더링 파이프라인으로, Vulkan을 그래픽 API로 사용하는 것이 좋습니다. 이러한 기능을 사용하면 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 앱 빌드 및 실행
- 범용 렌더링 파이프라인, 스테레오 렌더링, 시선 추적 렌더링, 멀티뷰 렌더링 영역, VR 프레임 타이밍을 비롯한 XR 그래픽 안내
- 오디오 공간화기 지원을 비롯한 XR 오디오 가이드
Android용 앱 개발 및 게시
Unity에서는 Unity의 Android 권한, Android 빌드 설정, Android용 앱 빌드, Google Play에 제공 등의 주제를 다루는 Android 개발, 빌드, 게시를 위한 자세한 문서를 제공합니다.
Android XR용 Unity 패키지
Android XR용 Unity 앱 빌드를 지원하는 두 가지 패키지가 있습니다. 이 두 패키지는 모두 Unity의 XR 플러그인 관리 패키지를 통해 사용 설정할 수 있는 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 패키지에서 구현을 제공합니다. 이 패키지를 시작하려면 시작 가이드가 포함된 패키지 매뉴얼을 확인하세요.
Android XR Extensions for Unity
Android XR Extensions for Unity는 Unity OpenXR Android XR 패키지를 보완하며 몰입형 환경을 빌드하는 데 도움이 되는 추가 기능이 포함되어 있습니다. 단독으로 사용하거나 Unity OpenXR Android XR 패키지와 함께 사용할 수 있습니다.
이 패키지를 시작하려면 프로젝트 설정 가이드 또는 Unity용 Android XR 확장 프로그램 가져오기 빠른 시작을 따르세요.
기능 및 호환성 고려사항
다음 표에서는 Unity OpenXR: Android XR 패키지 및 Android XR Extensions for Unity 패키지에서 지원하는 기능을 설명하며, 필요한 기능이 포함된 패키지와 호환성 고려사항을 확인하는 데 사용할 수 있습니다.
기능 |
Unity OpenXR: Android XR 기능 문자열 |
Android XR Extensions for Unity 기능 문자열 |
사용 사례 및 예상 동작 |
---|---|---|---|
Android XR: AR 세션
|
Android XR (확장 프로그램): 세션 관리
|
두 패키지의 기능을 사용하려면 해당 패키지의 AR 세션 기능을 사용 설정해야 합니다. 두 기능 집합을 동시에 사용 설정할 수 있으며, 개별 기능에서 충돌을 적절하게 처리합니다. |
|
해당 사항 없음 |
해당 사항 없음 |
기기 추적은 실제 공간에서 기기의 위치와 회전을 추적하는 데 사용됩니다. XR Origin GameObject는 XROrigin 구성요소와 카메라 및 TrackedPoseDriver가 있는 GameObject 계층 구조를 사용하여 기기 추적을 자동으로 처리하고 추적 가능 항목을 Unity의 좌표계로 변환합니다. |
|
Android XR: AR 카메라 |
해당 사항 없음 |
이 기능은 조명 추정 및 전체 화면 패스스루를 지원합니다. |
|
Android XR: AR 평면 |
Android XR (확장 프로그램): 평면 |
이 두 기능은 동일하므로 둘 중 하나만 사용하세요. Android XR (확장 프로그램): 개발자가 Unity OpenXR Android XR 패키지에 종속되지 않고 Android XR (확장 프로그램): 객체 추적 및 영구 앵커 기능을 사용할 수 있도록 평면이 포함됩니다. 향후 Android XR (확장 프로그램): 평면이 Android XR: AR 앵커로 대체될 예정입니다. |
|
해당 사항 없음 |
Android XR (확장 프로그램): 객체 추적 |
이 기능은 참조 객체 라이브러리와 함께 사용되어 실제 환경에서 객체를 감지하고 추적하는 기능을 지원합니다. |
|
Android XR: AR 얼굴
|
Android XR: 얼굴 추적
|
아바타 눈 지원은 Android XR: AR 얼굴 기능을 통해 제공됩니다. Android XR: 얼굴 추적 기능을 통해 사용자의 얼굴 표정에 액세스합니다. 이 두 기능은 함께 사용할 수 있습니다. |
|
Android XR: AR 광선 투사
|
해당 사항 없음 |
이 기능을 사용하면 광선을 투사하고 물리적 환경에서 감지된 광선과 평면 추적 가능 객체 또는 깊이 추적 가능 객체 간의 교차점을 계산할 수 있습니다. |
|
Android XR: AR 앵커 |
Android XR (확장 프로그램): 앵커
|
두 기능 모두 공간 앵커와 평면 앵커를 지원합니다. 한 기능을 사용하세요. 영구 앵커의 경우 Android XR (확장 프로그램): 앵커를 사용합니다. 향후 Android XR (확장 프로그램): 앵커가 삭제되고 모든 앵커 기능이 Android XR: AR 앵커에 포함됩니다. |
|
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을 모두 사용하는 것이 좋습니다. |
|
해당 사항 없음 |
Android XR: 무한 참조 공간 |
이 기능은 XRInputSubsystem 추적 원점 모드를 Unbounded로 설정합니다. 무한은 XRInputSubsystem이 변경될 수 있는 세계 앵커와 관련하여 모든 InputDevice를 추적함을 나타냅니다. |
|
해당 사항 없음 |
환경 혼합 모드 |
이 기능을 사용하면 패스스루가 사용 설정된 경우 가상 이미지가 실제 환경과 혼합되는 방식을 제어하는 XR 환경 혼합 모드를 설정할 수 있습니다. |
입력 및 상호작용
Android XR은 멀티모달 자연 입력을 지원합니다.
핸드 및 아이 트래킹 외에도 6DoF 컨트롤러, 마우스, 물리적 키보드와 같은 주변기기도 지원됩니다. 즉, Android XR용 앱은 손 상호작용을 지원해야 하며 모든 기기에 컨트롤러가 제공된다고 가정할 수 없습니다.
상호작용 프로필
Unity는 상호작용 프로필을 사용하여 XR 애플리케이션이 다양한 XR 기기 및 플랫폼과 통신하는 방식을 관리합니다. 이러한 프로필은 다양한 하드웨어 구성의 예상 입력과 출력을 설정하여 다양한 플랫폼에서 호환성과 일관된 기능을 촉진합니다. 상호작용 프로필을 사용 설정하면 XR 애플리케이션이 다양한 기기에서 올바르게 작동하고, 일관된 입력 매핑을 유지하며, 특정 XR 기능에 액세스할 수 있습니다. 상호작용 프로필을 설정하려면 다음을 실행하세요.
- 프로젝트 설정 창 (메뉴: 수정 > 프로젝트 설정)을 엽니다.
- 필요한 경우 XR 플러그인 관리를 클릭하여 플러그인 섹션을 펼칩니다.
- 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
)은 Android XR Extensions for Unity에서 제공합니다. Unity Input System에서 <AndroidXRMouse>
기기 레이아웃을 노출합니다.
손바닥 포즈 상호작용
OpenXR 플러그인은 손바닥 포즈 상호작용 (XR_EXT_palm_pose
)을 지원하며, 이는 Unity 입력 시스템 내에서 <PalmPose>
레이아웃을 노출합니다.
손바닥 포즈는 더 복잡한 사용 사례를 위해 손 추적을 실행하는 확장 프로그램이나 패키지의 대안이 아닙니다. 대신 아바타 시각적 요소와 같은 앱별 시각적 콘텐츠를 배치하는 데 사용할 수 있습니다. 손바닥 포즈는 손바닥 위치와 방향으로 구성됩니다.
XR 핸드
XR Hands 패키지를 사용하면 XR_EXT_hand_tracking
및 XR_FB_hand_tracking_aim
를 사용하여 핸드 트래킹 데이터에 액세스할 수 있으며, 핸드 트래킹의 핸드 조인트 데이터를 입력 포즈로 변환하는 래퍼를 제공합니다. XR Hands 패키지에서 제공하는 기능을 사용하려면 Hand Tracking Subsystem 및 Meta Hand Tracking Aim OpenXR 기능을 사용 설정하세요.
XR 손 패키지는 더 세분화된 손 포즈 또는 손 관절 데이터가 필요하거나 맞춤 동작을 사용해야 하는 경우에 유용합니다.
자세한 내용은 Unity의 프로젝트에서 XR Hands 설정에 관한 문서를 참고하세요.
손을 렌더링하는 방법 선택
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 상호작용 툴킷
XR Interaction Toolkit 패키지는 VR 및 AR 환경을 만들기 위한 상위 수준의 구성요소 기반 상호작용 시스템입니다. Unity 입력 이벤트에서 3D 및 UI 상호작용을 사용할 수 있도록 하는 프레임워크를 제공합니다. 햅틱 반응, 시각적 반응, 이동을 비롯한 상호작용 작업을 지원합니다.
OpenXR™ 및 OpenXR 로고는 The Khronos Group Inc. 소유의 상표이며 중국, 유럽 연합, 일본, 영국에 상표로 등록되어 있습니다.