Базовая система — MRTK2

В основе системы ввода лежит inputSystem, которая представляет собой службу, которая отвечает за инициализацию и управление всеми функциями, связанными с вводом, связанными с MRTK.

Примечание

Предполагается, что читатели уже прочитали и имеют базовое представление о разделе терминологии .

Эта служба отвечает за:

  • Чтение профиля системы ввода
  • Запуск настроенных поставщиков данных (например, Windows Mixed Reality Device Manager и OpenVR Device Manager).
  • Создание экземпляра GazeProvider, который является компонентом, отвечающим за предоставление сведений о взгляде в стиле HoloLens (1-го поколения) в дополнение к HoloLens 2 информации о взгляде стиля.
  • Создание экземпляра FocusProvider, который является компонентом, отвечающим за определение объектов с фокусом. Более подробно это описано в разделе указателей и фокуса документации.
  • Предоставление точек регистрации для всех событий ввода (в качестве глобальных прослушивателей).
  • Предоставление возможностей диспетчеризации событий для этих входных событий.

События ввода

События ввода обычно запускаются в двух разных каналах:

Объекты в фокусе

События можно отправлять непосредственно в объект GameObject с фокусом. Например, объект может иметь скрипт, реализующий IMixedRealityTouchHandler. Этот объект будет получать события касания при фокусе рукой, которая находится рядом с ним. Эти типы событий идут вверх по иерархии GameObject, пока не найдет GameObject, способный обрабатывать событие.

Для этого используется ExecuteHierarchy из реализации системы ввода по умолчанию.

Глобальные прослушиватели

События можно отправлять в глобальные прослушиватели. Можно зарегистрироваться для всех входных событий с помощью интерфейса системы IMixedRealityEventSystem ввода. Рекомендуется использовать метод RegisterHandler для регистрации глобальных событий. Нерекомендуемая Register функция приведет к тому, что прослушиватели будут получать уведомления обо всех событиях ввода, а не только о событиях ввода определенного типа (где тип определяется интерфейсом событий).

Обратите внимание, что резервные прослушиватели — это еще один тип глобальных прослушивателей, которые также не рекомендуется, так как они будут получать каждое событие ввода, которое не было обработано в другом месте сцены.

Порядок отправки событий

Как правило, события отправляются прослушивателям следующим образом. Обратите внимание, что если какой-либо из описанных ниже шагов помечает событие как обработанное, процесс отправки событий останавливается.

  1. Событие отправляется в глобальные прослушиватели.
  2. Событие отправляется в модальные диалоговые окна фокусировочного объекта.
  3. Событие отправляется в объект фокусировки.
  4. Событие отправляется в резервные прослушиватели.

Диспетчеры устройств и поставщики данных

Эти сущности отвечают за взаимодействие с API более низкого уровня (например, API Windows Mixed Reality или OPENVR) и преобразование данных из этих систем в те, которые соответствуют более высоким уровням входных абстракций MRTK. Они отвечают за обнаружение, создание и управление временем существования контроллеров.

Базовый поток диспетчера устройств включает в себя:

  1. Экземпляр диспетчера устройств создается службой системы ввода.
  2. Диспетчер устройств регистрируется в своей базовой системе (например, Windows Mixed Reality диспетчер устройств будет регистрироваться для событий ввода и жестов.
  3. Он создает контроллеры, обнаруженные из базовой системы (например, поставщик может обнаружить наличие шарнирных рук).
  4. В цикле Update() вызовите Метод UpdateController(), чтобы опросить новое состояние базовой системы и обновить представление контроллера.