Если коротко:
Eye tracking в Unreal Engine обычно предоставляет направление взгляда и статус валидности через OpenXR или SDK устройства. Перед line trace или выбором элемента нужно проверить поддержку, разрешение пользователя, калибровку и актуальность данных. Последнюю известную точку нельзя считать постоянным точным вводом, а хранение данных взгляда требует отдельного решения по приватности.
Unreal Engine eye tracking получает как позу взгляда со статусом валидности, а не как гарантированно точную точку выбора.
Eye tracking в Unreal Engine обычно даёт луч или позу взгляда, статус валидности и дополнительные значения конкретного устройства. Самая частая ошибка — использовать последний известный луч как всегда точный ввод. Надёжная система сначала проверяет поддержку, разрешение и качество данных, а затем выполняет действие.
Выберите API
Для переносимого решения подходит OpenXR eye gaze interaction, если его поддерживают runtime и гарнитура. SDK производителя может давать частоту, данные отдельных глаз или калибровочные функции, которых нет в общем интерфейсе.
Игровую логику лучше отделить от поставщика: компонент взгляда выдаёт origin, direction, confidence и timestamp, а интерфейс уже решает, как их использовать.
Получение точки взгляда
Из позы строится line trace в мир. Точка пересечения не равна «намерению пользователя»: взгляд быстро перескакивает между деталями. Для выбора нужен dwell time, фильтрация и достаточно крупная цель.
Не привязывайте курсор непосредственно к сырому лучу. Небольшое сглаживание улучшает читаемость, но чрезмерный фильтр добавляет заметное запаздывание.
Валидность и потеря данных
Данные могут исчезнуть при моргании, плохой посадке, очках или выходе зрачка из зоны камер. Введите состояния valid, low confidence и unavailable. При потере не запускайте действие и не оставляйте чувствительную кнопку «под взглядом» бесконечно.
Если gaze используется для foveated rendering, fallback должен сохранять приемлемое качество без точного взгляда.
Калибровка
Калибровку запускают штатным способом устройства. Приложение не должно делать вид, что самостоятельно исправило системную модель. Перед важной задачей можно предложить быструю проверку на нескольких точках.
После смены пользователя или заметного смещения гарнитуры проверку повторяют. Сам факт успешной калибровки не гарантирует одинаковую точность по всему полю зрения.
Взаимодействие интерфейса
Взгляд хорошо задаёт фокус, а подтверждение лучше оставить кнопке, pinch или dwell с явным индикатором. Автоматическое нажатие при короткой фиксации создаёт ложные действия — человек смотрит на элемент, чтобы прочитать его.
Для доступности предоставьте альтернативный указатель. Не все пользователи могут пройти калибровку или комфортно удерживать взгляд.
Приватность
Траектория взгляда способна раскрывать внимание и поведение пользователя. Собирайте только необходимые данные, не храните сырой поток без цели и объясняйте, что записывается. Для аналитики часто достаточно агрегированного события, а не координат каждого кадра.
Проверка на устройстве
- разные пользователи и межзрачковое расстояние;
- очки и контактные линзы;
- центр и края поля зрения;
- моргание и быстрые саккады;
- смещение корпуса во время сессии;
- отказ в разрешении;
- переход к контроллеру.
Общее устройство технологии раскрыто в статье eye tracking в VR.
Итог
Eye tracking становится полезным вводом только после обработки валидности, калибровки и временной динамики взгляда. В Unreal Engine стоит скрыть конкретный SDK за единым компонентом, разделить наведение и подтверждение и заранее спроектировать fallback. Приватность должна быть частью архитектуры, а не примечанием перед релизом.
Проверка по шагам
Проверка на устройстве
Выполнено 0 из 7