Système de base

Au cœur du système d’entrée se trouve le InputSystem, qui est un service responsable de l’initialisation et de l’utilisation de toutes les fonctionnalités d’entrée associées à MRTK.

Notes

Il est supposé que les lecteurs ont déjà lu et ont une compréhension de base de la section terminologie .

Ce service est responsable des tâches suivantes :

  • Lecture du profil de système d’entrée
  • Démarrage des fournisseurs de données configurés (par exemple, Windows Mixed Reality Device Manager et OpenVR Device Manager ).
  • Instanciation de GazeProvider, qui est un composant qui est chargé de fournir les informations de pointage de la tête de style hololens (1re génération) en plus des informations sur le regard de style hololens 2.
  • Instanciation de FocusProvider, qui est un composant responsable de la détermination des objets qui ont le focus. Cela est décrit plus en détail dans la section pointeurs et Focus de la documentation.
  • Fourniture de points d’enregistrement pour tous les événements d’entrée (en tant qu' écouteurs globaux).
  • Fournir des fonctionnalités de répartition des événements pour ces événements d’entrée.

Événements d’entrée

Les événements d’entrée sont généralement déclenchés sur deux canaux différents :

Objets en focus

Les événements peuvent être envoyés directement à un GameObject qui a le focus. Par exemple, un objet peut avoir un script qui implémente IMixedRealityTouchHandler . Cet objet recevrait des événements tactiles lorsqu’il était ciblé par une main qui lui est proche. Ces types d’événements vont « remonter » la hiérarchie GameObject jusqu’à ce qu’elle trouve un GameObject capable de gérer l’événement.

Pour ce faire, utilisez ExecuteHierarchy à partir de l’implémentation du système d’entrée par défaut.

Écouteurs globaux

Les événements peuvent être envoyés à des écouteurs globaux. Il est possible de s’inscrire pour tous les événements d’entrée à l’aide de l’interface du système d’entrée IMixedRealityEventSystem . Il est recommandé d’utiliser la méthode RegisterHandler pour l’inscription pour les événements globaux-la fonction déconseillée Register entraîne la notification de tous les événements d’entrée par les écouteurs, plutôt que simplement les événements d’entrée d’un type particulier (où le type est défini par l’interface d’événement).

Notez que les écouteurs de secours sont un autre type d’écouteurs globaux qui sont également déconseillés, car ils recevront chaque événement d’entrée unique qui n’a pas été traité ailleurs dans la scène.

Ordre de répartition des événements

En règle générale, les événements sont envoyés aux écouteurs de la manière suivante. Notez que si l’une des étapes ci-dessous marque l’événement comme géré, le processus de distribution d’événements s’arrête.

  1. L’événement est envoyé aux écouteurs globaux.
  2. L’événement est envoyé aux boîtes de dialogue modales de l’objet ayant le focus.
  3. L’événement est envoyé à l’objet ayant le focus.
  4. L’événement est envoyé aux écouteurs de secours.

Gestionnaires d’appareils et fournisseurs de données

Ces entités sont chargées d’interfaçage avec les API de niveau inférieur (telles que les API Windows Mixed Reality ou les API OpenVR) et de traduire les données de ces systèmes dans celles qui correspondent aux abstractions d’entrée de niveau supérieur du MRTK. Ils sont chargés de la détection, de la création et de la gestion de la durée de vie des contrôleurs.

Le workflow de base d’un gestionnaire de périphériques implique les opérations suivantes :

  1. Le gestionnaire de périphériques est instancié par le service du système d’entrée.
  2. Le gestionnaire de périphériques s’inscrit auprès de son système sous-jacent (par exemple, le gestionnaire d’appareils Windows Mixed Reality Manager s’inscrit pour les événements d’entrée et de mouvement .
  3. Elle crée des contrôleurs qu’elle découvre à partir du système sous-jacent (par exemple, le fournisseur peut détecter la présence de mains articulées).
  4. Dans sa boucle Update (), appelez UpdateController () pour interroger le nouvel État du système sous-jacent et mettre à jour sa représentation de contrôleur.