Інтеграція ARKit: трекінг, оклюзія, Face Tracking

Інтеграція ARKit: від трекінгу до Face Tracking Інтеграція ARKit потребує ретельного налаштування. Успішна інтеграція ARKit вимагає врахування особливостей пристрою. Правильна інтеграція ARKit — запорука стабільної роботи AR-додатку. У нашій практиці ми стикаємося з тим, що ARKit — це не просто н

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція ARKit: трекінг, оклюзія, 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
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Інтеграція ARKit: від трекінгу до Face Tracking

Інтеграція ARKit потребує ретельного налаштування. Успішна інтеграція ARKit вимагає врахування особливостей пристрою. Правильна інтеграція ARKit — запорука стабільної роботи AR-додатку. У нашій практиці ми стикаємося з тим, що ARKit — це не просто накладання 3D-об’єктів на камеру. Це зв’язка з LiDAR-сканера, Visual Inertial Odometry та нейромережевих моделей для розуміння сцени, яка при неправильному використанні дає нестабільний tracking, артефакти окклюзії та крэш при ARSession у фоні. Нижче розберемо ключові проблеми та способи їх вирішення, спираючись на досвід 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 см без очікування. Використання LiDAR-сумісних пристроїв забезпечує в 2 рази швидшу детекцію площин порівняно зі звичайними камерами. Порівняння: raycast забезпечує в 1.4 разу більш стабільні результати, ніж застарілий 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% пам’яті Багато однакових об’єктів

Інтеграція ARKit

Як оптимізувати ARKit?

Покрокова інструкція з розміщення об’єкта

  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

Що входить у роботу з інтеграції ARKit

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

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

Базова інтеграція ARKit з розміщенням USDZ-об’єкта по площині: 3–5 днів. Image tracking з маркерами та накладанням контенту: 4–7 днів. Комплексне рішення з face tracking, оклюзією LiDAR та кастомними шейдерами Metal: 3–6 тижнів. Вартість базової інтеграції ARKit починається від $2000. Вартість повноцінного AR-рішення може сягати $15 000 залежно від складності 3D-контенту та вимог до підтримуваних пристроїв. При замовленні комплексної інтеграції ви заощаджуєте до 30% порівняно з поетапною розробкою.

Ми займаємося iOS-розробкою понад 5 років (5+ років досвіду на ринку) і виконали 20+ AR-проєктів для різних галузей. Наша команда має сертифікацію Apple та гарантію якості на всі проєкти. Якщо ви хочете впровадити доповнену реальність у свій додаток, зв'яжіться з нами — оцінимо проєкт і запропонуємо оптимальне рішення. Оцініть свій проєкт на предмет AR-можливостей — отримайте консультацію нашого інженера.