Интеграция ARKit в iOS: трекинг, окклюзия, Face Tracking

Интеграция ARKit: от трекинга до Face Tracking В нашей практике мы сталкиваемся с тем, что ARKit — не просто наложение 3D-объектов на камеру. Это связка из LiDAR-сканера, Visual Inertial Odometry и нейросетевых моделей для понимания сцены, которая при неправильном использовании даёт нестабильный

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Интеграция ARKit в iOS: трекинг, окклюзия, Face Tracking
Сложный
~3-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
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Интеграция ARKit: от трекинга до Face Tracking

В нашей практике мы сталкиваемся с тем, что ARKit — не просто наложение 3D-объектов на камеру. Это связка из LiDAR-сканера, Visual Inertial Odometry и нейросетевых моделей для понимания сцены, которая при неправильном использовании даёт нестабильный tracking, артефакты окклюзии и крэш при ARSession в background. Ниже разберём ключевые проблемы и способы их решения, опираясь на опыт ARKit-разработки в реальных проектах.

Почему трекинг срывается в тёмных сценах?

Трекинг падает при плохом освещении. ARWorldTrackingConfiguration строит карту по точкам интереса (feature points) — в тёмных помещениях или на однотонных поверхностях tracking деградирует до ARCamera.TrackingState.limited(.insufficientFeatures). Игнорировать этот state нельзя: если не показывать пользователю, что нужно осветить сцену, anchors начинают дрейфовать, и 3D-объект улетает в сторону. Правильно — подписываться на session(_:cameraDidChangeTrackingState:) и показывать соответствующую инструкцию.

Как ускорить обнаружение плоскостей?

Плоскости обнаруживаются с задержкой. ARPlaneDetection.horizontal находит пол за 2–4 секунды при хорошем освещении. Если пользователь пытается разместить объект раньше — промах. Частое решение: делать plane detection опциональным и добавлять raycast против ARMeshAnchor с LiDAR — на iPhone 12 Pro+ это даёт точность попадания ~1 см без ожидания. Сравнение: raycast обеспечивает на 40% более стабильные результаты, чем устаревший hitTest.

Что делать с окклюзией без LiDAR?

Окклюзия работает только с LiDAR. ARView.environment.sceneUnderstanding.options с .occlusion — исключительно на устройствах с LiDAR (Pro-серия с iPhone 12). На iPhone без LiDAR объект всегда поверх реального мира. Нужно чекать ARWorldTrackingConfiguration.supportsSceneReconstruction(.mesh) при старте и деградировать gracefully: отключать окклюзию и использовать полупрозрачные тени.

Как настроить Image Tracking?

ARImageTrackingConfiguration с maximumNumberOfTrackedImages = 4 — для маркерного AR. Референсные изображения загружаем из ARReferenceImage с физическим размером. physicalWidth критичен — ARKit использует его для вычисления дистанции и масштаба. Неверный размер = объект висит не там где надо.

let referenceImage = ARReferenceImage( cgImage, orientation: .up, physicalWidth: 0.15 // 15 см в реальном мире ) config.trackingImages = [referenceImage] 

Как использовать Face Tracking?

ARFaceTrackingConfiguration работает только на устройствах с TrueDepth-камерой (Face ID). Доступно 52 blend shape коэффициента через ARFaceAnchor.blendShapes — от .jawOpen до .eyeBlinkLeft. На этом строим виртуальные примерки, AR-аватары и Liveness Detection.

func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) { guard let faceAnchor = anchors.first as? ARFaceAnchor else { return } let jawOpen = faceAnchor.blendShapes[.jawOpen]?.floatValue ?? 0 // Управляем анимацией персонажа } 

Как повысить производительность AR-приложения?

ARKit + RealityKit нагружают GPU и CPU одновременно. Инструменты диагностики: Xcode Reality Composer Pro для превью сцены, GPU Frame Capture для анализа draw calls, Metal System Trace в Instruments для диагностики GPU bubbles.

Типичные узкие места:

  • USDZ с > 100K полигонов на середнячке — просадка до 30 FPS.
  • Несколько ModelEntity без инстансинга копируют геометрию в памяти.
  • arView.renderOptions — отключение .disableDepthOfField и .disableMotionBlur даёт +15% FPS на старых устройствах.

Сравнение конфигураций трекинга

Тип трекинга Конфигурация Требования к устройству Точность
World Tracking ARWorldTrackingConfiguration A9+ (iPhone 6s+) Высокая (с LiDAR ~1 см)
Image Tracking ARImageTrackingConfiguration A9+ Зависит от маркера
Face Tracking ARFaceTrackingConfiguration TrueDepth (Face ID) 52 blend shapes
Body Tracking ARBodyTrackingConfiguration A12+ (iPhone XS+) Скелет 19 joints

Оптимизации производительности

Оптимизация Прирост FPS Условия
Отключить Depth of Field +15% iPhone XR и старше
Отключить Motion Blur +10% Все устройства
Использовать instancing -50% памяти Много одинаковых объектов

Пошаговая инструкция по размещению объекта

  1. Запустить сессию ARWorldTrackingConfiguration с включённым planeDetection и environmentTexturing.
  2. Дождаться события session(_:didAdd:) или выполнить raycast из центра экрана.
  3. Создать ARAnchor с результатом raycast.
  4. Загрузить USDZ-модель через ModelEntity.loadModel.
  5. Создать AnchorEntity с привязкой к anchor.
  6. Добавить AnchorEntity в сцену.

Пример кода размещения по raycast

let query = arView.makeRaycastQuery( from: arView.center, allowing: .estimatedPlane, alignment: .horizontal ) if let query = query, let result = arView.session.raycast(query).first { let anchor = ARAnchor(name: "placed-object", transform: result.worldTransform) arView.session.add(anchor: anchor) let modelEntity = try! ModelEntity.loadModel(named: "model.usdz") let anchorEntity = AnchorEntity(anchor: anchor) anchorEntity.addChild(modelEntity) arView.scene.addAnchor(anchorEntity) } 

Что входит в работу по интеграции ARKit

  • Аудит требований и совместимости устройств (целевые модели, наличие LiDAR).
  • Проектирование AR-архитектуры с graceful деградацией на старых устройствах.
  • Разработка ядра AR: сессия, anchors, распознавание плоскостей/изображений/лиц.
  • Интеграция 3D-контента: конвертация в USDZ, настройка PBR-материалов.
  • Тестирование на физических устройствах (минимум 5 моделей).
  • Оптимизация производительности под целевые устройства.
  • Передача исходного кода, документация и обучение команды.

Сроки интеграции

Базовая интеграция ARKit с размещением USDZ-объекта по плоскости: 3–5 дней. Image tracking с маркерами и наложением контента: 4–7 дней. Комплексное решение с face tracking, окклюзией LiDAR и кастомными шейдерами Metal: 3–6 недель. Стоимость рассчитывается индивидуально в зависимости от сложности 3D-контента и требований к поддерживаемым устройствам.

Мы занимаемся iOS-разработкой более 5 лет и выполнили 20+ AR-проектов для различных отраслей. Если вы хотите внедрить дополненную реальность в своё приложение, свяжитесь с нами — оценим проект и предложим оптимальное решение. Оцените свой проект на предмет AR-возможностей — получите консультацию нашего инженера.