Налаштування розпізнавання жестів рук для керування в AR іграх

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Налаштування розпізнавання жестів рук для керування в AR іграх
Складна
~1-2 тижні
Часті питання

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

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Налаштування розпізнавання жестів рук для керування в AR іграх

Управління жестами в AR – це коли гра відповідає на форму руки, а не на натиск кнопки. Відкрита ладонь викликає меню. Щипок вибирає об'єкт. Сжатий кулак – атака. Звучить як магія, реалізується як математика над joint positions.

Що дає платформа й що потрібно будувати самостійно

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 та вектором ладні.

Це не магія – просто кілька distance checks та dot products в Update().

Debounce та запобігання помилковим спрацюванням

Жести потрібно debounce. Рука природно дрижить – 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 та обробляє дані у колбеку.

Важливо не робити тяжких обчислень у цьому колбеку – він може викликатися не в main thread. Або буферизовувати дані та обробляти в Update, або використовувати Job System з IJobParallelFor для багаторукого розпізнавання.

Для MediaPipe на Android – окрема інтеграція через Native Plugin або готові обертки (mediapipe-unity-plugin), дані приходять через callback з ML-результатами.

Терміни: базові 3–5 жестів на Meta SDK – 3–5 робочих днів; повна система з debounce, confidence filter та 10+ жестами для AR Foundation – 1–2 тижні. Вартість визначається індивідуально.