Terminologie du système d’entrée — MRTK2

Le système d’entrée est l’un des plus grands systèmes parmi toutes les fonctionnalités offertes par MRTK. Tant de choses dans la boîte à outils s’appuient dessus (pointeurs, focus, préfabriqués). Le code au sein du système d’entrée permet des interactions naturelles telles que la capture et la rotation entre les plateformes.

Le système d’entrée a sa propre terminologie qui mérite d’être définie :

  • Fournisseurs de données

    Les paramètres d’entrée dans le profil d’entrée ont des références à des entités appelées fournisseurs de données. Un autre mot qui les décrit est les gestionnaires d’appareils. Il s’agit de composants dont le travail consiste à étendre le système d’entrée MRTK en interfaçant avec un système sous-jacent spécifique. Un exemple de fournisseur est le fournisseur Windows Mixed Reality, dont le travail consiste à discuter avec les API Windows Mixed Reality sous-jacentes, puis à traduire les données de ces API en concepts d’entrée spécifiques à MRTK ci-dessous. Un autre exemple est le fournisseur OpenVR (dont le travail consiste à communiquer avec la version unity-abstraite des API OpenVR, puis à traduire ces données en concepts d’entrée MRTK).

  • Contrôleur

    Représentation d’un contrôleur physique (qu’il s’agisse d’un contrôleur à 6 degrés de liberté, d’une main de style HoloLens 1 avec support de mouvement, d’une main entièrement articulée, d’un contrôleur de mouvement de saut, etc.). Les contrôleurs sont générés par les gestionnaires d’appareils (c’est-à-dire que le gestionnaire de périphériques WMR génère un contrôleur et gère sa durée de vie lorsqu’il voit une main articulée apparaître).

  • Pointeur

    Les contrôleurs utilisent des pointeurs pour interagir avec les objets de jeu. Par exemple, le pointeur d’interaction proche est chargé de détecter quand la main (qui est un contrôleur) est proche des objets qui s’annoncent comme prenant en charge l'« interaction proche ». D’autres exemples de pointeurs sont la téléportation ou les pointeurs lointains (c’est-à-dire le pointeur de rayons de la main de l’interpréteur de commandes) qui utilisent des raycasts lointains pour s’engager avec du contenu plus long que celui de l’utilisateur.

    Les pointeurs sont créés par le gestionnaire de périphériques, puis attachés à une source d’entrée. Pour obtenir tous les pointeurs d’un contrôleur, procédez comme suit : controller.InputSource.Pointers

    Notez qu’un contrôleur peut être associé à de nombreux pointeurs différents en même temps. Pour s’assurer que cela ne se transforme pas en chaos, il existe un médiateur de pointeur qui contrôle les pointeurs autorisés à être actifs (par exemple, le médiateur désactive les pointeurs d’interaction lointains quand une interaction proche est détectée).

  • Priorité

    Les événements de pointeur sont envoyés aux objets en focus. La sélection du focus varie selon le type de pointeur ; un pointeur de rayons main utilise des raycasts, tandis qu’un pointeur poke utilise des spherecasts. Un objet doit implémenter IMixedRealityFocusHandler pour recevoir le focus. Il est possible d’inscrire globalement un objet pour recevoir des événements de pointeur non filtrés, mais cette approche n’est pas recommandée.

    Le composant qui met à jour les objets qui sont en focus est le FocusProvider

  • Curseur

    Entité associée à un pointeur qui donne des indices visuels supplémentaires autour de l’interaction du pointeur. Par exemple, l’élément FingerCursor affiche un anneau autour de votre doigt et peut faire pivoter cet anneau lorsque votre doigt est proche d’objets « quasiment interagissants ». Un pointeur peut être associé à un seul curseur à la fois.

  • Interaction et manipulation

    Les objets peuvent être marqués avec un script d’interaction ou de manipulation. Cela peut être via un Interactable, ou quelque chose comme/NearInteractionGrabbableManipulationHandler .

    Par exemple, NearInteractionGrabbable et NearInteractionTouchable permettent à certains pointeurs (en particulier les pointeurs d’interaction proche) de savoir sur quels objets peuvent se concentrer.

    Interactable et ManipulationHandler sont des exemples de composants qui écoutent les événements de pointeur pour modifier des visuels d’interface utilisateur ou déplacer/mettre à l’échelle/faire pivoter des objets de jeu.

L’image ci-dessous capture la build de haut niveau (de bas en haut) de la pile d’entrée MRTK :

Diagramme du système d’entrée