Калибровка взгляда

Снимок экрана с уведомлением об калибровке глаз

Общие сведения

Если отслеживание взгляда является фундаментальной частью работы приложения, то может потребоваться обеспечить правильную калибровку пользователя. Основная причина, по которой она будет недействительной, заключается в том, что пользователь решил пропустить калибровку отслеживания взгляда при размещении на устройстве.

На этой странице рассматриваются следующие вопросы:

  • Описывает, как определить, что пользователь имеет откалиброванный глаз
  • В этом примере показано, как активировать уведомление пользователя, чтобы сообщить пользователю о необходимости пройти калибровку глаз.
    • Автоматически отклонять уведомление, если калибровка глаз станет действительной
    • Вручную закрыть уведомление, если пользователь решил продолжить без калибровки

Как определить состояние калибровки глаз

Конфигурация отслеживания взгляда в МРТК настраивается через IMixedRealityEyeGazeProvider интерфейс.

Использование коресервицес. инпутсистем. эйегазепровидер предоставляет реализацию поставщика взгляда по умолчанию, зарегистрированную в наборе средств во время выполнения. IMixedRealityEyeGazeProvider.IsEyeGazeValid Возвращает значение типа, bool? равное NULL, если данные из средства регистрации взглядов еще не доступны. После получения данных будет возвращено значение true или false, чтобы указать, что калибровка отслеживания взгляда пользователя является допустимой или недопустимой.

Уведомление об калибровке образца глаз — пошаговые инструкции

  1. Откройте пример пакета отслеживания взгляда МРТК (Assets/МРТК/examples/демонстрации/Эйетраккинг)

  2. Загрузка сцены эйетраккингдемо-00-рутсцене. Unity

  3. Ознакомьтесь с эйекалибратиончеккер:

    • В этой сцене уже есть пример, с помощью которого можно определить, откалиброван ли текущий пользователь в игровом объекте эйекалибратиончеккер. Он просто объединяет несколько текстовых сеток и имеет несколько дополнительных триггеров для смешения уведомлений. Это включает в себя медленно увеличивающийся размер и непрозрачность при активации. Как только уведомление будет закрыто, оно постепенно снизит его размер и плавно уменьшится.

    • К игровому объекту эйекалибратиончеккер прикрепляется скрипт Эйекалибратиончеккер , который предоставляет два события Unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Эти события будут запускаться только при изменении состояния калибровки. Таким образом, если пользователь откроет уведомление, уведомление не отобразится снова до тех пор, пока

      • Приложение перезапускается
      • Обнаружен допустимый пользователь, а затем новый некалиброванный пользователь поместит устройство в
    • Чтобы проверить, правильно ли запущены анимации и события, сценарий Эйекалибратиончеккер имеет bool editorTestUserIsCalibrated флаг. Например, при запуске в редакторе Unity можно протестировать:

      1. Будет ли уведомление автоматически выводится после того, как состояние калибровки изменится с true на false
      2. Будет ли он автоматически закрывать уведомление после изменения состояния с false на 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;
      }
   }

См. также раздел