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

Як налаштувати розпізнавання жестів рук у Unity та Unreal для AR Хибні спрацьовування жестів — бич AR-ігор. Рука тремтить, pinch спрацьовує даремно, кулак розпізнається як open palm. У проєкті на Meta Quest ми витратили два тижні тільки на те, щоб відсіяти шум від 26 joint positions від <cite>Met

Наші компетенції

Інші послуги студії

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:

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

Для порівняння, Unity AR Foundation з XRHandSubsystem забезпечує вдвічі швидшу обробку, ніж MediaPipe на Android, завдяки оптимізованим Native API.

Чому важливий 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 на смартфоні, де умови зйомки непередбачувані. Для додаткового згладжування застосовуємо low-pass фільтр на quaternion суглобів.

Як інтегрувати жести в 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‑фільтром. Бюджет проєкту розраховується індивідуально, залежить від складності та кількості платформ. Для точної оцінки зв'яжіться з нами. Приклад вартості: базовий прототип (3–5 жестів) — від 500$, продакшен-система з 10+ жестами та повним тестуванням — від 3000$.

Як почати?

Щоб оцінити обсяг роботи, пишіть — ми проаналізуємо ваш проєкт і запропонуємо рішення. Ми гарантуємо якість — кожен проєкт проходить сертифіковане тестування. Наша команда має 7+ років досвіду в AR та 15 реалізованих проєктів з жестами. На ринку з 2018 року.

Докладніше про Meta Hand Tracking SDK та OpenXR Hand Interaction. Звертайтеся — отримайте консультацію інженера.