Mixed Reality에서 잘 보이도록 앱을 디자인하고 새 입력 방법을 활용합니다.
개요
혼합 현실 디지털 세계와 물리적 세계를 혼합한 결과입니다. 혼합 현실 환경의 스펙트럼에는 HoloLens(컴퓨터에서 생성된 콘텐츠를 실제 세계와 혼합하는 장치)와 같은 하나의 극단적인 디바이스와 가상 현실의 완전히 몰입형 보기(Windows Mixed Reality 헤드셋으로 볼 수 있음)가 포함됩니다. 환경이 어떻게 달라지는지에 대한 예제는 유형의 혼합 현실 앱 참조하세요.
이 항목의 일부 지침에 따라 사용자 환경을 개선할 수 있지만 거의 모든 기존 UWP 앱은 변경 없이 Mixed Reality 환경에서 2D 앱으로 실행됩니다.
HoloLens 및 Windows Mixed Reality 헤드셋은 모두 UWP 플랫폼에서 실행되는 애플리케이션을 지원하며, 둘 다 두 가지 유형의 환경을 지원합니다.
2D 대 몰입형 경험
몰입형 앱은 화면에 표시되는 전체 디스플레이를 차지하여 사용자를 앱에서 만든 보기의 중심에 배치합니다. 예를 들어 몰입형 게임은 사용자를 외계 행성의 표면에 배치하거나 투어 가이드 앱에서 사용자를 남미 마을에 배치할 수 있습니다. 몰입형 앱을 만들려면 3D 그래픽 또는 캡처된 스테레오그래픽 비디오가 필요합니다. 몰입형 앱은 종종 Unity와 같은 타사 게임 엔진 또는 DirectX를 사용하여 개발됩니다.
몰입형 앱을 만드는 경우 자세한 내용은 Windows Mixed Reality 개발자 센터 방문해야 합니다.
2D 앱은 사용자의 보기 내에서 기존 플랫 창으로 실행됩니다. HoloLens에서 이는 사용자의 현실 세계 거실이나 사무실의 벽이나 공간의 특정 지점에 고정된 보기를 의미합니다. Windows Mixed Reality 헤드셋에서 앱은 혼합 현실 홈(Cliff House라고도 함)의 벽에 고정됩니다.
이러한 2D 앱은 전체 화면을 차지하지 않습니다. 화면 내에 배치됩니다. 환경에 한 번에 여러 2D 앱이 존재할 수 있습니다.
이 항목의 나머지 부분에서는 2D 환경에 대한 디자인 고려 사항에 대해 설명합니다.
2D 앱 시작
혼합 현실 시작 메뉴 
모든 앱은 시작 메뉴에서 시작되지만 앱 시작 관리자 역할을 하는 3D 개체를 만들 수도 있습니다. 자세한 내용은 Windows Mixed Reality용 3D 앱 시작 관리자 만들기 비디오를 참조하세요.
2D 앱 입력 개요
키보드와 마우스는 HoloLens 및 Mixed Reality 플랫폼에서 모두 지원됩니다. 키보드와 마우스를 Bluetooth를 통해 HoloLens와 직접 페어링할 수 있습니다. Mixed Reality 앱은 호스트 컴퓨터에 연결된 마우스 및 키보드를 지원합니다. 세밀한 수준의 제어가 필요한 경우 둘 다 유용할 수 있습니다.
다른 보다 자연스러운 입력 방법도 지원되며, 사용자가 실제 키보드가 앞에 있는 책상에 앉아 있지 않거나 세밀한 제어가 필요할 때 특히 유용할 수 있습니다.
추가 하드웨어나 코딩 없이, 앱은 사용자의 시선을, 즉 사용자가 보고 있는 벡터를, 2D 앱에서 작업할 때 마우스 포인터로 사용합니다. 마우스 포인터가 가상 장면의 항목 위에 있는 것처럼 구현됩니다.
일반적인 상호 작용에서 사용자가 앱의 컨트롤을 보면, 그것이 강조되어 나타납니다. 사용자는 동작을 트리거할 때 제스처(HoloLens에서) 또는 컨트롤러를 사용하거나 음성 명령을 제공하여 작업을 트리거합니다. 사용자가 텍스트 입력 필드를 선택하면 소프트웨어 키보드가 표시됩니다.
이러한 모든 상호 작용은 UWP 플랫폼에서 실행된 결과로 추가 코딩 없이 자동으로 수행됩니다. HoloLens 및 Mixed Reality 헤드셋의 입력은 2D 앱에 대한 터치 입력으로 표시됩니다. 즉, 기본적으로 많은 UWP 앱이 실행되고 Mixed Reality에서 사용할 수 있습니다.
즉, 약간의 추가 작업으로 경험을 크게 개선할 수 있습니다. 예를 들어 음성 제어 특히 효과적일 수 있습니다. HoloLens 및 Mixed Reality 환경은 모두 앱을 시작하고 상호 작용하기 위한 음성 명령을 지원하며, 음성 지원을 포함하는 것은 이 접근 방식의 자연스러운 확장으로 나타납니다. UWP 앱에 음성 지원을 추가하는 방법에 대한 자세한 내용은 음성 상호 작용 참조하세요.
올바른 컨트롤러 선택
혼합 현실 모션 컨트롤러 
특히 Mixed Reality에서 사용할 수 있도록 몇 가지 새로운 입력 메서드가 설계되었습니다.
- 손 제스처(HoloLens만 사용하지만 2D 앱 시작에만 사용됨)
- 게임패드 지원(두 환경 모두)
- Clicker 디바이스(HoloLens에만 해당)
- 모션 컨트롤러(혼합 현실 디바이스만 해당, 위에 표시됨)
이러한 컨트롤러는 가상 개체와의 상호 작용을 자연스럽고 정밀하게 보이게 합니다. 일부 상호 작용은 무료로 제공됩니다. 예를 들어 HoloLens는 제스처를 선택하거나 동작 컨트롤러의 Windows 키 또는 트리거를 클릭하면 예상한 입력 응답이 생성되며, 다시 한 번 코딩하지 않습니다.
다른 경우에는 사용할 수 있는 추가 정보 및 입력을 활용하는 코드를 추가하려고 합니다. 예를 들어 동작 컨트롤러는 해당 위치와 단추 누름을 고려하는 코드를 작성하는 경우 세밀한 수준의 컨트롤로 개체를 조작하는 데 사용할 수 있습니다.
비고
요약하자면, 안내 주체는 항상 사용자에게 가능한 한 자연스럽고 마찰없는 입력 방법을 제공해야 합니다.
2D 앱 디자인 고려 사항: 기능
Mixed Reality 플랫폼에서 사용할 수 있는 UWP 앱을 만들 때 유의해야 할 몇 가지 사항이 있습니다.
끌어서 놓기 동작 컨트롤러, 게임 패드 또는 제스처와 함께 사용할 때는 제대로 작동하지 않을 수 있습니다. 애플리케이션이 끌어서 놓기를 많이 사용하는 경우 개체를 새 위치로 이동할지 확인하는 대화 상자를 표시하는 등 이 작업을 지원하는 대체 방법을 제공해야 합니다.
소리가 어떻게 변하는지 유의하세요. 앱에서 소리 효과를 생성하는 경우 소리의 원본은 가상 세계에서 앱의 고정된 위치로 표시됩니다. 사용자가 앱에서 멀어지면 소리가 줄어듭니다. 자세한 내용은 공간 음향 참조하세요.
시야를 고려하고 사용기능을 제공합니다. 모든 디바이스가 컴퓨터 모니터만큼 큰 시야를 제공하는 것은 아닙니다. 자세한 내용은 홀로그램 프레임 참조하세요. 또한 사용자는 실행 중인 앱에서 약간 떨어져 있을 수 있습니다. 즉, 앱이 세계의 다른 위치(실제 또는 가상)에서 벽에 고정된 것처럼 보일 수 있습니다. 앱은 사용자의 주의를 끌 필요가 있거나, 전체 보기가 항상 표시되지 않는다는 점을 고려해야 할 수 있습니다. 토스트 알림을 사용할 수 있지만 사용자의 주의를 끌기 위한 또 다른 방법은 소리 또는 음성 경고를 발생시킬 수 있습니다.
2D 앱에는 사용자가 가상 환경에서 이동하고 크기를 조정할 수 있도록 앱 바가 자동으로 제공됩니다. 뷰의 크기를 세로로 조정하거나 동일한 가로 세로 비율을 유지하여 크기를 조정할 수 있습니다.
2D 앱 디자인 고려 사항: UI/UX
탐색 보기같은 Fluent 디자인 시스템 구현하는 XAML 컨트롤과 아크릴 같은 효과는 모두 2D Mixed Reality 앱에서 특히 잘 작동합니다.
Mixed Reality 디바이스에서 또는 적어도 Mixed Reality 시뮬레이터에서 앱의 텍스트 및 창 크기를 테스트합니다. 앱의 기본 창 크기는 853x480 유효 픽셀입니다. 더 큰 글꼴 크기(약 32포인트 크기 권장)를 사용하고, '2D UWP 앱을 Windows Mixed Reality에 맞게 업데이트하기'를 읽으십시오. 타이포그래피 문서에서는 이 주제에 대해 자세히 설명합니다. Visual Studio에서 작업할 때 올바른 배율 및 차원으로 보기를 제공하는 57" HoloLens 2D 앱에 대한 XAML 디자인 편집기 설정이 있습니다.
당신의 응시는 당신의 마우스입니다. 사용자가 어떤 것을 바라보면 터치 가리킴 이벤트로 작동하므로, 단순히 대상을 보는 것만으로도 원치 않는 팝업이나 다른 비의도적인 상호 작용이 발생할 수 있습니다. 앱이 현재 Mixed Reality에서 실행 중인지 감지하고 이 동작을 변경해야 할 수 있습니다. 아래의 런타임 지원을 참조하십시오.
사용자가 무언가를 응시하거나 동작 컨트롤러를 사용하여 가리킬 때 터치 호버 이벤트가 발생합니다. PointerPoint 은 PointerType 이 Touch인 경우로 구성되지만, IsInContact 은 false입니다. 어떤 형태의 커밋이 발생하면(예: 게임 패드 A 버튼을 누르거나, 클릭커 장치를 누르거나, 모션 컨트롤러 트리거를 누르거나, 음성 인식에서 "선택"이라고 하면) 터치 누름이 발생하고, PointerPoint의 IsInContact가 true가됩니다. 이러한 입력 이벤트에 대한 더 많은 정보는 터치 상호작용을 참조하십시오.
눈의 응시는 마우스로 가리키는 것만큼 정확하지 않습니다. 마우스 대상 또는 단추가 작을수록 사용자에게 불만이 발생할 수 있으므로 그에 따라 컨트롤의 크기를 조정합니다. 터치용으로 설계된 경우 Mixed Reality에서 작동하지만 런타임에 일부 단추를 확대하기로 결정할 수 있습니다. 2D UWP 앱을 Windows Mixed Reality에 맞게 업데이트하는 방법을 참조하세요.
혼동을 일으킬 수 있으므로 애플리케이션에서 검은색을 사용하면 안 됩니다. HoloLens는 검은색을 빛이 없는 상태로 정의하고 그저 렌더링되지 않기 때문에 실제 세계가 드러나도록 합니다. Mixed Reality 헤드셋에서 검은색은 검은색으로 렌더링됩니다.
HoloLens는 앱에서 색 테마를 지원하지 않으며 사용자에게 최상의 환경을 보장하기 위해 기본적으로 파란색으로 설정됩니다. 색 선택에 대한 더 많은 조언이 필요하다면 Mixed Reality 디자인에서 색과 재질을 사용하는 방법에 대해 설명하는 이 항목 을 참조하십시오.
고려해야 할 다른 사항
- 데스크톱 브리지 기존(Win32) 데스크톱 앱을 Windows 및 Microsoft Store로 가져오는 데 도움이 될 수 있지만 지금은 HoloLens에서 실행되는 앱을 만들 수 없습니다. Windows 10 버전 1903을 기준으로 Win32 데스크톱 앱은 Mixed Reality 헤드셋에서 실행할 수 있습니다.
런타임 지원
앱이 런타임에 Mixed Reality 디바이스에서 실행 중인지 확인하고 이를 컨트롤 크기를 조정하거나 다른 방법으로 헤드셋에서 사용할 수 있도록 앱을 최적화하는 기회로 사용할 수 있습니다.
다음은 혼합 현실 디바이스에서 앱을 사용하는 경우에만 XAML TextBlock 컨트롤 내의 텍스트 크기를 조정하는 간단한 코드 조각입니다.
bool isViewingInMR = Windows.ApplicationModel.Preview.Holographic.HolographicApplicationPreview.IsCurrentViewPresentedOnHolographicDisplay();
if (isViewingInMR)
{
// Running on headset, resize the XAML text
textBlock.Text = "I'm running in Mixed Reality!";
textBlock.FontSize = 32;
}
else
{
// Running on desktop
textBlock.Text = "I'm running on the desktop.";
textBlock.FontSize = 14;
}
관련 문서
Windows developer