Настройка распознавания жестов рук в Unity и Unreal для AR

Настройка распознавания жестов рук в Unity и Unreal для AR Ложные срабатывания жестов — бич AR-игр. Рука дрожит, pinch срабатывает впустую, кулак распознаётся как open palm. В проекте на Meta Quest мы потратили две недели только на то, чтобы отсеять шум от 26 joint positions от <cite>Meta Hand Tr

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1006
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    95

Настройка распознавания жестов рук в Unity и Unreal для AR

Ложные срабатывания жестов — бич AR-игр. Рука дрожит, pinch срабатывает впустую, кулак распознаётся как open palm. В проекте на Meta Quest мы потратили две недели только на то, чтобы отсеять шум от 26 joint positions от Meta Hand Tracking SDK. Вот как мы решили эту задачу без переусложнения.

Что даёт платформа и что нужно строить самостоятельно

Meta Quest (через Meta Hand Tracking SDK или OpenXR Hand Interaction Extension) предоставляет 26 joint positions пальцев и запястья в мировых координатах, обновляемых с частотой 30–60 Hz. Это сырые данные — позиции костей. ARKit (iOS, через AR Foundation) с Vision framework даёт аналогичный набор hand landmarks через ARHandTrackingConfiguration, доступный с iOS 18. На Android через ARCore прямого Hand Tracking API нет — используются сторонние решения (MediaPipe через ML Kit) или Google ARCore Geospatial + кастомная ML модель. Из коробки вы получаете данные, но не жесты. Распознавание жестов — ваша задача.

Как строится gesture recognizer

Каждый жест — это набор условий над joint positions:

  • Pinch (щипок): расстояние между ThumbTip и IndexTip < threshold (обычно 2–3 см в мировых единицах). Плюс дополнительная проверка: MiddleTip, RingTip, PinkyTip далеко от большого пальца (открыты). Без второго условия кулак ложно срабатывает как pinch.
  • Open Palm: все fingertip joints на значительном расстоянии от Palm joint. Проверяем Vector3.Distance(fingertip, palm) > openThreshold для всех пяти пальцев. Дополнительно — нормаль ладони (вектор от Palm к Middle Metacarpal) должна смотреть примерно в сторону камеры, иначе открытая ладонь сзади тоже сработает.
  • Point (указательный жест): IndexTip вытянут (большое расстояние от IndexMetacarpal), остальные пальцы согнуты (малое расстояние tip→metacarpal). Плюс угол между вектором IndexProximal → IndexTip и вектором ладони.

Почему важен debounce и confidence фильтр?

Рука естественно дрожит — ThumbTip и IndexTip могут случайно сближаться и расходиться быстрее, чем 1 кадр. Без debounce pinch срабатывает 5 раз в секунду при попытке сделать его один раз. Стандартная техника: state machine с временным порогом. Жест считается активным, только если условие выполнялось непрерывно минимум N кадров (или T секунд). Значения: 3–5 кадров для быстрых жестов, 10–15 кадров (≈ 0.2 с при 60 Hz) для статических поз типа Open Palm. Дополнительно — confidence фильтр. Meta Hand Tracking SDK предоставляет OVRHand.HandConfidence — при низкой достоверности трекинга (рука частично вне поля зрения, плохое освещение) жесты не обрабатываются. Это критично для AR на смартфоне, где условия съёмки непредсказуемы.

Как интегрировать жесты в AR Foundation?

В AR Foundation (Unity) Hand Tracking подключается через XRHandSubsystem (пакет com.unity.xr.hands). XRHandJoint для каждого joint даёт TryGetPose() — позицию и ротацию в пространстве. Gesture recognizer подписывается на XRHandSubsystem.handsUpdated event и обрабатывает данные в колбэке. Важно не делать heavy computation в этом колбэке — он может вызываться не в main thread. Либо буферизовать данные и обрабатывать в Update, либо использовать Job System с IJobParallelFor для многорукого распознавания. Для MediaPipe на Android — отдельная интеграция через Native Plugin или готовые обёртки (mediapipe-unity-plugin), данные приходят через callback с ML‑результатами.

Типичные жесты и их пороги

Жест Условие Порог Время удержания
Pinch distance ThumbTip-IndexTip < threshold 2–3 см 3 кадра
Open Palm all fingertips far from palm, palm normal facing camera openThreshold 4–5 см 10–15 кадров
Point IndexTip extended, others curled distance > 3 см 3–5 кадров
Fist all fingertips close to palm distance < 2 см 5–10 кадров
Swipe velocity of palm > 0.5 м/с 2 кадра

Что входит в настройку распознавания жестов?

Этап Что делаем Результат
Аналитика Выбор SDK, платформы, списка жестов Техническая спецификация
Прототип Базовый recognizer для 3–5 жестов Демо на целевой платформе
Продакшен Анимации, дебаунс, фильтры, конфигурация SDK для встраивания в игру
Тестирование QA на разных устройствах, UX‑тесты Отчёт и устранение багов
Документация Интеграционный гайд, примеры кода Wiki или pdf

Сроки и бюджет

Сроки: от 3–5 рабочих дней на базовый прототип до 2–3 недель на полноценную систему с 10+ жестами, дебаунсом и confidence‑фильтром. Бюджет проекта рассчитывается индивидуально, зависит от сложности и количества платформ. Для точной оценки свяжитесь с нами.

Как начать?

Чтобы оценить объём работы, пишите — мы проанализируем ваш проект и предложим решение. Опыт в AR — более 7 лет, реализовали жесты для 15 проектов на Meta Quest и iOS.

Подробнее про Meta Hand Tracking SDK и OpenXR Hand Interaction. Обращайтесь — получите консультацию инженера.