Calibrazione oculare

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 del dispositivo.

Questa pagina illustra quanto segue:

  • Descrive come rilevare che un utente è calibrato dagli occhi
  • Fornisce un esempio di come attivare una notifica utente per indicare all'utente di eseguire la calibrazione oculare
    • Ignora 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 IMixedRealityEyeGazeProvider l'interfaccia .

L'uso di CoreServices.InputSystem.EyeGazeProvider fornisce l'implementazione predefinita del provider gaze registrato nel toolkit in fase di esecuzione. IMixedRealityEyeGazeProvider.IsEyeGazeValid restituisce un valore null se non sono ancora disponibili informazioni dal bool? tracciamento oculare. Dopo la ricezione, 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. Caricare la scena EyeTrackingDemo-00-RootScene.unity

  3. Vedere EyeCalibrationChecker:

    • In questa scena è già disponibile un esempio per rilevare se l'utente corrente è calibrato nell'oggetto gioco EyeCalibrationChecker. Contiene semplicemente alcune mesh di testo e include alcuni trigger aggiuntivi per la fusione della notifica in e in uscita. Ciò include l'aumento lento delle dimensioni e dell'opacità all'attivazione. Una volta chiusa, la notifica diminuisce lentamente le dimensioni e si dissolve in uscita.

    • Associato 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 certificato ha inserito il dispositivo
    • Per verificare se le animazioni e gli eventi vengono attivati correttamente, lo script EyeCalibrationChecker possiede un bool editorTestUserIsCalibrated flag. Ad esempio, quando si esegue 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. Indica se la notifica viene chiusa automaticamente quando 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