Доступ к данным отслеживания взгляда в скрипте Unity — MRTK2
В этой статье предполагается, что вы понимаете, как настроить отслеживание глаз в сцене MRTK (см. базовую настройку MRTK для использования отслеживания взгляда). Доступ к данным отслеживания взгляда в скрипте MonoBehaviour прост! Просто используйте CoreServices.InputSystem.EyeGazeProvider.
IMixedRealityEyeGazeProvider
Конфигурация отслеживания взгляда в MRTK настраивается через IMixedRealityEyeGazeProvider
интерфейс . Использование CoreServices.InputSystem.EyeGazeProvider предоставляет реализацию поставщика взгляда по умолчанию, зарегистрированную в наборе средств во время выполнения.
Ниже описаны полезные EyeGazeProvider
свойства объекта .
IsEyeTrackingEnabled: значение true, если пользователь выбрал функцию отслеживания взгляда.
IsEyeCalibrationValid: указывает, допустима ли калибровка отслеживания взгляда пользователя. Он возвращает значение null, если значение еще не получило данные из системы отслеживания взгляда. Она может быть недопустимой, так как пользователь пропустил калибровку отслеживания взгляда.
IsEyeTrackingEnabledAndValid: указывает, используются ли текущие данные отслеживания взгляда для взгляда.
IsEyeTrackingDataValid: значение true, если доступны данные отслеживания взгляда. Он может быть недоступен из-за превышения времени ожидания (он должен быть надежным для пользователя, мигающего) или отсутствия оборудования или разрешений для отслеживания. Ознакомьтесь с примером уведомления о недостающей калибровке взгляда , в который показано, как определить, откалибровывается ли пользователь, и отобразить соответствующее уведомление.
GazeOrigin: источник луча взгляда. Обратите внимание, что при этом возвращается источник взгляда головы , если "IsEyeGazeValid" имеет значение false.
Направление взгляда: направление луча взгляда. При этом будет возвращено направление направления взгляда , если "IsEyeGazeValid" имеет значение false.
HitInfo, HitPosition, HitNormal и т. д.: сведения о текущем объекте, который в настоящее время смотрит на цель. Опять же, если
IsEyeGazeValid
имеет значение false, это будет зависеть от взгляда головы пользователя.
Примеры использования CoreServices.InputSystem.EyeGazeProvider
Ниже приведен пример из файла FollowEyeGaze.cs:
- Получение точки голограммы, которую просматривает пользователь:
// Show the object at the hit position of the user's eye gaze ray with the target.
gameObject.transform.position = CoreServices.InputSystem.EyeGazeProvider.HitPosition;
- Отображение визуального ресурса на фиксированном расстоянии от того, где пользователь в данный момент ищет:
// If no target is hit, show the object at a default distance along the gaze ray.
gameObject.transform.position =
CoreServices.InputSystem.EyeGazeProvider.GazeOrigin +
CoreServices.InputSystem.EyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;