Calibragem de olho

Captura de tela da notificação de calibragem ocular

Visão geral

Se o acompanhamento ocular for uma parte fundamental da sua experiência de aplicativo, talvez seja melhor garantir que a calibragem ocular do usuário seja válida. O principal motivo para ele ser inválido é que o usuário optou por ignorar a calibragem de acompanhamento ocular ao colocar no dispositivo.

Esta página aborda o seguinte:

  • Descreve como detectar que um usuário está calibrado com o olhar
  • Fornece um exemplo de como disparar uma notificação de usuário para instruir o usuário a passar pela calibragem ocular
    • Descartar automaticamente a notificação se a calibragem ocular se tornar válida
    • Descartar manualmente a notificação se o usuário optar por continuar sem calibragem

Como detectar o estado de calibragem ocular

A configuração de acompanhamento ocular no MRTK é configurada por meio da IMixedRealityEyeGazeProvider interface .

O uso de CoreServices.InputSystem.EyeGazeProvider fornece a implementação padrão do provedor de gaze registrada no kit de ferramentas em runtime. IMixedRealityEyeGazeProvider.IsEyeGazeValid retornará bool? um que será nulo se nenhuma informação do rastreador ocular ainda estiver disponível. Depois que os dados foram recebidos, eles retornarão true ou false para indicar que a calibragem de acompanhamento ocular do usuário é válida ou inválida.

Notificação de calibragem ocular de exemplo – passo a passo

  1. Abra o pacote de exemplo de acompanhamento ocular do MRTK (Ativos/MRTK/Exemplos/Demonstrações/EyeTracking)

  2. Carregar a cena EyeTrackingDemo-00-RootScene.unity

  3. Confira EyeCalibrationChecker:

    • Nesta cena, já temos um exemplo para detectar se o usuário atual está calibrado no objeto de jogo EyeCalibrationChecker. Ele simplesmente é pai de algumas malhas de texto e tem alguns gatilhos adicionais para mesclar a notificação dentro e fora. Isso inclui aumentar lentamente seu tamanho e opacidade na ativação. Depois que a notificação for descartada, ela diminuirá lentamente seu tamanho e esmaecerá.

    • Anexado ao objeto de jogo EyeCalibrationChecker está o script EyeCalibrationChecker que expõe dois Eventos do Unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Esses eventos serão disparados somente se o status de calibragem mudar. Portanto, se um usuário optar por descartar a notificação, a notificação não será novamente até

      • O aplicativo é reiniciado
      • Um usuário válido foi detectado e, em seguida, um novo usuário descalibrado colocou o dispositivo
    • Para testar se as animações e eventos são disparados corretamente, o script EyeCalibrationChecker possui um bool editorTestUserIsCalibrated sinalizador. Por exemplo, ao executar no Editor do Unity, é possível testar:

      1. Se a notificação é automaticamente pop-up depois que o status de calibragem muda de true para false
      2. Se ela descarta automaticamente a notificação novamente depois que o status muda de false para 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;
      }
   }

Confira também