Базовая система — 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 низкого уровня (например, Windows Mixed Reality API или API OpenVR) и переводом данных из этих систем в те, которые соответствуют абстракции входных данных MRTK более высокого уровня. Они отвечают за обнаружение, создание и управление временем существования контроллеров.

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

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