Étalonnage oculaire — MRTK2

Capture d’écran de la notification d’étalonnage des yeux

Vue d’ensemble

Si le suivi oculaire est un élément fondamental de votre expérience d’application, vous pouvez vous assurer que l’étalonnage des yeux de l’utilisateur est valide. La main raison pour laquelle il n’est pas valide est que l’utilisateur a choisi d’ignorer l’étalonnage du suivi oculaire lors de la mise sur l’appareil.

Cette page couvre les éléments suivants :

  • Décrit comment détecter qu’un utilisateur est étalonné pour les yeux
  • Fournit un exemple de déclenchement d’une notification à l’utilisateur pour demander à l’utilisateur de passer par l’étalonnage oculaire
    • Ignorer automatiquement la notification si l’étalonnage oculaire devient valide
    • Ignorer manuellement la notification si l’utilisateur choisit de continuer sans étalonnage

Comment détecter l’état d’étalonnage des yeux

La configuration du suivi oculaire dans MRTK est configurée via l’interface IMixedRealityEyeGazeProvider .

L’utilisation de CoreServices.InputSystem.EyeGazeProvider fournit l’implémentation du fournisseur de regards par défaut inscrite dans le kit de ressources au moment de l’exécution. IMixedRealityEyeGazeProvider.IsEyeGazeValid retourne un bool? qui est null si aucune information du suivi oculaire n’est encore disponible. Une fois les données reçues, elle retourne true ou false pour indiquer que l’étalonnage du suivi oculaire de l’utilisateur est valide ou non valide.

Exemple de notification d’étalonnage des yeux - étape par étape

  1. Ouvrez le package d’exemple de suivi oculaire MRTK (Assets/MRTK/Examples/Demos/EyeTracking)

  2. Charger la scène EyeTrackingDemo-00-RootScene.unity

  3. Consultez EyeCalibrationChecker :

    • Dans cette scène, nous avons déjà un exemple pour détecter si l’utilisateur actuel est étalonné sous l’objet de jeu EyeCalibrationChecker. Il crée simplement quelques maillages de texte et comporte des déclencheurs supplémentaires pour fusionner la notification. Cela inclut l’augmentation lente de sa taille et de son opacité lors de l’activation. Une fois la notification ignorée, elle diminue lentement sa taille et disparaît.

    • Attaché à l’objet de jeu EyeCalibrationChecker est le script EyeCalibrationChecker qui expose deux événements Unity :

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Ces événements se déclenchent uniquement si le status d’étalonnage change. Par conséquent, si un utilisateur choisit d’ignorer la notification, la notification n’apparaît pas à nouveau tant que

      • L’application est redémarrée
      • Un utilisateur valide a été détecté, puis un nouvel utilisateur non étalonné a mis l’appareil sur
    • Pour tester si les animations et les événements sont déclenchés correctement, le script EyeCalibrationChecker possède un bool editorTestUserIsCalibrated indicateur. Par exemple, lors de l’exécution dans l’éditeur Unity, vous pouvez tester :

      1. Si la notification s’affiche automatiquement une fois que l’étalonnage status passe de true à false
      2. Indique s’il ferme automatiquement la notification une fois que le status passe de false à true.
    private bool? prevCalibrationStatus = null;
    ...

   void Update()
   {
      // Get the latest calibration state from the EyeGazeProvider
      bool? calibrationStatus = CoreServices.InputSystem?.EyeGazeProvider?.IsEyeCalibrationValid;

      ...

      if (calibrationStatus != null)
      {
         if (prevCalibrationStatus != calibrationStatus)
         {
            if (calibrationStatus == false)
            {
               OnNoEyeCalibrationDetected.Invoke();
            }
         else
         {
            OnEyeCalibrationDetected.Invoke();
         }

         prevCalibrationStatus = calibrationStatus;
      }
   }

Voir aussi