Calibragem ocular – MRTK2

Captura de ecrã a partir da notificação de calibragem ocular

Descrição Geral

Se o controlo ocular for uma parte fundamental da sua experiência de aplicação, poderá querer garantir que a calibragem ocular do utilizador é válida. A principal razão para ser inválido é que o utilizador optou por ignorar a calibragem de controlo ocular ao colocar o dispositivo.

Esta página abrange o seguinte:

  • Descreve como detetar que um utilizador está calibrado para os olhos
  • Fornece um exemplo de como acionar uma notificação de utilizador para instruir o utilizador a passar pela calibragem ocular
    • Dispensar automaticamente a notificação se a calibragem ocular se tornar válida
    • Dispensar manualmente a notificação se o utilizador optar por continuar sem calibragem

Como detetar o estado de calibragem ocular

A configuração de controlo ocular no MRTK é configurada através da IMixedRealityEyeGazeProvider interface.

A utilização de CoreServices.InputSystem.EyeGazeProvider fornece a implementação do fornecedor de olhar predefinida registada no toolkit no runtime. IMixedRealityEyeGazeProvider.IsEyeGazeValid devolve um bool? que é nulo se ainda não estiverem disponíveis informações do controlador ocular. Assim que os dados tiverem sido recebidos, serão devolvidos verdadeiros ou falsos para indicar que a calibragem de controlo ocular do utilizador é válida ou inválida.

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

  1. Abra o pacote de exemplo de controlo ocular MRTK (Assets/MRTK/Examples/Demos/EyeTracking)

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

  3. Veja EyeCalibrationChecker:

    • Nesta cena, já temos um exemplo para detetar se o utilizador atual está calibrado no objeto de jogo EyeCalibrationChecker. Limita-se a criar algumas malhas de texto e tem alguns acionadores adicionais para misturar a notificação dentro e fora. Isto inclui aumentar lentamente o seu tamanho e opacidade na ativação. Assim que a notificação for dispensada, diminuirá lentamente o tamanho e desaparecerá.

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

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Estes eventos só serão acionadas se o estado de calibragem for alterado. Assim, se um utilizador optar por dispensar a notificação, a notificação só será apresentada depois de

      • A aplicação é reiniciada
      • Foi detetado um utilizador válido e, em seguida, um novo utilizador não calibrado colocou o dispositivo
    • Para testar se as animações e eventos são acionados corretamente, o script EyeCalibrationChecker possui um bool editorTestUserIsCalibrated sinalizador. Por exemplo, ao executar no Editor do Unity, pode-se testar:

      1. Se a notificação é apresentada automaticamente assim que o estado de calibragem mudar de verdadeiro para falso
      2. Se volta a dispensar automaticamente a notificação assim que o estado mudar de falso para verdadeiro.
    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;
      }
   }

Ver também