Body Tracking в AR: разработка фитнес-приложений и игр на iOS/Android

Представьте: вы создаёте AR-фитнес-тренера. Пользователь делает упражнение, а виртуальный персонаж должен зеркально повторять движение. Если трекинг неточен — анимация рассинхронизируется, пользователь теряет мотивацию. Наши инженеры столкнулись с этим при разработке приложения для сквоша: задержка

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Body Tracking в AR: разработка фитнес-приложений и игр на iOS/Android
Сложный
~5 дней

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Представьте: вы создаёте AR-фитнес-тренера. Пользователь делает упражнение, а виртуальный персонаж должен зеркально повторять движение. Если трекинг неточен — анимация рассинхронизируется, пользователь теряет мотивацию. Наши инженеры столкнулись с этим при разработке приложения для сквоша: задержка в 3 кадра делала игру неиграбельной. Решение — оптимизировать пайплайн трекинга под конкретное устройство. Мы переписали обработчик на Metal, и задержка упала до 1 кадра.

Используем ARKit на iOS (A12+) и MediaPipe на Android. У каждой платформы свои особенности: ARKit выдаёт 91 точку скелета с точностью до сантиметра, MediaPipe — 33 ключевые точки с погрешностью 5–10 см. Выбор зависит от целевой аудитории и бюджета. Правильный выбор платформы экономит до 30% бюджета на этапе прототипирования.

В этой статье разберём: как получать позу в реальном времени, привязывать 3D-модель к скелету, анализировать углы суставов для фитнеса и сравнивать платформы. Все сниппеты кода готовы к интеграции. Мы работаем с ARKit 6, RealityKit, MediaPipe 2.0 и Flutter. Для заказчиков, которым нужна максимальная точность, рекомендуем iOS с LiDAR — это даёт дополнительную глубину.

Как ARKit отслеживает тело?

iOS предлагает ARBodyTrackingConfiguration (требуется A12+). Скелет — 91 joint, иерархически связанных. Код получения позиции запястья:

func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) { guard let bodyAnchor = anchors.first as? ARBodyAnchor else { return } let skeleton = bodyAnchor.skeleton if let wristTransform = skeleton.modelTransform(for: .rightHand) { let worldTransform = bodyAnchor.transform * wristTransform // Привязать объект к запястью } } 

Ограничения: дистанция 1.5–5 м; один человек в кадре; при быстрых движениях задержка 2–4 кадра. Для multi-person используем сторонние ML-решения.

Как работает MediaPipe Pose?

Для Android используем MediaPipe Pose Landmarker (33 ключевые точки). Точность ниже ARKit (5–10 см против 1–3 см), но для фитнес-аналитики достаточно. Сравнение:

Параметр ARKit (iOS) MediaPipe (Android)
Количество точек 91 joint 33 landmarks
Точность 1–3 см 5–10 см
Требования A12+, Neural Engine Любая RGB-камера
Частота кадров 60 fps 30–60 fps

Почему ARKit точнее MediaPipe?

ARKit использует нейронный движок и данные от LiDAR (на Pro-моделях), что даёт стабильную глубину. MediaPipe полагается только на RGB-изображение, поэтому на сложном фоне или при плохом освещении точность падает. В реальных тестах ARKit показывает в 3 раза меньшую ошибку позиционирования суставов, чем MediaPipe на том же сценарии.

Сравнение производительности

На реальных устройствах производительность различается:

Устройство FPS RAM (MB) CPU Usage (%)
iPhone 14 Pro 60 150 25
Samsung Galaxy S22 45 200 35
Google Pixel 7 30 180 40

ARKit в 3 раза точнее MediaPipe по позиционированию суставов, но MediaPipe работает на более широком спектре устройств. Если точность критична — выбирайте iOS.

Как привязать 3D-персонаж к скелету?

Готовая USDZ-сцена с rigg, совместимым с ARKit joint hierarchy (те же имена). RealityKit BodyTrackedEntity автоматически применяет скелетные трансформации. Если имена joints не совпадают — персонаж "разлетается". Проверяем через Reality Composer Pro.

Анализ движений для фитнеса

Угол в суставе — через dot product:

func jointAngle(joint1: simd_float3, vertex: simd_float3, joint2: simd_float3) -> Float { let v1 = normalize(joint1 - vertex) let v2 = normalize(joint2 - vertex) return acos(dot(v1, v2)) * (180 / .pi) } 

Угол колена при приседании: 80–110° — норма. Меньше 60° — слишком глубоко. Реализуем real-time фидбек с голосовыми подсказками.

Можно ли отслеживать несколько людей?

Стандартный ARKit не поддерживает отслеживание нескольких людей. Для этого мы используем MediaPipe Pose с отдельным детектором на каждого человека и оптимизируем с помощью GPU. На iPhone 15 Pro достигаем 30 fps для двух человек. На Android с помощью NNAPI можно получить 20–25 fps для двух человек.

Как оптимизировать body tracking для реального времени?

  • Снизьте частоту кадров до 30 fps, если точность позволяет.
  • Используйте LOD для 3D-моделей: снижайте полигональность вдали.
  • Кэшируйте результаты детекции при статичной позе.
  • На Android применяйте NNAPI или GPU делегат MediaPipe.
  • На iOS используйте Metal для GPU-вычислений — это снижает нагрузку на CPU.

Что входит в работу

  • SDK с документацией и примерами кода для iOS/Android.
  • Готовый прототип с базовым трекингом и привязкой 3D-объекта.
  • Интеграция фитнес-аналитики (углы, повторения, сожжённые калории).
  • Риггинг и анимация 3D-персонажа под скелет.
  • Оптимизация производительности под конкретные устройства.
  • Поддержка после релиза: 1 месяц бесплатно.

Сроки и стоимость

Базовый body tracking с привязкой 3D-объекта — 1–2 недели. Риггинг персонажа + интеграция — 3–4 недели. Фитнес-аналитика — 4–6 недель. Android-версия (MediaPipe) — дополнительно 2–3 недели. Стоимость рассчитывается индивидуально. Закажите консультацию — мы подберём оптимальное решение под ваш бюджет.

Почему выбирают нас?

  • 10+ лет опыта в мобильной разработке
  • 50+ успешных AR-проектов
  • Гарантируем соблюдение сроков и NDA
  • Сертифицированные специалисты по ARKit и MediaPipe

Нужен точный body tracking для вашего проекта? Свяжитесь с нами для бесплатной оценки — предложим оптимальное решение.