Настройка трекинга рук и жестов в AR-играх

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Настройка трекинга рук и жестов в AR-играх
Сложная
~7 рабочих дней
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Настройка трекинга рук и жестов в AR-играх

Когда пользователь видит свои реальные руки поверх AR-контента и может взаимодействовать с виртуальными объектами без контроллеров — это другой уровень иммерсии. Но под капотом это одна из самых технически нетривиальных задач в AR-разработке: трекинг 21 точки на каждой руке в реальном времени, распознавание жестов из непрерывного потока поз, и всё это при изменяющемся освещении, частичном перекрытии рук и движении устройства.

Аппаратная и программная основа

Для мобильного AR (iOS/Android) основной путь — AR Foundation с XRHandSubsystem, появившийся в AR Foundation 5.x. На iOS под капотом используется ARKit Hand Tracking (доступен с iPhone X на A12 и новее), на Android — ARCore, но с важным ограничением: ARCore не имеет встроенного hand tracking в основном SDK. Для Android hand tracking нужно либо использовать устройство с поддержкой Qualcomm Snapdragon Spaces, либо интегрировать сторонние решения — MediaPipe Hands (работает через плагин или нативную интеграцию) или XR Hands package от Unity с кастомным провайдером.

Для шлемов без контроллеров: Meta Quest 2/3 — через OVR Hand компоненты из Meta XR SDK или через OpenXR Hand Tracking Extension (XR_EXT_hand_tracking). Второй путь предпочтительнее для кроссплатформенных проектов — один код работает на Quest, Pico, HoloLens 2 без условных компиляций под каждый SDK.

HoloLens 2 — через Microsoft Mixed Reality Toolkit (MRTK3), который предоставляет абстракцию над WMR hand tracking и уже включает готовые компоненты для pinch, grab, poke-взаимодействий.

Почему жесты сложнее, чем кажется

Распознавание жестов — это не просто «проверить, сжата ли ладонь». Это классификация временного паттерна поз с учётом переходных состояний и шума трекинга.

Проблема первая: дрожание joints. Даже неподвижная рука даёт колебание позиций суставов на ±2–5 мм из-за шума сенсора. Если проверять жест «щипок» (pinch) по raw-позициям большого и указательного пальца — trigger будет срабатывать случайно. Решение: low-pass фильтр на позиции каждого joint (Kalman filter или простой exponential moving average с alpha ≈ 0.3–0.5) перед классификацией.

Проблема вторая: threshold hysteresis. Один порог для входа и выхода из состояния жеста — путь к мерцанию состояния. Правильно: порог для активации жеста (например, pinch_distance < 15 мм), и отдельный, более широкий порог для деактивации (pinch_distance > 25 мм). Это стандартная техника, но её часто забывают.

Проблема третья: temporal consistency. Жест должен удерживаться минимум N кадров (обычно 3–5 при 30 fps) перед тем, как считаться распознанным. Это фильтрует случайные совпадения при переходах между позами.

В XR Interaction Toolkit с XR Hands package есть HandShape и GestureDetector компоненты, которые реализуют часть этой логики. Но для нестандартных жестов (например, «нарисовать круг в воздухе» или «двойной щипок») нужна кастомная логика — конечный автомат или sequence recognizer с временными окнами.

Интеграция трекинга рук с игровыми объектами

После того как трекинг настроен, нужно привязать руки к игровой логике. Типичные взаимодействия в AR: near interaction (потрогать/нажать объект физически рукой) и far interaction (ray из ладони или пальца).

Для near interaction ключевой компонент — правильная настройка Poke Interactor из MRTK или кастомный коллайдер на кончике пальца с isTrigger = true. Главная проблема: скорость перемещения кончика пальца при быстром движении может быть такой, что за один фрейм он перемещается на 5–10 см, проходя сквозь тонкие объекты без срабатывания trigger. Решение: sweep test (SphereCast вдоль вектора движения пальца) вместо простого коллайдера.

Для AR-игр на мобильных устройствах важно учитывать, что рука периодически выходит из поля зрения камеры. Нужно реализовывать graceful degradation: при потере трекинга руки прерывать текущее взаимодействие корректно, а не оставлять объект «зависшим» в воздухе с последним известным позиционированием.

Этапы настройки

Начинаем с выбора SDK под целевые платформы и устройства. Это определяет 80% дальнейшей архитектуры.

Затем настройка базового hand tracking: импорт joints, визуализация скелета для отладки, проверка качества трекинга на целевых устройствах при разных условиях освещения.

Дальше: реализация жестов (начиная с pinch как базового interaction trigger), интеграция с interactable-объектами, тонкая настройка фильтров и thresholds.

Финальный этап — тестирование на реальных пользователях. Ни один разработчик не предугадает все варианты того, как люди держат руки.

Задача Ориентировочные сроки
Базовый hand tracking (pinch + grab) 1–2 недели
Кастомный набор жестов (5–10 жестов) 2–4 недели
Полная система взаимодействия без контроллеров 4–8 недель

Стоимость рассчитывается после анализа платформ и требуемых взаимодействий.