고려사항

Unity, OpenXR, WebXR는 몰입형 환경에서 다양한 상호작용을 만들기 위한 다목적 도구 키트를 제공합니다. 목표는 사용자가 기존에 학습한 경험을 사용하여 상호작용할 수 있는 몰입형 앱을 개발하는 것입니다. 간단한 동작부터 복잡한 물리 기반 시뮬레이션에 이르기까지 무엇이든 설계할 수 있습니다.

Unity, OpenXR, WebXR 앱은 전체 공간에서만 작동합니다.

Android XR의 설계 원칙 알아보기

입력

XR 앱에는 손, 눈, 얼굴 추적과의 상호작용, 동작, 음성 명령, 키보드, 마우스, 컨트롤러와 같은 기존 입력 장치가 포함될 수 있습니다. 자연스럽고 접근하기 쉬운 사용자 환경을 제공하기 위해 앱에 필요한 입력을 고려하세요.

  • 익숙한 동작을 지원하여 앱의 학습 곡선을 줄입니다. 2D UI와 상호작용할 때는 꼬집기와 같은 표준 시스템 동작을 사용하세요. 공을 집어 던지는 등의 3D 상호작용의 경우 실제 상호작용을 모방하는 동작으로 디자인해야 합니다. 이렇게 하면 사용자의 기존 지식을 바탕으로 할 수 있고 튜토리얼의 필요성이 줄어듭니다.
  • 추가 동작이 필요한 경우 동작을 쉽게 배우고 기억하며 실행할 수 있어야 합니다. 불편함과 피로를 유발할 수 있는 복잡한 다단계 동작이나 부자연스러운 자세는 피하세요. 사용자에게 손 동작 사용 방법을 안내하는 가이드를 제공해 보세요.
  • 왼손과 오른손 중 어느 쪽으로도 환경을 사용할 수 있는지 확인합니다. 불가능하다면 시스템의 손잡이 방향 환경설정을 따르세요.
  • 양손 상호작용은 몰입감을 줄 수 있지만 이동성이 제한된 사용자에게는 어려울 수 있습니다. 필수 작업의 경우 한 손으로 할 수 있는 상호작용에 우선순위를 둡니다. 양손 동작이 필요한 경우 동일한 결과를 얻을 수 있는 대체 한손 메서드를 제공합니다.
  • Unity, OpenXR, WebXR 앱은 Android의 백 스택의 이점을 자동으로 누리지 못합니다. 사용자가 Android XR의 뒤로 동작에 액세스하여 작업을 실행취소하거나 동작 탐색을 사용하여 뒤로 이동할 수 있도록 백 스택을 구현하는 것이 좋습니다.

동작 탐색을 사용하는 두 손.

UI

버튼, 패널, 텍스트와 같은 사용자 인터페이스 요소는 XR 앱에서 자연스러운 상호작용에 필수적입니다. 설계는 원활하고 직관적인 사용자 환경을 최우선으로 해야 합니다. 구체적인 UI 디자인 선택은 앱의 고유한 요구사항에 따라 달라집니다.

  • 기본적인 상호작용 요소와 중요한 콘텐츠를 사용자의 자연스러운 시선과 시야 내에 배치합니다. 이렇게 하면 가시성이 향상되고 편안한 환경을 제공할 수 있습니다. 사용자가 인터페이스와 상호작용하는 방식을 고려하여 인터페이스를 배치할 거리를 결정합니다. 예를 들어 레이저 포인터로 조준하고 있나요? 아니면 손가락으로 버튼을 직접 탭하고 있나요? 사용자와의 의도된 거리에 따라 인터페이스 크기를 구성합니다. Android XR 크기 및 크기 조정 가이드 참고
  • 버튼과 같은 양방향 UI 요소를 디자인할 때는 사용자가 버튼과 상호작용하는 방식, 각 입력 방법에 필요한 정밀도 수준(손 추적과 마우스 비교)을 고려하고 타겟 크기 및 간격과 같은 요소를 적절하게 조정합니다. UI 위치가 편안한 상호작용을 허용하는지 확인합니다. 사용자 작업에 대한 시각적 피드백을 제공합니다. Android XR 스타일 가이드를 참고하세요.
  • 패널과 같은 2D UI는 메뉴 기반 상호작용에 적합합니다. 물리적 버튼, 레버, 스위치와 같은 3D UI는 공간 환경과 상호작용할 때 몰입감을 높일 수 있습니다. 가독성을 높이기 위한 패널 기반 상호작용과 세계 중심 상호작용을 위한 3D 객체를 적절하게 조화시키면 강력하고 몰입도 높은 환경을 만들 수 있습니다.
  • 적절한 글꼴 크기, 유형, 대비를 사용하여 텍스트가 잘 읽히도록 합니다. 사용자가 텍스트를 볼 거리에 따라 UI를 배치합니다. 다양한 글꼴 크기에서 원활한 텍스트 렌더링을 위해 서명된 거리 필드 글꼴을 사용하세요. Android XR 서체 가이드를 참고하세요.

한 사람이 매우 큰 화면이 있는 공간 환경에 완전히 몰입되어 있습니다. 바위에 서 있으며 UI 컨트롤이 손에 닿는 위치에 있습니다.

공간적 상호작용

XR에서 가장 풍부한 상호작용 중 하나는 사용자가 3D 객체와 직접 상호작용할 수 있는 기능입니다. 객체를 집어 들고 검사하고 던지는 것처럼 간단할 수 있습니다. 또한 레버 당기기, 버튼 누르기, 사용자가 이미 들고 있는 요소와 상호작용(예: 스프레이 분사)과 같은 더 복잡한 상호작용도 포함됩니다. 직관적인 3D 객체 상호작용을 위해 사용자의 기존 지식을 기반으로 설계합니다.

  • 사실적인 동작을 만들려면 물리 엔진을 통합해 보세요. Unity로 빌드하는 경우 내장된 물리 엔진이 있습니다. 물리 엔진이 소비하는 프로세싱 성능을 고려하고 성능에 맞게 최적화합니다.
  • 사실성보다 믿을 수 있는 정도가 더 중요합니다. 예를 들어 사용자가 공을 세게 던졌다고 생각하면 앱은 기기의 센서가 나타내는 것보다 더 강한 힘을 공에 추가해야 합니다.
  • 객체는 어포던스에 맞게 빌드해야 합니다. 즉, 사용자가 객체에서 또는 객체를 사용하여 실행할 수 있는 모든 작업을 앱에서 고려해야 합니다. 예를 들어 도넛은 집어 들고, 던지고, 먹을 수 있습니다. 앱이 도넛을 먹는 대신 '지금은 배가 고프지 않아요'라는 음성 해설을 사용할 수 있습니다. 이러한 솔루션은 사용자가 도넛으로 수행할 것으로 예상하는 작업을 해결합니다.
  • 객체는 상위 요소 지정, 물리학 조인트, 따라가기, 물리학 힘을 비롯한 다양한 기법을 사용하여 유지할 수 있습니다. 각 기법에는 장단점이 있습니다. 맞춤 캡처 메서드를 구현하기 전에 다양한 접근 방식을 조사하고 테스트하여 가장 적합한 접근 방식을 결정하는 것이 중요합니다.
  • 인체공학은 3D 환경에서 설계할 때 중요합니다. 접근성을 위해 사용자가 편안한 높이로 조정할 수 있도록 평평한 면에 핸들을 추가하는 것이 좋습니다. 사람마다 신체가 다르므로 다양한 사용자를 대상으로 공간의 각 객체를 테스트해야 합니다.

사용자가 사무실 칸막이 안의 오래된 컴퓨터 앞에 앉아 있는 완전 몰입형 VR 게임인 Job Simulator 이 게임에는 3D 물체와 상호작용할 수 있는 가상 손이 포함되어 있습니다.

장면 디자인

장면은 완전히 몰입도 높은 가상 세계에서 가상 요소를 사용자의 실제 환경과 혼합하는 증강 현실 환경에 이르기까지 다양합니다. 편안하고 기능적이며 XR의 고유한 기능을 활용하는 장면을 디자인하세요.

  • 비행과 같이 사용자 주위를 이동하는 장면을 제한합니다. 특히 사용자의 신체가 움직이지 않는 경우 불편함을 유발할 수 있습니다. 다음 섹션에 설명된 대로 터널 시야와 같은 일부 이동 기법은 불편함을 줄이는 데 도움이 됩니다.
  • 혼합 현실 환경을 만들려면 Android XR의 장면 이해 기능을 사용하여 가상 객체를 사용자의 실제 환경에 통합하면 됩니다.
  • 가상 현실 애플리케이션의 경우 가상 공간 내에 실제 세계의 제한된 뷰를 통합하는 것이 좋습니다. 이를 통해 사용자는 몰입형 환경을 나가지 않고도 주변 환경을 인식하고 실제 물체와 상호작용할 수 있습니다.

Locomotion

Android XR 환경은 구성된 경계로 정의된 물리적 공간에서 사용자가 자유롭게 이동할 수 있도록 하는 것이 좋습니다. 예를 들어 움직이지 않는 작성된 공간을 중심으로 설계된 가상 환경이 더 몰입감이 높다고 생각하는 사용자도 있습니다. 사용자가 경계가 허용하는 것보다 더 큰 가상 공간을 이동할 것으로 예상되는 경우 순간이동과 같이 움직임을 증폭하는 이동 기술을 사용하는 것이 좋습니다.

테레포팅을 사용하면 사용자가 가리키고 선택하거나 컨트롤러를 사용하여 새 위치로 즉시 이동할 수 있습니다. 빠르게 장거리를 이동하는 데 적합하며, 움직임에 대한 멀미를 가장 적게 유발하는 이동 방법인 경우가 많습니다. 전환 중에 화면을 잠시 가리면 불편함을 더욱 최소화할 수 있습니다.

기타 이동 수단

다른 이동 방법을 사용하는 경우 대안으로 순간이동을 제공하는 것도 고려해 보세요.

  • 팔을 흔들면서 제자리 걷기: 팔을 흔들거나 컨트롤러를 위아래로 움직여 걷는 동작을 시뮬레이션합니다. 일부 사용자는 이 방법이 피곤하거나 직관적이지 않다고 생각할 수 있습니다.
  • 연속 이동: 컨트롤러의 조이스틱이나 썸스틱을 사용하여 환경을 통해 가상 캐릭터를 이동합니다. 대부분의 경우 이 메서드는 멀미의 일반적인 원인이므로 사용하지 않는 것이 좋습니다.

환경에서 이동을 사용하려면 개인 환경설정을 수용하고 사용자 환경을 개선하기 위해 여러 옵션을 제공하세요.

사용자의 실제 움직임과 가상 환경 간에 연결이 끊어지면 멀미가 발생할 수 있습니다. 이동 중 사용자 편안함을 최적화하려면 다음 단계를 따르세요.

  • 가상 수평선이 흔들리지 않고 수평을 유지하는지 확인합니다.
  • 연속적인 움직임이 필요한 경우 점진적인 가속이나 감속을 피합니다. 속도를 일정하게 유지합니다.
  • 터널 비전은 이동 중에 사용자의 시야를 좁혀 주변 영역에서 인식되는 움직임을 제한하는 비네팅 효과를 통해 멀미를 줄이는 데 도움이 될 수 있습니다.
  • 회전의 경우 사용자의 관점을 특정 각도로 스냅합니다. 이로 인해 약간의 방향 감각 상실이 발생할 수 있지만 멀미는 줄어듭니다.
  • 사용자마다 허용 수준이 다릅니다. 이동 방법 선택, 터널 시야 켜기/끄기, 이동 속도 조정 등 선호하는 대로 편안함 설정을 조정할 수 있도록 허용합니다.

공간 음향

사운드는 사용자를 다른 세계로 안내하고 특정 감정을 불러일으키는 몰입도 높은 사운드스케이프를 만드는 강력한 도구입니다. 공간 음향은 가상 환경에서 사운드를 정확하게 배치합니다.

  • 앰비소닉스는 오디오의 스카이박스와 같으며 사용자에게 몰입도 높은 사운드스케이프를 제공합니다. 배경 환경 소리나 청취자를 둘러싼 전체 구형 음장 필드를 재현하려는 다른 시나리오에 앰비소닉스를 사용하세요.
  • 공간화된 오디오 신호는 사용자의 주의를 유도할 수 있습니다.
  • 음향 효과를 공간화하여 몰입도를 높입니다.
  • 음성 오디오를 스피커의 위치에 공간화하면 사용자가 스피커를 직접 마주하지 않더라도 스피커의 존재감을 느낄 수 있습니다.
  • 사용자가 오디오를 조정할 수 있도록 허용합니다. 예를 들어 배경 음악, 음향 효과 또는 음성 해설의 볼륨을 사용 중지하거나 변경할 수 있습니다.
  • 청각 장애인이나 난청이 있는 사용자를 위해 자막을 추가해 보세요.

편안함을 위한 추가 고려사항

접근성을 우선시하려면 다양한 능력과 환경설정에 맞게 맞춤설정할 수 있는 옵션을 제공하세요. 이를 통해 다양한 사용자가 몰입도 높은 환경을 즐길 수 있습니다.

  • 애플리케이션을 초당 72프레임으로 실행: 이렇게 하면 시각적 흔들림을 최소화하고 멀미를 방지할 수 있습니다.
  • 사용자에게 제어권 부여: XR에 대한 친숙도 수준이 다양한 사용자에게 앱을 사용자 친화적으로 만들려면 맞춤설정 가능한 설정을 통해 사용자가 환경을 조정할 수 있도록 하세요. 사용자가 자신의 신체적 필요나 선호사항에 맞게 컨트롤러 버튼과 동작을 재매핑할 수 있도록 허용하는 것이 좋습니다. 예를 들어 손가락 움직임이 제한된 사용자는 다양한 버튼 레이아웃이나 더 크고 간단한 입력 컨트롤을 사용하는 것이 좋습니다.

특정 플랫폼에 관한 안내는 다음을 참고하세요.

OpenXR용 개발

Unity로 개발

WebXR 문서