Guide de migration des concepts MRTK2 vers MRTK3

Lorsque vous commencez à utiliser MRTK3, vous remarquez que plusieurs concepts dans MRTK v2 ont été modifiés, remplacés ou supprimés. C’est parce que MRTK3 utilise le framework XR Interaction Toolkit (XRI) d’Unity pour traiter l’interaction et le système d’entrée Unity plus OpenXR pour l’entrée. Ce document aidera à combler les lacunes entre les concepts MRTK v2 et leurs équivalents MRTK3.

Important

Pour les développeurs qui débutent avec XRI, nous vous recommandons de consulter d’abord la documentation de l’architecture XRI d’Unity. Toute la documentation XRI s’applique également à MRTK3, car la plupart des fonctionnalités d’interaction et d’entrée sont simplement héritées de XRI.

Terminologie

Terme MRTK v2 Terme MRTK3 Description
Pointeur Interaction Les interactions effectuent des interactions sur des éléments avec interaction. Certaines interactions (mais pas toutes) sont pilotées par des contrôleurs, desquels ils reçoivent des actions d’entrée et des postures. D’autres interactions fonctionnent indépendamment des contrôleurs.

MRTK fournit plusieurs interacteurs personnalisés qui offrent des interactions de réalité mixte utiles en plus des interacteurs de base qu’Unity fournit déjà. Les interacteurs personnalisés peuvent être générés par héritage ou en implémentant les interfaces Interactor (IXRHoverInteractor, IXRSelectInteractor, etc.). Pour plus d’informations, consultez la documentation de l’architecture des interacteurs.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler Avec interaction Les éléments avec interaction sont les destinataires des interactions. MRTK fournit plusieurs interactables personnalisés qui offrent des interactions de réalité mixte utiles en plus des interactables de base qu’Unity fournit déjà. Les interactables peuvent être générés par héritage ou en implémentant les interfaces Interactable (IXRHoverInteractable, IXRSelectInteractable, etc.). Pour plus d’informations sur la façon dont MRTK étend les interactables XRI, consultez la documentation sur l’architecture des interactables.
Contrôleur Contrôleur Un ActionBasedController est une collection d’actions d’entrée Unity représentant les liaisons associées à un appareil particulier. La collection d’actions d’entrée peut être dérivée de plusieurs appareils, car il n’existe pas de relation 1:1 entre ActionBasedControllers et les appareils d’entrée sous-jacents. (Un DeviceBasedController est un mappage 1:1 d’un appareil d’entrée, mais nous ne les utilisons pas.)

De nombreux interacteurs (ControllerBasedInteractors, en particulier) écoutent les actions d’entrée des contrôleurs. En d’autres termes, tous les ControllerBasedInteractors sous un XRController partagent la même action de sélection.
Système de téléportation Système Locomotion Le système Locomotion permet à l’utilisateur de se déplacer sur la scène pendant une expérience XR. Le système de MRTK v2 permet une téléportation de base et des points d’accès de téléportation, avec un degré élevé de personnalisation du comportement du curseur et du pointeur de téléportation. XRI offre les fonctionnalités de locomotion ajoutées suivantes :
  • Un Snap Turn Provider qui fait pivoter la plateforme à angles fixes
  • Un Continuous Turn Provider qui fait pivoter la plateforme de manière fluide au fil du temps
  • Un Continuous Move Provider qui déplace lentement la plateforme au fil du temps
Focus Provider Gestionnaire d’interaction XR XRInteractionManager est le mécanisme Unity qui sert d’intermédiaire entre les interactions et les éléments avec interaction dans la scène. Unity XRInteractionManager synchronise et arbitre toutes les interactions entre les interactions et les éléments avec interaction, et offre une plus grande flexibilité par rapport au Focus Provider hérité.
Pointer Mediator Gestionnaire du mode d’interaction Le nouveau Gestionnaire du mode d’interaction est utilisé pour activer/désactiver des ensembles d’interactions en fonction du contexte de la scène. Pour plus d’informations, consultez la documentation du gestionnaire de mode.
SceneQuerymask Couches d’interaction Les couches d’interaction XRI permettent aux développeurs de filtrer les interactions qui peuvent agir sur les éléments avec interaction. Ces couches sont distinctes des couches physiques Unity.
Priorité Pointage Les interactions génèrent des pointages sur les éléments avec interaction lorsque l’élément avec interaction est une cible valide pour l’interaction. En règle générale, un pointage indique l’intention de l’interaction, comme le ciblage avec un rayon, la proximité de la main pour saisir, ou si l’utilisateur examine l’objet.
Select/Poke/Grab/Voice etc. Sélectionnez Les interactions génèrent des sélections sur les éléments avec interaction lorsque l’élément avec interaction est une cible valide et que l’interaction choisit de le faire. Les ControllerBasedInteractors génèrent généralement des sélections lorsque l’action d’entrée de sélection du contrôleur correspondant est déclenchée. D’autres interactions peuvent avoir une logique plus complexe pour déterminer quand les sélections doivent être générées sur l’élément avec interaction ciblé.

MRTK v2 traitait différents types d’interactions avec des événements et des chemins de code distincts. En d’autres termes, une saisie était une interaction fondamentalement différente d’un clic ou d’un appui, généré par des systèmes distincts. Dans MRTK3, toutes ces méthodes de « sélection » d’un objet sont unifiées sous la même interaction Sélectionner.

Nous déconseillons vivement les développeurs de créer une logique d’interaction qui s’appuie sur un type d’interaction spécifique. Écrivez plutôt du code généralisable qui répond de façon générique à tous les sélections. De cette façon, vos interactions fonctionnent sur toutes les modalités d’entrée, et même pour les types d’interactions qui n’ont pas encore été développés. Pour plus d’informations sur la raison pour laquelle nous déconseillons ce cours, consultez l’architecture des interactables.
N/A Activer Activer est une action supplémentaire qui peut être déclenchée sur un objet qui a déjà été sélectionné. Par exemple, si un utilisateur sélectionne une arme avec la poignée du contrôleur, le déclencheur l’active avec une action Activate.
Fournisseur de données XRSubsystem + Provider La plupart des fournisseurs de données ne sont plus nécessaires dans MRTK3, car le système d’entrée Unity et OpenXR traitent la plupart des tâches d’entrée multiplateformes. Toutefois, pour certaines valeurs hors norme qui ne sont pas encore couvertes par Unity, nous proposons des XRSubsystems qui peuvent fournir des données sur différentes plateformes, comme HandsAggregatorSubsystem et SpeechSubsystem. Consultez la documentation de l’architecture des sous-systèmes pour une lecture plus conceptuelle de notre approche des sous-systèmes.

Événements

Terme MRTK v2 Terme XRI Notes
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
Notez les préfixes First et Last. Ils sont ajoutés dans les noms d’événements, car n’importe quel nombre d’interacteurs peut pointer simultanément sur un interactable. Vous pouvez également écouter chaque entrée/sortie de pointage individuel avec HoverEnter et HoverExit, bien que cela soit moins utile que de monitorer l’état général du pointage.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
Notez les préfixes First et Last. Ils sont ajoutés dans les noms d’événements, car n’importe quel nombre d’interacteurs peut sélectionner simultanément un interactable (en fonction du mode de sélection). Vous pouvez également écouter chaque entrée/sortie de sélection individuelle avec SelectEnter et SelectExit, bien que cela soit moins utile que de monitorer l’état général de la sélection.
OnPointerDragged N/A Interrogez simplement les transformations d’attachement interactorsSelecting avec GetAttachTransform lors d’une sélection. N’oubliez pas que, selon le mode de sélection de l’élément avec interaction, un nombre illimité d’interactions peut sélectionner (et manipuler) un élément avec interaction.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost N/A XRI ne déclenche pas ces événements. Ils sont traités par le biais de la surveillance XRController de son appareil d’entrée associé.