WMR 빠른 시작 가이드
개발 기간 동안 WMR 테스트

WMR 입력 및 상호작용 개념

모든 Windows Mixed Reality 기기는 특정 유형의 상호작용을 사용하여 사용자의 입력을 받습니다. 일부 입력 유형은 HoloLens 또는 몰입형 헤드셋 같은 특정 Windows Mixed Reality 기기에만 해당됩니다.

몰입형 헤드셋은 공간 컨트롤러를 비롯하여 다양한 입력을 사용합니다. HoloLens는 3개 입력 유형으로 제한됩니다. 단, 헤드셋 외에 애플리케이션에서 추가 하드웨어를 사용해야 하는 경우는 예외입니다.

모든 유형의 입력은 Windows Mixed Reality 몰입형 헤드셋과 연동됩니다. 시선은 VR에서 작동하고, 제스처는 컨트롤러의 선택(Select) 버튼을 사용할 때 트리거되고, 음성은 최종 사용자가 마이크를 PC에 연결한 경우에 사용할 수 있습니다.

HoloLens의 입력은 다른 플랫폼과 다른데, 이는 다음 유형의 입력을 주요 상호작용 수단으로 사용하기 때문입니다.

  1. 시선(Gaze): 월드 속에서 사용자가 보고 있는 위치를 추적하여 애플리케이션을 제어합니다.
  2. 음성(Voice): 짧은 음성으로 재생되는 커맨드 또는 좀 더 길고 자유로운 형식의 명령으로, 커맨드를 내리거나 액션을 트리거하는 데 사용됩니다.
  3. 제스처(Gesture): 수신호 또는 컨트롤러 입력을 통해 시스템에서 커맨드를 트리거합니다.

시선(모든 기기)

시선은 사용자가 바라보는 곳을 추적하는 입력 메커니즘입니다.

HoloLens에서는 시선의 정확도가 높아서 사용자들이 시선을 사용하여 월드에서 게임 오브젝트를 선택하도록 만들 수 있습니다. 또한 씬의 모든 게임 오브젝트가 아니라 특정 게임 오브젝트에서 커맨드를 지시할 수 있습니다.

시선을 사용하는 게임 오브젝트 타게팅 예제(흰색 원은 시선 표시기를 나타냄)
시선을 사용하는 게임 오브젝트 타게팅 예제(흰색 원은 시선 표시기를 나타냄)

자세한 정보는 시선 표시기시선 타게팅에 대한 Microsoft 문서를 참조하십시오.

음성(모든 기기)

Windows 10 API는 HoloLens와 몰입형 기기 모두에서 음성 입력을 제공합니다. Unity는 다음의 세 가지 입력을 지원합니다.

  • 키워드(Keywords): 이벤트를 생성하는 데 사용되는 간단한 커맨드 또는 문구(코드에서 설정)입니다. 이 입력을 사용하면 현지화가 필요하지 않은 경우에 한해 애플리케이션에 음성 커맨드를 빠르게 추가할 수 있습니다. KeywordRecognizer API를 통해 이 기능을 사용할 수 있습니다.

  • 문법(Grammars): 시맨틱 의미를 포함한 커맨드 표입니다. XML 문법 파일(.grxml)을 통해 문법을 설정한 후 필요에 따라 표를 현지화할 수 있습니다. 이 파일 포맷에 대한 자세한 내용은 문법 파일 생성에 대한 Microsoft 문서를 참조하십시오. GrammarRecognizer API를 통해 이 기능을 사용할 수 있습니다.

  • 받아쓰기(Dictation): 더 긴 음성 입력을 텍스트로 변환하는 더 자유로운 형식의 텍스트 음성 변환 시스템입니다. 배터리 수명을 연장하기 위해 HoloLens의 받아쓰기 인식은 짧은 시간 동안에만 작동하며, 인터넷 연결이 필요합니다. DictationRecognizer API를 통해 이 기능을 사용할 수 있습니다.

HoloLens 헤드셋에는 빌트인 마이크가 있어 추가 하드웨어 없이도 음성 입력이 가능합니다. 몰입형 헤드셋에서 음성 입력을 사용하는 애플리케이션의 경우 사용자가 외부 마이크를 PC에 연결해야 합니다.

음성 입력에 대한 자세한 내용은 음성 디자인에 대한 Microsoft 문서를 참조하십시오.

제스처(모든 기기)

제스처는 공간 컨트롤러의 시스템 또는 컨트롤러 신호에 의해 해석되는 수신호입니다. HoloLens와 몰입형 기기 모두 제스처 입력을 지원합니다. 몰입형 기기를 사용하려면 공간 컨트롤러를 통해 제스처 입력을 시작해야 하는 반면, HoloLens를 사용하려면 손을 움직여야 합니다. 제스처를 사용하여 애플리케이션에서 특정 커맨드를 트리거할 수 있습니다.

Windows Mixed Reality는 애플리케이션에서 사용 가능한 여러 빌트인 제스처와 커스텀 제스처 인식을 위한 일반 API를 제공합니다. 빌트인 제스처와 커스텀 제스처(API를 통해 추가) 모두 Unity에서 사용할 수 있습니다.

자세한 내용은 제스처에 대한 Microsoft 문서를 참조하십시오.

포커스 포인트(모든 기기)

Windows Mixed Reality는 LSR(Late Stage Reprojection, 후기 단계 재투영) 프로세스를 사용하여 프레임이 렌더링되는 시점과 디스플레이에 나타나는 시점 사이에 사용자의 머리 움직임을 보정합니다. 이러한 지연을 보정하기 위해 LSR은 가장 최신 머리 추적 데이터에 따라 렌더링된 이미지를 수정한 후 디스플레이에 표시합니다.

HoloLens는 안정화 평면을 재투영에 사용합니다(평면 기반 재투영에 대한 Microsoft 문서 참조). 이 평면은 사용자가 초점을 맞출 것 같은 영역을 나타냅니다. 이 안정화 평면에는 기본값이 있지만, 애플리케이션은 SetFocusPoint API를 사용하여 이 평면의 포지션, 노멀 및 속도를 명시적으로 설정할 수도 있습니다. 오브젝트는 이 평면과 교차하는 지점에서 매우 안정되게 표시됩니다. 또한 몰입형 헤드셋도 이 방법을 지원합니다. 하지만 이러한 기기의 경우에는 픽셀당 뎁스 재투영이라고 불리는 더 효율적인 재투영 방식이 제공됩니다.

3D 오브젝트를 위한 안정화 평면
3D 오브젝트를 위한 안정화 평면

몰입형 헤드셋을 사용하는 데스크톱 애플리케이션은 픽셀당 뎁스 재투영을 활성화하여 애플리케이션의 명시적 작업 없이도 고품질을 제공할 수 있습니다. 픽셀당 뎁스 재투영을 허용하려면 Windows Mixed Reality의 플레이어 설정(Player Settings)을 열고 XR 설정(XR Settings) > 가상 현실 SDK(Virtual Reality SDKs) 로 이동한 후 뎁스 버퍼 공유 활성화(Enable Depth Buffer Sharing) 를 선택하십시오.

몰입형 헤드셋을 사용하는 데스크톱 하드웨어에서 픽셀당 재투영 활성화
몰입형 헤드셋을 사용하는 데스크톱 하드웨어에서 픽셀당 재투영 활성화

뎁스 버퍼 공유 활성화(Enable Depth Buffer Sharing) 를 설정한 후에는 애플리케이션이 SetFocusPoint 메서드를 명시적으로 호출하지 않도록 해야 합니다. 이 메서드는 평면 기반 재투영으로 픽셀당 뎁스 재투영을 오버라이드합니다.

HoloLens에서는 뎁스 버퍼 공유 활성화(Enable Depth Buffer Sharing) 를 사용하도록 설정해도 기기의 OS를 Windows 10 Redstone 4(RS4)로 업데이트하지 않으면 아무런 효과가 없습니다. 기기가 RS4를 실행 중이면 뎁스 버퍼에서 찾은 범위 값에서 자동으로 안정화 평면을 확인합니다. 안정화 평면을 사용할 때도 재투영은 여전히 일어납니다. 하지만 애플리케이션은 SetFocusPoint를 명시적으로 호출할 필요가 없습니다.

HoloLens가 안정적인 홀로그램을 얻는 방법에 대한 자세한 내용은 홀로그램 안정성에 대한 Microsoft 문서를 참조하십시오.

Anchor(HoloLens 전용)

Anchor 컴포넌트는 가상 월드가 실제 월드와 상호작용하기 위한 수단입니다. Anchor는 연결된 게임 오브젝트에 있는 Transform 컴포넌트의 포지션 및 방향을 오버라이드하는 특수한 컴포넌트입니다.

WorldAnchor

WorldAnchor는 물리 월드의 정확한 지점에 대한 이해와 WorldAnchor 컴포넌트가 포함된 게임 오브젝트 간의 연결 고리를 나타냅니다. WorldAnchor를 추가하면 WorldAnchor 컴포넌트가 포함된 게임 오브젝트는 실제 세계의 위치에 고정된 상태를 유지하지만, 앵커의 포지션에 대한 기기의 이해가 더욱 정밀해짐에 따라 프레임 간에 Unity 좌표상의 위치가 변경될 수도 있습니다.

WorldAnchor의 일반적인 사용 방법은 다음과 같습니다.

  • 홀로그래픽 게임 보드를 테이블 위에 고정합니다.

  • 비디오(video) 창을 벽에 고정합니다.

물리적인 위치에 고정시킬 게임 오브젝트나 게임 오브젝트 그룹이 있는 경우 항상 WorldAnchor를 사용하십시오.

WorldAnchor는 부모 게임 오브젝트의 Transform 컴포넌트를 오버라이드하기 때문에 Transform 컴포넌트의 모든 직접 조작이 손실됩니다. 마찬가지로, WorldAnchor가 포함된 게임 오브젝트는 동적 물리 요소가 있는 Rigidbody 컴포넌트를 포함해서는 안 됩니다. 이러한 컴포넌트는 리소스를 많이 소모하고, WorldAnchor에서 멀어질수록 게임 성능이 저하됩니다.

참고: 성능 문제를 최소화하기 위해 적은 수의 WorldAnchor만 사용하십시오. 예를 들어 테이블 위에 놓인 게임 보드 표면에는 보드에 대한 하나의 앵커만 필요합니다. 이 경우 보드의 자식 게임 오브젝트에는 자체 WorldAnchor가 필요하지 않습니다.

자세한 내용과 베스트 프랙티스는 공간 앵커에 대한 Microsoft 문서를 참조하십시오.


  • 2018–03–27 편집 리뷰를 거쳐 페이지 게시됨

  • 2017.3에서 XR API 변경 사항에 대한 새로운 콘텐츠 추가됨

WMR 빠른 시작 가이드
개발 기간 동안 WMR 테스트