Guía de migración de conceptos de MRTK2 a MRTK3

Cuando empiece a usar MRTK3, observará que se han cambiado, reemplazado o quitado varios conceptos de MRTK v2. Esto se debe a que MRTK3 usa el marco XR Interaction Toolkit (XRI) de Unity para controlar la interacción, y Unity Input System + OpenXR para la entrada. Este documento ayuda a salvar la brecha entre los conceptos de MRTK v2 y sus equivalentes de MRTK3.

Importante

En el caso de los desarrolladores nuevos en XRI, se recomienda revisar primero la documentación sobre la arquitectura de XRI de Unity. Toda la documentación de XRI también se aplica a MRTK3, ya que la mayoría de las características de interacción y entrada simplemente se han heredado de XRI.

Terminología

Término de MRTK v2 Término de MRTK3 Descripción
Puntero Interactor Los interactivos realizan interacciones en los objetos con los que se puede interactuar. Algunos (pero no todos) los interactivos están controlados por controladores, desde los que reciben acciones y posturas de entrada. Otros interactivos funcionan independientemente de los controladores.
MRTK incluye varios interactivos personalizados que proporcionan útiles interacciones de realidad mixta, además de los interactivos básicos que Unity ya ofrece. Los interactivos personalizados se pueden crear por medio de la herencia o mediante la implementación de las interfaces de interactivos (IXRHoverInteractor, IXRSelectInteractor, etc.). Vea la documentación sobre la arquitectura de los interactivos para obtener más información.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler Interactuable Los objetos con los que se puede interactuar son los destinatarios de las interacciones. MRTK incluye varios objetos con los que se puede interactuar personalizados que proporcionan útiles interacciones de realidad mixta, además de los básicos que Unity ya ofrece. Los objetos con los que se puede interactuar se pueden crear por medio de la herencia o mediante la implementación de las interfaces de objetos con los que se puede interactuar (IXRHoverInteractable, IXRSelectInteractable, etc.). Vea la documentación sobre la arquitectura de los objetos con los que se puede interactuar para obtener más información sobre cómo MRTK amplía los objetos con los que se puede interactuar de XRI.
Controller Controller Una instancia de ActionBasedController es una colección de acciones de entrada de Unity que representan los enlaces asociados a un dispositivo determinado. La colección de acciones de entrada se puede derivar de varios dispositivos, ya que no hay una relación 1:1 entre ActionBasedControllers y los dispositivos de entrada subyacentes. (DeviceBasedController es una asignación 1:1 de un dispositivo de entrada, pero no se usa).
Muchos interactivos (ControllerBasedInteractor, específicamente) escuchan a los controladores para conocer las acciones de entrada; es decir, todas las instancias de ControllerBasedInteractor bajo XRController comparten la misma acción de selección.
Sistema de teletransporte Sistema de locomoción El sistema de locomoción permite al usuario moverse por la escena durante una experiencia de XR. El sistema de MRTK v2 permite la teletransportación básica y los puntos de acceso de teletransporte, con un alto grado de personalización en el comportamiento del cursor y el puntero de teletransporte. XRI ofrece las siguientes capacidades adicionales para la locomoción:
  • Un proveedor de giro por grados que gira la plataforma por ángulos fijos
  • Un proveedor de giro continuo que gira suavemente la plataforma a lo largo del tiempo
  • Un proveedor de movimiento continuo que mueve suavemente la plataforma a lo largo del tiempo
Proveedor de foco Administrador de interacción de XR XRInteractionManager es el mecanismo de Unity que actúa como intermediario entre los interactivos y los objetos con los que se puede interactuar de la escena. XRInteractionManager de Unity sincroniza y arbitra todas las interacciones entre interactivos y objetos con los que se puede interactuar, y permite una flexibilidad considerablemente mayor en comparación con el proveedor de foco heredado.
Mediador de puntero Administrador de modo de interacción El nuevo administrador de modo de interacción se usa para habilitar o deshabilitar conjuntos de interactivos en función del contexto de la escena. Vea la documentación del administrador de modo para obtener más información.
SceneQuerymask Capas de interacción Las capas de interacción de XRI permiten a los desarrolladores filtrar qué interactivos pueden actuar en qué objetos con los que se puede interactuar. Son distintas de las capas físicas de Unity.
Foco Al mantener el puntero Los interactivos emiten movimientos del puntero a los objetos con los que se puede interactuar cuando estos son destinos válidos de los interactivos. Por lo general, un movimiento del puntero indica la intención del interactivo, como el destino con un rayo, la proximidad de la mano para agarrar o si el usuario está mirando el objeto.
Selección, toque, agarre, voz, etc. Seleccionar Los interactivos emiten selecciones a los objetos con los que se puede interactuar cuando estos son destinos válidos y el interactivo decide hacerlo así. Los interactivos ControllerBasedInteractors suelen emitir selecciones cuando se activa la acción de entrada de selección del controlador correspondiente. Otros interactivos pueden tener una lógica más compleja a la hora de determinar cuándo se deben emitir las selecciones al objeto con el que se puede interactuar de destino.

MRTK v2 controlaba los diferentes tipos de interacciones con eventos y rutas de código independientes; es decir, una agarre era una interacción fundamentalmente diferente a un clic de rayo o un toque, generado por sistemas independientes. En MRTK3, todas estas formas de "seleccionar" un objeto están unificadas en la misma interacción de selección.

Se desaconseja encarecidamente a los desarrolladores crear lógica de interacción que se base en un tipo específico de interacción; en su lugar, escriba código generalizable que responda de manera genérica a todas las selecciones. De este modo, las interacciones funcionan en todas las modalidades de entrada, incluso en los tipos de interacciones que aún no se han desarrollado. Vea la arquitectura de los objetos con los que se puede interactuar para obtener más información sobre por qué se recomienda esto.
N/D Activar Activar es una acción adicional que se puede generar en un objeto que ya se ha seleccionado. Por ejemplo, si un usuario selecciona una pistola de agua con el agarre del controlador, el desencadenador la desencadenaría con una acción Activar.
Proveedor de datos XRSubsystem + proveedor La mayoría de los proveedores de datos ya no son necesarios en MRTK3, ya que Unity Input System y OpenXR controlan la mayoría de las tareas de entrada multiplataforma. Pero, para algunos valores atípicos que aún no están cubiertos por Unity, se proporcionan XRSubsystem, que pueden proporcionar datos en distintas plataformas, como HandsAggregatorSubsystem y SpeechSubsystem. Vea la documentación sobre la arquitectura de los subsistemas para obtener una lectura más conceptual sobre nuestro enfoque de subsistemas.

Eventos

Término de MRTK v2 Término de XRI Notas
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
Tenga en cuenta los prefijos First y Last; esto se debe al hecho de que cualquier número de interactivos puede mantener simultáneamente el puntero sobre un objeto con el que se puede interactuar. También puede escuchar a cada puntero individual entrar o salir con HoverEnter y HoverExit, aunque generalmente es menos útil que supervisar el estado general del puntero.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
Tenga en cuenta los prefijos First y Last; esto se debe al hecho de que cualquier número de interactivos puede seleccionar simultáneamente un objeto con el que se puede interactuar (según el modo de selección). También puede escuchar a cada selección individual entrar o salir con SelectEnter y SelectExit, aunque generalmente es menos útil que supervisar el estado general de selección.
OnPointerDragged N/D Basta con sondear las transformaciones de asociación interactorsSelecting con GetAttachTransform durante una selección. Tenga en cuenta que, en función del modo de selección del objeto con el que se puede interactuar, un número ilimitado de interactivos puede seleccionar (y manipular) un objeto con el que se puede interactuar.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost N/D XRI no genera estos eventos. Se controlan mediante la supervisión por parte de XRController de su dispositivo de entrada asociado.