입력 시스템

입력 시스템은 MRTK에서 제공하는 모든 기능 중에서 가장 큰 시스템 중 하나입니다. 도구 키트 내의 많은 것이 그 위에 빌드됩니다(포인터, 포커스, 프리팹). 입력 시스템 내의 코드는 플랫폼 간에 잡기 및 회전과 같은 자연스러운 상호 작용을 허용합니다.

입력 시스템에는 정의할 가치가 있는 몇 가지 고유한 용어가 있습니다.

  • 데이터 공급자

    입력 프로필의 입력 설정에는 데이터 공급자라고 하는 엔터티에 대한 참조가 있습니다. 이를 설명하는 또 다른 단어는 디바이스 관리자입니다. 이러한 구성 요소는 특정 기본 시스템과 상호 작용하여 MRTK 입력 시스템을 확장하는 작업입니다. 공급자의 예로는 기본 Windows Mixed Reality API와 통신한 다음 해당 API의 데이터를 MRTK 관련 입력 개념으로 변환하는 Windows Mixed Reality 공급자가 있습니다. 또 다른 예로 OpenVR 공급자(OpenVR API의 Unity 추상화 버전과 통신한 다음, 해당 데이터를 MRTK 입력 개념으로 변환하는 작업)가 있습니다.

  • 컨트롤러

    실제 컨트롤러의 표현(6도 자유도 컨트롤러, 제스처를 지원하는 HoloLens 1 스타일 손, 완전히 굴절된 손, 윤 모션 컨트롤러 등). 컨트롤러는 디바이스 관리자에 의해 생성됩니다.(즉, WMR 디바이스 관리자는 컨트롤러를 생성하고 굴절된 손을 볼 때 수명을 관리합니다.)

  • 포인터

    컨트롤러는 포인터를 사용하여 게임 개체와 상호 작용합니다. 예를 들어 근거리 상호 작용 포인터는 손(컨트롤러)이 '근거리 상호 작용'을 지원하는 것으로 자신을 보급하는 개체와 가까운 시기를 감지합니다. 포인터의 다른 예로는 원거리 광선 캐스트를 사용하여 사용자의 암 길이보다 긴 콘텐츠에 참여하는 원격 이동 또는 원거리 포인터(예: 셸 손 광선 포인터)가 있습니다.

    포인터는 디바이스 관리자가 만든 다음 입력 소스에 연결됩니다. 컨트롤러에 대한 모든 포인터를 얻으려면 다음을 수행합니다. controller.InputSource.Pointers

    컨트롤러는 동시에 여러 포인터와 연결될 수 있습니다. 이로 인해 비정상 상황이 발생하지 않도록 하기 위해 활성화할 수 있는 포인터를 제어하는 포인터 중재자가 있습니다(예: 가까운 상호 작용이 감지될 때 중재자는 원거리 상호 작용 포인터를 사용하지 않도록 설정).

  • 포커스

    포인터 이벤트는 포커스가있는 개체로 전송됩니다. 포커스 선택은 포인터 형식에 따라 달라집니다. 손 광선 포인터는 광선 캐스트를 사용하고, 포이스트 포인터는 spherecast를 사용합니다. 개체는 포커스를 받으려면 IMixedRealityFocusHandler를 구현해야 합니다. 필터링되지 않은 포인터 이벤트를 수신하기 위해 개체를 전역적으로 등록할 수 있지만 이 방법은 권장되지 않습니다.

    포커스에 있는 개체를 업데이트하는 구성 요소는 FocusProvider입니다.

  • 커서

    포인터 상호 작용에 대한 추가 시각적 신호를 제공하는 포인터와 연결된 엔터티입니다. 예를 들어 FingerCursor는 손가락 주위에 링을 렌더링하고 손가락이 '거의 상호 작용 가능한' 개체에 가까울 때 해당 링을 회전할 수 있습니다. 포인터는 한 번에 하나의 커서와 연결될 수 있습니다.

  • 상호 작용 및 조작

    개체는 상호 작용 또는 조작 스크립트로 태그를 지정할 수 있습니다. 이는 를 통해 또는 와 같은 것일 수 InteractableNearInteractionGrabbable/ManipulationHandler 있습니다.

    예를 들어 NearInteractionGrabbable 및 NearInteractionTouchable을 사용하면 특정 포인터(특히 근거리 상호 작용 포인터)에서 포커스를 맞출 수 있는 개체를 알 수 있습니다.

    Interactable 및 ManipulationHandler는 포인터 이벤트를 수신 대기하여 UI 시각적 개체를 수정하거나 게임 개체를 이동/크기 조정/회전하는 구성 요소의 예입니다.

아래 이미지는 MRTK 입력 스택의 상위 수준 빌드(아래에서 위로)를 캡처합니다.

입력 시스템 다이어그램