Как настроить MRTK для работы с сенсорным вводом в редакторе и на мобильных устройствах? - PullRequest
1 голос
/ 02 июля 2019

Я создаю приложение, которое будет работать как на HoloLens, так и на мобильных устройствах (iOS / Android). Я хотел бы иметь возможность использовать одинаковые обработчики манипуляции на всех устройствах с целями:

  1. Использовать ARFoundation для отслеживания и ввода с мобильного устройства
  2. Используйте сенсорный ввод с MRTK с ManipulationHandler и в противном случае используйте сенсорный ввод как обычно (UI)
  3. Имитировать сенсорный ввод в редакторе (используя сенсорный экран или мышь), но сохраняйте контроллер клавиатуры / мыши для позиционирования камеры.

Пока я пробовал / нашел:

  1. MixedRealityPlayspace всегда является родителем камеры, поэтому я добавил ARSessionOrigin к этому компоненту и все компоненты AR по умолчанию для камеры (ARCameraManager, TrackedPoseDriver, ARRayCastManager и т. Д.)
  2. Настройка профиля указателя MRTK только для мыши MousePointer и TouchPointer.
  3. Удаление лишних поставщиков входных данных.
  4. Отключение имитации рук в службе InputSimulationService

Вообще говоря, метод добавления ARSessionOrigin в MixedRealityPlayspace работает должным образом, и установка ARFoundation тривиальна. Однако я пытаюсь понять, как заставить ManipulationHandler реагировать на сенсорный ввод.

Я столкнулся со следующими проблемами:

  1. Перетаскивание пальцем сенсорного экрана перемещает камеру (редактор). Отключение InputSimulationService исправляет это, но затем я не могу переместить камеру ...
  2. Даже при отключенной камере нажатие и перетаскивание не влияет на ManipulationHandler.
  3. Лучи отладки отрисовываются в правильном направлении, но лучи сенсорной точки по умолчанию рисуются в странных положениях. Я приложил .gif, объясняющий это. Это использует сенсорный ввод в редакторе. Тот же эффект наблюдается при работе на устройстве (Android).

Это также относится к Unity UI (world space canvas), при котором нажатие на элемент пользовательского интерфейса не срабатывает (на устройстве или в редакторе), что наводит меня на мысль, что это проблема с указателем, а не проблема с обработчиком.

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

1 Ответ

0 голосов
/ 21 июля 2019

Взаимодействие с пользовательским интерфейсом Unity в мировом пространстве на мобильном телефоне должно работать в MRTK, но есть несколько ошибок в системе ввода, препятствующих его работе.Проблема отслеживается здесь: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/5390.

Исправление не было зарегистрировано, но вы можете применить обходной путь (пока во многом благодаря работе, которую вы сделали, newske!).Обходной путь выложен в выпуске.Пожалуйста, см. https://gist.github.com/julenka/ccb662c2cf2655627c95ffc708cf5a69. Просто замените каждый файл в MRTK версией в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...