Compartir a través de


Calibración ocular: MRTK2

Captura de pantalla de la notificación de calibración ocular

Información general

Si el seguimiento ocular es una parte fundamental de la experiencia de la aplicación, es posible que desee asegurarse de que la calibración ocular del usuario sea válida. La razón principal para que no sea válida es que el usuario ha elegido omitir la calibración del seguimiento ocular al colocar en el dispositivo.

En esta página se trata lo siguiente:

  • Describe cómo detectar que un usuario está calibrado ocularmente.
  • Proporciona un ejemplo para desencadenar una notificación de usuario para indicar al usuario que recorra la calibración ocular.
    • Descartar automáticamente la notificación si la calibración ocular es válida
    • Descartar manualmente la notificación si el usuario decide continuar sin calibración

Cómo detectar el estado de calibración ocular

La configuración de seguimiento ocular en MRTK se configura a través de la IMixedRealityEyeGazeProvider interfaz .

El uso de CoreServices.InputSystem.EyeGazeProvider proporciona la implementación predeterminada del proveedor de mirada registrada en el kit de herramientas en tiempo de ejecución. IMixedRealityEyeGazeProvider.IsEyeGazeValid devuelve un bool? valor que es null si aún no hay información del rastreador ocular disponible. Una vez recibidos los datos, devolverá true o false para indicar que la calibración del seguimiento ocular del usuario es válida o no válida.

Notificación de calibración ocular de ejemplo: paso a paso

  1. Abra el paquete de ejemplo de seguimiento ocular de MRTK (Assets/MRTK/Examples/Demos/EyeTracking)

  2. Carga de la escena EyeTrackingDemo-00-RootScene.unity

  3. Consulte EyeCalibrationChecker:

    • En esta escena, ya tenemos un ejemplo para detectar si el usuario actual está calibrado en el objeto de juego EyeCalibrationChecker. Simplemente se rellenan algunas mallas de texto y tiene algunos desencadenadores adicionales para mezclar la notificación dentro y fuera. Esto incluye aumentar lentamente su tamaño y opacidad en la activación. Una vez descartada la notificación, disminuirá lentamente su tamaño y se atenuará.

    • Adjunto al objeto de juego EyeCalibrationChecker es el script EyeCalibrationChecker que expone dos eventos de Unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Estos eventos solo se desencadenarán si cambia el estado de calibración. Por lo tanto, si un usuario decide descartar la notificación, la notificación no se mostrará de nuevo hasta que el usuario decida descartar la notificación.

      • La aplicación se reinicia
      • Se ha detectado un usuario válido y, a continuación, un nuevo usuario no clasificado ha puesto el dispositivo en
    • Para comprobar si las animaciones y los eventos se desencadenan correctamente, el script EyeCalibrationChecker posee una bool editorTestUserIsCalibrated marca. Por ejemplo, cuando se ejecuta en el Editor de Unity, se puede probar:

      1. Si la notificación aparece automáticamente una vez que el estado de calibración cambia de true a false
      2. Si descarta automáticamente la notificación una vez que el estado cambia de 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;
      }
   }

Consulte también