핵심 시스템 - MRTK2

입력 시스템의 핵심은 MRTK와 연결된 모든 입력 관련 기능을 초기화하고 운영하는 서비스인 InputSystem입니다.

참고

독자는 이미 용어 섹션을 읽고 기본적인 이해를 가지고 있다고 가정합니다.

이 서비스는 다음을 담당합니다.

  • 입력 시스템 프로필 읽기
  • 구성된 데이터 공급자 (예 Windows Mixed Reality Device Manager : 및 OpenVR Device Manager)를 시작합니다.
  • HoloLens 2 스타일 시선 응시 정보 외에도 HoloLens(1세대) 스타일 머리 응시 정보를 제공하는 구성 요소인 GazeProvider의 인스턴스화입니다.
  • 포커스가 있는 개체를 결정하는 구성 요소인 FocusProvider의 인스턴스화입니다. 설명서의 포인터 및 포커스 섹션에서 자세히 설명합니다.
  • 모든 입력 이벤트에 대한 등록 지점 제공( 전역 수신기로)
  • 이러한 입력 이벤트에 대한 이벤트 디스패치 기능을 제공합니다.

입력 이벤트

입력 이벤트는 일반적으로 두 개의 서로 다른 채널에서 발생합니다.

포커스가 있는 개체

이벤트는 포커스가 있는 GameObject로 직접 보낼 수 있습니다. 예를 들어 개체에 구현하는 스크립트가 있을 수 있습니다.IMixedRealityTouchHandler 이 개체는 가까이 있는 손에 초점을 맞출 때 터치 이벤트를 가져옵니다. 이러한 유형의 이벤트는 이벤트를 처리할 수 있는 GameObject를 발견할 때까지 GameObject 계층 구조를 "위로" 이동합니다.

이 작업은 기본 입력 시스템 구현 내에서 ExecuteHierarchy 를 사용하여 수행됩니다.

전역 수신기

전역 수신기에 이벤트를 보낼 수 있습니다. 입력 시스템의 IMixedRealityEventSystem 인터페이스를 사용하여 모든 입력 이벤트에 등록할 수 있습니다. 전역 이벤트에 등록하기 위해 RegisterHandler 메서드를 사용하는 것이 좋습니다. 사용되지 않는 Register 함수는 특정 형식의 입력 이벤트(형식이 이벤트 인터페이스에 의해 정의된 경우)가 아니라 수신기가 ALL 입력 이벤트에 대한 알림을 받도록 합니다.

대체 수신기는 장면의 다른 곳에서 처리되지 않은 모든 단일 입력 이벤트를 수신하므로 권장되지 않는 또 다른 유형의 전역 수신기입니다.

이벤트 디스패치 순서

일반적으로 이벤트는 다음과 같은 방식으로 수신기에 전송됩니다. 아래 단계 중에서 이벤트를 처리된 것으로 표시하면 이벤트 디스패치 프로세스가 중지됩니다.

  1. 이벤트는 전역 수신기로 전송됩니다.
  2. 이벤트는 포커스가 있는 개체의 모달 대화 상자로 전송됩니다.
  3. 이벤트가 포커스가 있는 개체로 전송됩니다.
  4. 이벤트는 대체 수신기로 전송됩니다.

디바이스 관리자 및 데이터 공급자

이러한 엔터티는 하위 수준 API(예: Windows Mixed Reality API 또는 OpenVR API)와 상호 작용하고 해당 시스템의 데이터를 MRTK의 상위 수준 입력 추상화에 맞는 데이터로 변환합니다. 컨트롤러의 수명을 검색, 생성 및 관리하는 역할을 담당합니다.

디바이스 관리자의 기본 흐름에는 다음이 포함됩니다.

  1. 디바이스 관리자는 입력 시스템 서비스에 의해 인스턴스화됩니다.
  2. 디바이스 관리자는 기본 시스템에 등록합니다(예: Windows Mixed Reality 디바이스 관리자가 입력제스처 이벤트에 등록합니다.
  3. 기본 시스템에서 검색하는 컨트롤러를 만듭니다(예: 공급자가 굴절된 손의 존재를 감지할 수 있음).
  4. Update() 루프에서 UpdateController()를 호출하여 기본 시스템의 새 상태를 폴링하고 컨트롤러 표현을 업데이트합니다.