Calibragem ocular – MRTK2

Captura de tela da notificação de calibragem ocular

Visão geral

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

Esta página aborda o seguinte:

  • Descreve como detectar que um usuário está calibrado com os olhos
  • Fornece um exemplo de como disparar uma notificação do usuário para instruir o usuário a passar pela calibragem ocular
    • Ignorar automaticamente a notificação se a calibragem ocular se tornar válida
    • Ignorar 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 do provedor de foco padrão registrada no kit de ferramentas em runtime. IMixedRealityEyeGazeProvider.IsEyeGazeValid retornará um bool? que será nulo se nenhuma informação do rastreador ocular ainda estiver disponível. Depois que os dados forem recebidos, eles retornarão true ou false para indicar que a calibragem de acompanhamento ocular do usuário é válida ou inválida.

Exemplo de notificação de calibragem ocular – passo a passo

  1. Abra o pacote de exemplo de acompanhamento ocular do MRTK (Assets/MRTK/Examples/Demos/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 sob o objeto de jogo EyeCalibrationChecker. Ele simplesmente usa algumas malhas de texto e tem alguns gatilhos adicionais para mesclar a notificação. Isso inclui aumentar lentamente seu tamanho e opacidade na ativação. Depois que a notificação for ignorada, ela diminuirá lentamente seu tamanho e desaparecerá.

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

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Esses eventos só serão disparados se a calibragem status for alterada. Portanto, se um usuário optar por ignorar a notificação, a notificação não aparecerá novamente até que

      • O aplicativo é reiniciado
      • Um usuário válido foi detectado e, em seguida, um novo usuário não calibrado colocou o dispositivo
    • Para testar se as animações e os 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 é exibida automaticamente depois que a calibragem status muda de true para false
      2. Se ele ignorará automaticamente a notificação novamente quando o status mudar 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