Android XR용 Unity로 개발

이 가이드에서는 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 상호작용 도구 키트, AR Foundation, OpenXR 플러그인을 사용하여 빠르게 시작할 수 있는 혼합 현실 템플릿이 포함되어 있습니다. Android XR용 Unity로 앱을 빌드할 때는 범용 렌더링 파이프라인 (URP)을 렌더링 파이프라인으로, Vulkan을 그래픽 API로 사용하는 것이 좋습니다. 이러한 기능을 사용하면 Vulkan에서만 지원되는 Unity의 최신 그래픽 기능을 활용할 수 있습니다. 이러한 설정을 구성하는 방법에 관한 자세한 내용은 프로젝트 설정 가이드를 참고하세요.

Unity XR 기본사항

Unity 또는 XR 개발이 처음이라면 Unity의 XR 매뉴얼을 참고하여 기본 XR 개념과 워크플로를 이해할 수 있습니다. XR 매뉴얼에는 다음에 관한 정보가 포함되어 있습니다.

Android용 앱 개발 및 게시

Unity는 Android용 개발, 빌드, 게시를 위한 심층 문서를 제공하며, Unity의 Android 권한, Android 빌드 설정, Android용 앱 빌드, Google Play에 게시 등의 주제를 다룹니다.

Android XR용 Unity 패키지

Android XR용 Unity 앱 빌드를 지원하는 두 가지 패키지가 있습니다. 이 두 패키지는 모두 XR 제공업체 플러그인으로, Unity의 XR 플러그인 관리 패키지를 통해 사용 설정할 수 있습니다. XR 플러그인 관리자는 XR 플러그인의 로드, 초기화, 설정, 빌드 지원을 관리하고 지원을 제공하기 위한 프로젝트 설정을 추가합니다. 앱이 런타임에 OpenXR 기능을 실행할 수 있도록 하려면 프로젝트에서 플러그인 관리자를 통해 이러한 기능을 사용 설정해야 합니다.

이 이미지는 Unity 편집기를 통해 이러한 기능 그룹을 사용 설정할 수 있는 위치의 예를 보여줍니다.

Unity XR 플러그인 관리 화면의 예

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 확장 프로그램 기능 문자열

사용 사례 및 예상 동작

AR 세션

Android XR: AR 세션

  • 버퍼 삭제 최적화 (Vulkan) 기능 설정 포함

Android XR (확장 프로그램): 세션 관리

  • 기능 설정에는 하위 샘플링 (Vulkan) 및 URP SpaceWarp (Vulkan)가 포함됩니다.

두 패키지의 기능을 사용하려면 해당 패키지에 AR 세션 기능을 사용 설정해야 합니다. 두 기능 집합을 동시에 사용 설정할 수 있습니다. 개별 기능이 충돌을 적절하게 처리합니다.

기기 추적

해당 사항 없음

해당 사항 없음

기기 추적은 실제 공간에서 기기의 위치와 회전을 추적하는 데 사용됩니다. XR 원점 GameObjectXROrigin 구성요소와 카메라 및 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 얼굴

  • XR_ANDROID_avatar_eyes만
  • 얼굴 추적 불가

Android XR: 얼굴 추적

  • XR_ANDROID_face_tracking

아바타 눈 지원은 Android XR: AR 얼굴 기능을 통해 제공됩니다. Android XR: 얼굴 추적 기능을 통해 사용자의 얼굴 표정에 액세스합니다. 원하는 경우 이 두 가지 기능을 함께 사용할 수 있습니다.

레이 전송

Android XR: AR 레이캐스트

  • 비행기 앵커
  • Depth Anchor

해당 사항 없음

이 기능을 사용하면 레이를 투사하고 해당 레이와 실제 환경에서 감지된 평면 추적 가능 항목 또는 깊이 추적 가능 항목 간의 교차점을 계산할 수 있습니다.

앵커

Android XR: AR 앵커

Android XR (확장 프로그램): 앵커

  • 기능 설정에는 지속성이 포함됩니다.

두 기능 모두 공간 앵커와 평면 앵커를 지원합니다. 둘 중 하나의 기능을 사용하세요. 영구 앵커의 경우 Android XR (확장 프로그램): 앵커를 사용합니다. 향후 Android XR (확장 프로그램): 앵커가 삭제되고 모든 앵커 기능이 Android XR: AR 앵커에 포함됩니다.

폐쇄

Android XR: AR 폐쇄

  • 환경 깊이

해당 사항 없음

오클루전을 사용하면 앱의 혼합 현실 콘텐츠가 실제 환경의 객체 뒤에 숨겨져 있거나 부분적으로 가려져 있는 것처럼 표시할 수 있습니다.

실적 측정항목

Android XR 성능 측정항목

해당 사항 없음

이 기능을 사용하여 Android XR 기기의 성능 측정항목에 액세스하세요.

조합 레이어

컴포지션 레이어 지원 (OpenXR 플러그인 및 XR 컴포지션 레이어 필요)

Android XR: 패스스루 컴포지션 레이어

  • XR_ANDROID_composition_layer_passthrough_mesh

Unity의 컴포지션 레이어 지원을 사용하여 기본 컴포지션 레이어 (예: 사각형, 원통, 투영)를 만듭니다. Android XR: 패스 스루 컴포지션 레이어를 사용하여 Unity의 GameObject에서 읽은 맞춤 메시지로 패스 스루 레이어를 만들 수 있습니다.

포비에이션 렌더링

포비어레이션 렌더링 (OpenXR 플러그인 필요)

  • 눈 추적 포비에이션 렌더링 지원: 사용자가 현재 보고 있는 위치에 고해상도 영역이 중앙에 배치되어 사용자에게 덜 눈에 띌 수 있습니다.

포비에이션 (기존)

포비에이션 렌더링을 사용하면 사용자의 주변 시야에 있는 영역의 해상도를 낮춰 렌더링 속도를 높일 수 있습니다. Unity의 포비에이션 렌더링 기능은 URP 및 Vulkan을 사용하는 앱에서만 지원됩니다. Unity용 Android XR 확장 프로그램의 Foveation (기존) 기능은 BiRP 및 GLES도 지원합니다. 가능하면 Unity의 포비아스 렌더링 기능을 사용하는 것이 좋습니다. Android XR용으로 빌드할 때는 URP와 Vulkan을 모두 사용하는 것이 좋습니다.

제한되지 않은 참조 공간

해당 사항 없음

Android XR: 무제한 참조 공간

이 기능은 XRInputSubsystem 추적 출처 모드를 Unbounded로 설정합니다. Unbounded는 XRInputSubsystem이 변경될 수 있는 월드 앵커와 관련하여 모든 InputDevice를 추적함을 나타냅니다.

환경 블렌드 모드

해당 사항 없음

환경 혼합 모드

이 기능을 사용하면 패스스루가 사용 설정된 경우 가상 이미지가 실제 환경과 혼합되는 방식을 제어하는 XR 환경 혼합 모드를 설정할 수 있습니다.

입력 및 상호작용

Android XR은 멀티모달 자연 입력을 지원합니다.

손 및 눈 추적 외에도 6DoF 컨트롤러, 마우스, 물리적 키보드와 같은 주변기기도 지원됩니다. 즉, Android XR용 앱은 손 상호작용을 지원해야 하며 모든 기기에 컨트롤러가 제공된다고 가정할 수 없습니다.

상호작용 프로필

Unity는 상호작용 프로필을 사용하여 XR 애플리케이션이 다양한 XR 기기 및 플랫폼과 통신하는 방식을 관리합니다. 이러한 프로필은 다양한 하드웨어 구성에 대해 예상되는 입력과 출력을 설정하여 다양한 플랫폼에서 호환성과 일관된 기능을 보장합니다. 상호작용 프로필을 사용 설정하면 XR 애플리케이션이 다양한 기기에서 올바르게 작동하고, 일관된 입력 매핑을 유지하며, 특정 XR 기능에 액세스할 수 있습니다. 상호작용 프로필을 설정하는 방법은 다음과 같습니다.

  1. 프로젝트 설정 창을 엽니다 (메뉴: 수정 > 프로젝트 설정).
  2. 필요한 경우 XR 플러그인 관리를 클릭하여 플러그인 섹션을 펼칩니다.
  3. XR 플러그인 목록에서 OpenXR을 선택합니다.
  4. 상호작용 프로필 섹션에서 + 버튼을 선택하여 프로필을 추가합니다.
  5. 목록에서 추가할 프로필을 선택합니다.

손 상호작용

손 상호작용 (XR_EXT_hand_interaction)은 OpenXR 플러그인에서 제공하며, 손 상호작용 프로필을 사용 설정하여 Unity 입력 시스템에 기기 레이아웃을 노출할 수 있습니다. OpenXR에서 정의한 네 가지 작업 자세인 '꼬집기', '찌르기', '조준', '움켜잡기'에서 지원하는 손 입력에 이 상호작용 프로필을 사용합니다. 추가 손 상호작용 또는 손 추적 기능이 필요한 경우 이 페이지의 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 플러그인은 Unity 입력 시스템 내에 <PalmPose> 레이아웃을 노출하는 손바닥 자세 상호작용 (XR_EXT_palm_pose)을 지원합니다. 손바닥 포즈는 더 복잡한 사용 사례를 위해 손 추적을 실행하는 확장 프로그램이나 패키지의 대안이 아닙니다. 대신 아바타 시각 자료와 같은 앱별 시각적 콘텐츠를 배치하는 데 사용할 수 있습니다. 손바닥 포즈는 손바닥 위치와 방향으로 구성됩니다.

XR 손

XR Hands 패키지를 사용하면 손 추적 데이터(XR_EXT_hand_trackingXR_FB_hand_tracking_aim)에 액세스할 수 있으며 손 추적에서 입력 포즈로 손 관절 데이터를 변환하는 래퍼를 제공합니다. XR Hands 패키지에서 제공하는 기능을 사용하려면 손 추적 하위 시스템Meta 손 추적 Aim OpenXR 기능을 사용 설정하세요.

손 추적을 사용 설정하는 방법을 보여주는 예

XR 손 패키지는 더 세분화된 손 자세 또는 손 관절 데이터가 필요하거나 맞춤 동작을 사용해야 하는 경우에 유용할 수 있습니다.

자세한 내용은 Unity의 프로젝트에서 XR 손 설정 문서를 참고하세요.

손을 렌더링하는 방법 선택

Android XR은 손 메시와 프리탸 시각화 도구라는 두 가지 손 렌더링 방식을 지원합니다.

손 메시

Android XR Unity 패키지에는 XR_ANDROID_hand_mesh extension에 액세스할 수 있는 손 메시 기능이 포함되어 있습니다. 손 메시 기능은 사용자의 손에 메시를 제공합니다. 손 메시에는 손의 도형을 나타내는 삼각형의 정점이 포함되어 있습니다. 이 기능은 시각화를 위해 사용자 손의 실제 도형을 나타내는 맞춤 메시를 제공하는 데 사용됩니다.

XR 손 프레퍼베이스

XR Hands 패키지에는 사용자의 손에 적합한 컨텍스트 표현을 렌더링하기 위해 완전히 리그된 왼손과 오른손이 포함된 손 시각화 도구라는 샘플이 포함되어 있습니다.

시스템 동작

Android XR에는 사용자가 뒤로 이동하거나, 런처를 열거나, 현재 실행 중인 애플리케이션의 개요를 확인할 수 있는 메뉴를 여는 시스템 동작이 포함되어 있습니다. 사용자는 주로 사용하는 손의 집게 모양을 사용해 이 시스템 메뉴를 활성화할 수 있습니다.

사용자가 시스템 탐색 메뉴와 상호작용하는 경우 애플리케이션은 헤드 추적 이벤트에만 응답합니다. XR Hands 패키지는 사용자가 이 시스템 탐색 메뉴와 상호작용하는 등 특정 작업을 실행할 때 이를 감지할 수 있습니다. AimFlags SystemGesture 및 DominantHand를 확인하면 이 시스템 작업이 실행되는 시점을 알 수 있습니다. AimFlags에 관한 자세한 내용은 Unity의 Enum MetaAimFlags 문서를 참고하세요.

XR 상호작용 툴킷

XR 상호작용 도구 키트 패키지는 VR 및 AR 환경을 만드는 고급 구성요소 기반 상호작용 시스템입니다. Unity 입력 이벤트에서 3D 및 UI 상호작용을 사용할 수 있는 프레임워크를 제공합니다. 햅틱 반응, 시각적 반응, 이동을 비롯한 상호작용 작업을 지원합니다.