Поделиться через


Жесты — MRTK2

Жесты — это входные события на основе человеческих рук. Существует два типа устройств, которые вызывают события ввода жестов в MRTK:

  • Устройства Windows Смешанная реальность, такие как HoloLens. В этом разделе описываются движения ("Воздушный касание") и жесты касания и удержания.

    Дополнительные сведения о жестах HoloLens см. в документации по жестам Windows Смешанная реальность.

    WindowsMixedRealityDeviceManager упаковывает XR Unity. WSA. Input.GestureRecognizer для использования событий жестов Unity с устройств HoloLens.

  • Сенсорные устройства.

    UnityTouchController упаковывает класс Unity Touch, поддерживающий физические сенсорные экраны.

Оба этих источника ввода используют профиль жеста Параметры для перевода событий сенсорного и жеста Unity соответственно в действия ввода MRTK. Этот профиль можно найти в профиле входной системы Параметры.

Профиль жестов

События жестов

События жестов получаются путем реализации одного из интерфейсов обработчика жестов: IMixedRealityGestureHandler или IMixedRealityGestureHandler<TYPE> (см. таблицу обработчиков событий).

Пример сцены см. в примере реализации обработчика событий жестов.

При реализации универсальной версии события OnGestureCompleted и OnGestureUpdated могут получать типизированные данные следующих типов:

  • Vector2 — жест положения 2D. Производится сенсорными экранами, чтобы сообщить о своих deltaPosition.
  • Vector3 — жест трехмерной позиции. Производится HoloLens для информирования:
  • Quaternion — жест поворота трехмерного ввода. Доступно для пользовательских источников входных данных, но в настоящее время не производится ни одной из существующих.
  • MixedRealityPose — Объединенный трехмерный жест положения и поворота. Доступно для пользовательских источников входных данных, но в настоящее время не производится ни одной из существующих.

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

В зависимости от входных данных пользователя существует две основные цепочки событий:

  • "Удержание":

    1. Удерживайте касание:
      • Запуск манипуляции
    2. Удерживайте касание за пределами HoldStartDuration:
      • Начальная удержание
    3. Коснитесь выпуска:
      • полное удержание
      • Полная манипуляция
  • "Переместить":

    1. Удерживайте касание:
      • Запуск манипуляции
    2. Удерживайте касание за пределами HoldStartDuration:
      • Начальная удержание
    3. Перемещение руки за пределы NavigationStartThreshold:
      • Отмена удержания
      • Запуск навигации
    4. Коснитесь выпуска:
      • Полная манипуляция
      • полная навигация

Пример сцены

Сцена HandInteractionGestureEventsExample (Assets/MRTK/Examples/Demos/HandTracking/Scene) показывает, как использовать результат указателя для создания объекта в расположении попадания.

GestureTester Скрипт (Assets/MRTK/Examples/Demos/HandTracking/Script) — это пример реализации для визуализации событий жестов с помощью GameObjects. Функции обработчика изменяют цвет объектов индикатора и отображают последнее записанное событие в текстовых объектах в сцене.