Calibrazione oculare - MRTK2

Screenshot della notifica di calibrazione oculare

Panoramica

Se il tracciamento oculare è una parte fondamentale dell'esperienza dell'app, è possibile assicurarsi che la calibrazione oculare dell'utente sia valida. Il motivo principale per cui non è valido è che l'utente ha scelto di ignorare la calibrazione del tracciamento oculare durante l'inserimento nel dispositivo.

Questa pagina illustra quanto segue:

  • Descrive come rilevare che un utente è calibrato a occhio
  • Fornisce un esempio di come attivare una notifica utente per indicare all'utente di eseguire la calibrazione oculare
    • Ignorare automaticamente la notifica se la calibrazione oculare diventa valida
    • Ignorare manualmente la notifica se l'utente sceglie di continuare senza calibrazione

Come rilevare lo stato di calibrazione oculare

La configurazione del tracciamento oculare in MRTK viene configurata tramite l'interfaccia IMixedRealityEyeGazeProvider .

L'uso di CoreServices.InputSystem.EyeGazeProvider fornisce l'implementazione predefinita del provider di sguardo fisso registrata nel toolkit in fase di esecuzione. IMixedRealityEyeGazeProvider.IsEyeGazeValid restituisce un valore bool? null se non sono ancora disponibili informazioni dal tracciamento oculare. Una volta ricevuti, i dati restituiranno true o false per indicare che la calibrazione del tracciamento oculare dell'utente è valida o non valida.

Notifica di calibrazione oculare di esempio - Procedura dettagliata

  1. Aprire il pacchetto di esempio di tracciamento oculare MRTK (Assets/MRTK/Examples/Demos/EyeTracking)

  2. Load EyeTrackingDemo-00-RootScene.unity scene

  3. Vedere EyeCalibrationChecker:

    • In questa scena è già disponibile un esempio per rilevare se l'utente corrente è calibrato sotto l'oggetto gioco EyeCalibrationChecker. È semplicemente padre di alcune mesh di testo e include alcuni trigger aggiuntivi per combinare la notifica in ingresso e in uscita. Ciò include l'aumento lento delle dimensioni e dell'opacità all'attivazione. Una volta chiusa la notifica, la dimensione e la dissolvenza diminuisce lentamente.

    • Collegato all'oggetto gioco EyeCalibrationChecker è lo script EyeCalibrationChecker che espone due eventi unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Questi eventi verranno attivati solo se lo stato di calibrazione cambia. Di conseguenza, se un utente sceglie di ignorare la notifica, la notifica non verrà visualizzata di nuovo fino a quando

      • L'app viene riavviata
      • È stato rilevato un utente valido e quindi un nuovo utente non classificato ha attivato il dispositivo
    • Per verificare se le animazioni e gli eventi vengono attivati correttamente, lo script EyeCalibrationChecker possiede un bool editorTestUserIsCalibrated flag. Ad esempio, quando è in esecuzione nell'editor di Unity, è possibile testare:

      1. Indica se la notifica viene visualizzata automaticamente quando lo stato di calibrazione cambia da true a false
      2. Se la notifica viene chiusa automaticamente una volta che lo stato cambia da false a 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;
      }
   }

Vedi anche