Настройка трекинга рук и жестов в AR-играх: от SDK до фильтрации
Мы часто сталкиваемся с ситуацией: разработчик пытается сделать управление без контроллеров, но получает дёргающиеся пальцы, ложные срабатывания жестов и вылеты при потере трекинга. Разберём, как настроить стабильный hand tracking в AR-проектах — от выбора SDK до продвинутых фильтров. Опираемся на реальный опыт внедрения в мобильных и standalone-шлемах.
Аппаратная и программная основа
Для мобильного AR (iOS/Android) основной путь — AR Foundation с XRHandSubsystem (доступен с AR Foundation 5.x). На iOS под капотом используется ARKit Hand Tracking (A12+), на Android — ARCore не имеет встроенного hand tracking, поэтому приходится использовать MediaPipe Hands или XR Hands package с кастомным провайдером. Для шлемов без контроллеров: Meta Quest 2/3 — через OVR Hand или OpenXR Hand Tracking Extension (XR_EXT_hand_tracking). Второй вариант предпочтительнее для кроссплатформенных проектов — один код работает на Quest, Pico, HoloLens 2. На HoloLens 2 используем Microsoft Mixed Reality Toolkit (MRTK3).
Почему жесты сложнее, чем кажется?
Распознавание жестов — классификация временного паттерна поз с учётом переходных состояний и шума трекинга. Основные проблемы:
- Дрожание joints: даже неподвижная рука даёт колебания ±2–5 мм. Решение — low-pass фильтр (Kalman или exponential moving average с alpha ≈ 0.3–0.5).
- Threshold hysteresis: один порог входа/выхода даёт мерцание. Ставим порог активации (pinch_distance < 15 мм) и деактивации (пинч > 25 мм).
- Temporal consistency: жест должен держаться минимум 3–5 кадров (при 30 FPS) до распознавания.
Для нестандартных жестов (круг в воздухе, двойной щипок) пишем кастомный конечный автомат или sequence recognizer с временными окнами.
Как интегрировать трекинг рук с игровыми объектами?
Два основных типа взаимодействия: near interaction (физическое касание) и far interaction (луч из ладони или пальца). Для near interaction ключевой момент — sweep test вместо простого коллайдера на кончике пальца, иначе при быстром движении (скорость до 10 см/кадр) объект проскакивает. Для far interaction используем ray из центра ладони с учётом occlusion: если объект перекрыт реальной рукой, не реагируем.
Важно: при потере трекинга руки (выход из поля зрения) реализуем graceful degradation — прерываем взаимодействие корректно, не оставляем объект зависшим. Используем таймаут и плавное затухание визуализации.
Сравнение платформ по производительности
| Платформа | SDK | Задержка трекинга | Точность (мм) | Кроссплатформенность |
|---|---|---|---|---|
| iOS | ARKit Hand Tracking | 10–15 мс | ±2 | Нет |
| Android | MediaPipe Hands (CPU) | 20–30 мс | ±3 | Частично (кастомная интеграция) |
| Quest 2 | OpenXR Hand Tracking | 8–12 мс | ±2 | Да (через XR_EXT_hand_tracking) |
| HoloLens 2 | MRTK3 | 15–20 мс | ±3 | Да (WMR универсально) |
OpenXR Hand Tracking в 2–3 раза быстрее OVR Hand на Quest при кроссплатформенности.
Этапы настройки
- Анализ платформ и устройств — определяет 80% архитектуры.
- Базовый hand tracking — импорт joints, визуализация скелета для отладки, проверка при разном освещении.
- Реализация жестов — начиная с pinch как базового trigger, настройка фильтров и thresholds.
- Интеграция с interactable-объектами — настройка collider, sweep test, far interaction ray.
- Тестирование на реальных пользователях — ни один разработчик не предугадает все варианты положения рук.
Что входит в работу
- Выбор и настройка SDK (AR Foundation, OpenXR, MediaPipe) под целевые устройства
- Реализация базового набора жестов (pinch, grab, point, swipe)
- Кастомные жесты по ТЗ (до 10 уникальных)
- Интеграция с игровыми объектами (near/far interaction)
- Оптимизация: снижение draw calls, batching, occlusion culling
- Документация и обучение команды
- Пост-релизная поддержка 30 дней
Наш опыт — 10+ лет в AR/VR, 50+ проектов с hand tracking. Сертифицированные специалисты по Unity и Unreal Engine. Гарантируем стабильность трекинга на всех целевых устройствах. Закажите анализ вашего проекта — мы подберём оптимальный стек и настроим фильтры.
Ориентировочные сроки
| Задача | Сроки |
|---|---|
| Базовый hand tracking (пинч + захват) | 1–2 недели |
| Кастомный набор жестов (5–10 жестов) | 2–4 недели |
| Полная система взаимодействия без контроллеров | 4–8 недель |
Стоимость рассчитывается индивидуально после анализа проекта. Свяжитесь с нами для консультации — оценим задачу и предложим оптимальное решение под ключ. Получите консультацию специалиста по трекингу рук.






