Руководство по смене понятий при миграции с MRTK2 на MRTK3

Приступая к использованию MRTK3, вы обнаружите, что определенные понятия, знакомые вам по MRTK версии 2, оказались изменены, заменены или удалены. Причина в том, что MRTK3 использует для обработки взаимодействий платформу XR Interaction Toolkit (XRI) Unity, а для ввода — систему ввода Unity + OpenXR. Этот документ поможет перейти с концепций MRTK версии 2 на соответствующие понятия MRTK3.

Важно!

Разработчикам, не знакомым с XRI, рекомендуется сначала ознакомиться с документацией по архитектуре XRI в Unity. Вся документация по XRI также относится к MRTK3, поскольку большинство функций взаимодействия и ввода просто наследуются из XRI.

Терминология

Термин MRTK версии 2 Термин MRTK3 Описание
Указатель Объект interactor Объекты interactor осуществляют взаимодействия с интерактивными элементами. Некоторые (но не все) объекты interactor управляются контроллерами, от которых они получают входные действия и положения. Другие объекты interactor работают отдельно от контроллеров.

MRTK содержит несколько настраиваемых объектов interactor, которые обслуживают полезные взаимодействия в контексте смешанной реальности, наряду с базовыми объектами interactor, уже доступными в Unity. Пользовательские объекты interactor можно создавать путем наследования или реализации интерфейсов Interactor (IXRHoverInteractor, IXRSelectInteractor и т. д.). Дополнительные сведения см. в документации по архитектуре объектов interactor.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler Интерактивный объект Интерактивные объекты — это получатели взаимодействий. MRTK содержит несколько настраиваемых интерактивных объектов, которые обслуживают полезные взаимодействия в контексте смешанной реальности, наряду с базовыми интерактивными объектами, уже доступными в Unity. Интерактивные объекты можно создавать путем наследования или реализации интерфейсов интерактивных объектов (IXRHoverInteractable, IXRSelectInteractable и т. д.). Дополнительные сведения о расширении интерактивных объектов XRI в MRTK см. в документации по архитектуре интерактивных объектов.
Контроллер Контроллер ActionBasedController — это коллекция действий ввода Unity, представляющих привязки, которые связаны с конкретным устройством. Коллекция действий ввода может поступать с разных устройств, так как между базовыми объектами ActionBasedControllers и конкретными устройствами ввода не существует однозначного сопоставления. (DeviceBasedController представляет однозначное сопоставление с устройством ввода, но мы не используем этот элемент.)

Многие объекты interactor (в частности, ControllerBasedInteractor) отслеживают контроллеры на предмет входных действий, т. е. все элементы ControllerBasedInteractor ниже XRController в иерархии будут совместно использовать одно действие выбора.
Система телепортирования Система передвижения Система передвижения позволяет пользователю перемещаться по сцене во время работы с XR. Система MRTK версии 2 реализует основные точки телепортации, позволяя гибко настраивать работу курсора и указателя телепорта. XRI предлагает следующие дополнительные возможности в контексте передвижения:
  • Поставщик резкого поворота, который поворачивает платформу на фиксированные углы
  • Поставщик непрерывного поворота, который плавно поворачивает платформу с течением времени
  • Поставщик непрерывного перемещения, который плавно перемещает платформу с течением времени
Поставщик фокуса Диспетчер взаимодействия XR XRInteractionManager — это механизм Unity, который выступает в качестве посредника между объектами interactor и интерактивными объектами на сцене. XRInteractionManager Unity синхронизирует и разрешает все взаимодействия между объектами interactor и интерактивными объектами и обеспечивает значительно большую гибкость по сравнению с устаревшим поставщиком фокуса.
Посредник указателя Диспетчер режимов взаимодействия Новый диспетчер режимов взаимодействия используется для включения и отключения наборов объектов interactor в зависимости от контекста на сцене. Дополнительные сведения см. в документации по диспетчеру режимов.
SceneQuerymask Уровни взаимодействия Уровни взаимодействия XRI позволяют разработчикам фильтровать объекты interactor, способные воздействовать на интерактивные объекты. Эти уровни не соответствуют физическим уровням Unity.
Фокус Наведение Объекты interactor инициируют события наведения указателя на интерактивные объекты, когда взаимодействие является допустимой целью для объекта interactor. Как правило, наведение указателя обозначает намерение объекта interactor, например нацеливание лучом, близость руки для захвата или взгляд пользователя на объект.
Выбор, касание, захват, голос и т. п. Выбрать Объекты interactor инициируют события выбора интерактивного объекта, если интерактивный объект является допустимой целью для объекта interactor и объект interactor принимает решение о выборе. Объекты ControllerBasedInteractor обычно инициируют события выбора при срабатывании действия ввода соответствующего контроллера. Другие объекты interactor могут использовать более сложную логику, от которой зависит срабатывание события выбора для целевого интерактивного объекта.

В MRTK версии 2 различные виды взаимодействий обрабатывались с использованием собственных событий и путей кода. Таким образом, захват принципиально отличался от щелчка лучом или касания, и эти взаимодействия генерировались отдельными системами. В MRTK3 все эти способы выбора объекта объединены во взаимодействии выбора.

Мы настоятельно не рекомендуем разработчикам создавать отдельную логику для каждого конкретного типа взаимодействия: вместо этого стоит написать универсальный код, который соответствует всем режимам выбора. В результате ваши взаимодействия будут работать со всеми методами ввода и даже с типами взаимодействий, которые еще не разработаны. Дополнительные сведения о том, почему мы рекомендуем использовать такой подход, см. в статье об архитектуре интерактивных объектов.
Н/Д Активировать Активация — это дополнительное действие, которое может быть инициировано для уже выбранного объекта. Например, если пользователь выбирает пистолет путем захвата на контроллере, действие активации спускового крючка позволяет инициировать выстрел.
Поставщик данных XRSubsystem + поставщик Большинство поставщиков данных в MRTK3 больше не нужны, так как система ввода Unity и OpenXR обрабатывают большинство кросс-платформенных задач ввода. Но для тех редких сценариев, которые еще не охвачены Unity, мы предлагаем подсистемы XRSubsystem для предоставления данных на разных платформах, таких как HandsAggregatorSubsystem и SpeechSubsystem. Более фундаментальные сведения о нашем подходе к подсистемам см. в документации по архитектуре подсистем.

События

Термин MRTK версии 2 Термин XRI Примечания
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
Обратите внимание на префиксы First и Last. Они включены в имена событий, так как над интерактивным элементом может находиться любое количество объектов interactor. Вы также можете отслеживать каждый отдельный ввод и выход наведения с помощью HoverEnter и HoverExit, хотя это не так эффективно, как отслеживание общего состояния наведения.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
Обратите внимание на префиксы First и Last. Они включаются в имена событий, так как интерактивный объект может одновременно выбирать любое количество объектов interactor (в зависимости от режима выбора). Вы также можете отслеживать каждый отдельный ввод и выход выбора с помощью SelectEnter и SelectExit, хотя это не так эффективно, как отслеживание общего состояния выбора.
OnPointerDragged Н/Д Просто опрашивайте преобразования прикрепления interactorsSelecting с помощью GetAttachTransform во время выбора. Имейте в виду, что в зависимости от режима выбора интерактивного элемента выбрать его (и манипулировать им) может неограниченное число объектов interactor.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost Н/Д XRI не инициирует эти события. Они обрабатываются контроллером XRController, который отслеживает связанное устройство ввода.