За 5 років ми виконали понад 20 інтеграцій Eye Tracking у VR-проекти — від прототипів на Quest 3 до корпоративних рішень на Varjo XR-3. Основна біль клієнтів: GPU-бюджет жорсткий, а Fixed Foveated Rendering економить лише 10–15%. Dynamic FFR з Eye Tracking вичавлює до 25% продуктивності. Але підключити SDK і просто зчитувати gaze direction замало: raw data зашумлена, потребує фільтрації, а для кожного типу інтеракції потрібна своя логіка. Наші інженери пройшли сертифікацію Meta XR та OpenXR, що гарантує стабільну роботу на всіх підтримуваних гарнітурах.
Платформи та SDK
Meta Quest Pro / Quest 3
Meta надає Meta Movement SDK (раніше OVRPlugin). Компонент OVREyeGaze та низькорівневий OVRPlugin.GetEyeGazesState() дозволяють отримати direction gaze, eye openness та pupil dilation. Точність після калібрування — ±1.5–3°. Перед використанням потрібно запросити permission через OVRPermissionsRequester.
OpenXR
Крос-платформний шлях через розширення XR_EXT_eye_gaze_interaction. У Unity підключається через XR Interaction Toolkit 2.3+ — GazeInteractor та GazeInteractable. Один код для всіх гарнітур, що підтримують OpenXR: від Quest Pro до Varjo. Це знижує вартість підтримки та окупається на мультиплатформних проектах.
Tobii XR SDK
Для старих PC-гарнітур (HTC Vive Pro Eye) використовується Tobii XR SDK. Офіційний Unity пакет, але інтеграція через Windows Mixed Reality. Потрібне окреме налаштування калібрування.
Порівняння платформ
| Платформа | SDK | Точність | FFR підтримка | Керування поглядом |
|---|---|---|---|---|
| Meta Quest Pro | Meta Movement | ±1.5–3° | Dynamic FFR (FB_foveation) | GazeInteractor Oculus |
| Quest 3 | Meta Movement | ±2–3° | Dynamic FFR (FB_foveation) | GazeInteractor Oculus |
| Varjo XR-3 | OpenXR | ±0.5–1° | Foveated rendering | OpenXR Gaze |
| Pico 4 Pro | PICO Motion | ±1.5–2° | Fixed/FFR | PICO Gaze |
| PSVR 2 | Sony SDK | ±1–2° | Dynamic FFR | Sony Eye Tracking |
Порівняння методів фільтрації gaze data
| Метод | Затримка | Плавність | Складність реалізації |
|---|---|---|---|
| Експоненційний фільтр | ~5 мс | Середня | Низька |
| Калманівський фільтр | ~10 мс | Висока | Висока |
| One-Euro filter | ~7 мс | Висока | Середня |
| Без фільтрації | 0 мс | Низька (мерехтіння) | Немає |
Як працює EyeTracked FFR?
Fixed Foveated Rendering (FFR) рендерить краї у зниженій роздільній здатності, але центр фіксований. Dynamic FFR зміщує високоякісну зону за поглядом. На Quest 3 це дає приріст 15–25% GPU — різниця між 72 та 90 FPS у важких сценах.
Підключення в Unity через OpenXR: увімкнути XR_FB_foveation та XR_FB_foveation_vulkan. Для Meta SDK — OVRManager.eyeTrackingEnabled = true та OVRManager.fixedFoveatedRenderingLevel у парі з OVRPlugin.useDynamicFixedFoveatedRendering. Dynamic FFR перевершує Fixed FFR на 20–30% за економією GPU, зберігаючи якість у точці погляду.
Чому gaze cursor потрібно фільтрувати?
Raw gaze data містить високочастотний шум ±0.5–1°. Без фільтрації об'єкт під поглядом мерехтить selected/unselected. Рішення: експоненційний фільтр.
// Експоненційний фільтр для gaze cursor smoothedGaze = Vector3.Slerp(smoothedGaze, rawGaze, smoothFactor * Time.deltaTime); // smoothFactor ≈ 10–15 Додатково — dwell time activation: об'єкт активується, якщо погляд утримується довше 0.5–1.5 секунд. Візуальний індикатор — arc/ring навколо об'єкта.
Дозволи та приватність
Eye Tracking потребує спеціальних permissions у Meta Developer Hub. Для публікації в Meta Store — окремий policy review: додаток не повинен передавати raw eye data на сервер без явної згоди користувача. У Unity обробляти OVRPermissionsRequester та перевіряти OVRPlugin.eyeTrackingEnabled. Для корпоративних рішень — окрема юридична документація.
Типові проблеми калібрування
- Зміщення через неправильне посадження гарнітури
- Плаваюча точність після 30 хвилин використання (потрібна рекалібровка)
- Конфлікт з різними SDK (наприклад, Tobii та OpenXR одночасно)
Що входить у роботу
- Аналіз вимог та вибір оптимального SDK
- Налаштування Eye Tracking на цільовій гарнітурі
- Реалізація gaze cursor з фільтрацією та dwell time
- Інтеграція Dynamic Foveated Rendering (якщо підтримується)
- Збір аналітики уваги (heatmaps, gaze duration)
- Документація по API та навчання команди
- Підтримка після релізу (1 місяць)
Процес та терміни
- Аналітика: визначаємо платформу, SDK, необхідні дозволи (1–2 дні).
- Проектування: вибір підходу до фільтрації та інтеракції, прототипування (2–3 дні).
- Реалізація: інтеграція SDK, налаштування FFR, gaze-логіка (4–8 днів).
- Тестування: перевірка точності, заміри FPS, юзабіліті (2–3 дні).
- Деплой: збірка для target-платформи, передача сирців та документації.
Орієнтовні терміни: базова інтеграція (gaze cursor + selection) — 2–4 робочі дні; повна (Dynamic FFR + аналітика) — 1–2 тижні. Вартість залежить від складності та потрібного функціоналу — зв'яжіться з нами для оцінки вашого проекту. Інвестиції окупаються за рахунок підвищення продуктивності та зниження витрат на адаптацію додатка під різні гарнітури.
Отримайте консультацію по вашому VR-проекту: проаналізуємо вимоги та запропонуємо оптимальне рішення з урахуванням вашого стеку та бюджету. Наші інженери мають 5+ років досвіду та сертифікацію Meta XR.






