Реалізація LiDAR-сканування в iOS AR-додатку

Реалізація LiDAR-сканування в iOS AR-додатку Відколи з'явився LiDAR на пристроях Apple, ми в TrueTech (5+ років досвіду, 20+ AR-проєктів) спеціалізуємося на його інтеграції для AR-додатків. За цей час реалізували понад 20 проєктів, де точне сканування простору стало ключовим — від примірювання ме

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація LiDAR-сканування в iOS AR-додатку
Складний
~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

Реалізація LiDAR-сканування в iOS AR-додатку

Відколи з'явився LiDAR на пристроях Apple, ми в TrueTech (5+ років досвіду, 20+ AR-проєктів) спеціалізуємося на його інтеграції для AR-додатків. За цей час реалізували понад 20 проєктів, де точне сканування простору стало ключовим — від примірювання меблів до навігації всередині приміщень. Наш досвід дозволяє гарантувати стабільну роботу на пристроях з LiDAR та коректний fallback для решти.

LiDAR-сенсор з'явився в iPad Pro, iPhone 12 Pro та старших. ARKit використовує його дані через ARWorldTrackingConfiguration з увімкненим sceneReconstruction — і це змінює все, що стосується якості plane detection, оклюзії об'єктів та швидкості ініціалізації сцени. За нашими вимірами, LiDAR-сесія стартує в 10 разів швидше, ніж площинне детектування на non-LiDAR пристроях.

Без LiDAR ARKit визначає горизонтальні площини за 2–5 секунд, вертикальні — ще довше. З LiDAR отримуємо меш середовища за частки секунди. Це не маркетинг — це різниця між «AR-об'єкт з'являється одразу» та «користувач махає телефоном 10 секунд перед тим, як щось відбудеться».

Як правильно налаштувати LiDAR-конфігурацію?

Перша проблема — ARMeshGeometry дає надто щільний меш. Типовий фрейм: 50 000–200 000 вершин на кімнату середніх розмірів (близько 20 м²). Якщо передавати це напряму в SceneKit або RealityKit без LOD та culling, FPS просідає вже на A14 (до 25 кадрів/с при 100K вершин).

Рішення: використовуємо ARMeshAnchor та ARMeshGeometry.faces для розрідженого меша (наприклад, 20% вершин), а для відображення — ModelEntity з MeshResource.generate(from:) лише для видимих секцій. ARView в RealityKit вміє робити це через sceneUnderstanding.options з прапорцем .occlusion — він активує лише необхідний subset меша для розрахунку оклюзії, не рендерячи весь.

Друга проблема — raycast у LiDAR-режимі. ARRaycastQuery з типом .estimatedPlane працює інакше, ніж .existingPlaneGeometry. На пристроях з LiDAR правильний шлях: ARRaycastQuery(origin:direction:allowing:.estimatedPlane, alignment:.any) з подальшим уточненням через меш. Якщо додати .existingPlaneGeometry як fallback — отримуємо подвійні хіти та артефакти розміщення.

Третя — sessionWasInterrupted. Коли користувач згортає додаток, LiDAR-сесія скидає накопичений меш. При відновленні потрібно викликати session.run(configuration, options: [.removeExistingAnchors, .resetSceneReconstruction]) — без .resetSceneReconstruction старі ARMeshAnchor накладаються на нові з дрейфом.

Як побудувати LiDAR-пайплайн?

Використовуємо RealityKit 2 як основний рендер-шар: він напряму інтегрований з ARKit 5+ і використовує Metal для рендерингу мешів без CPU-оверхеду SceneKit. Конфігурація:

let config = ARWorldTrackingConfiguration() config.sceneReconstruction = .meshWithClassification config.environmentTexturing = .automatic config.frameSemantics = [.personSegmentationWithDepth] arView.session.run(config) 

meshWithClassification включає класифікацію поверхонь (підлога, стіна, стеля, вікно, двері) — це дозволяє фільтрувати ARMeshAnchor за ARMeshClassification та реагувати лише на потрібний тип поверхні. Для додатків з розстановкою меблів або навігацією в приміщенні це критично.

Для оклюзії об'єктів за реальними предметами вмикаємо:

arView.environment.sceneUnderstanding.options = [.occlusion, .physics] 

.physics додає колізії AR-об'єктів з реальними поверхнями — AR-куб падає на стіл і не провалюється крізь нього.

Кейс: додаток для примірювання меблів, iPhone 13 Pro. Без LiDAR-оклюзії диван «висів» поверх ніг користувача при зйомці себе. З .occlusion ноги коректно перекривають AR-об'єкт. Час ініціалізації площини — 0.3 секунди проти 4.2 секунди на non-LiDAR пристрої, що в 14 разів швидше.

Як реалізувати LiDAR-сканування: покроковий план

  1. Перевірка доступності LiDAR. Викличте ARWorldTrackingConfiguration.supportsSceneReconstruction(.mesh). Якщо true — використовуйте LiDAR-шлях, інакше — plane detection.
  2. Налаштування конфігурації. Увімкніть .meshWithClassification та .environmentTexturing.automatic. Для захоплення глибини додайте .personSegmentationWithDepth.
  3. Рендеринг з оклюзією. В RealityKit увімкніть sceneUnderstanding.options = [.occlusion, .physics]. Для користувацького рендерингу використовуйте ARMeshAnchor з LOD (наприклад, LOD0: 100% вершин, LOD1: 30%).
  4. Raycast з LiDAR. Використовуйте .estimatedPlane з alignment: .any. При відсутності LiDAR — fallback на .existingPlaneGeometry.
  5. Обробка переривань. В sessionWasInterrupted викличте перезапуск з опціями removeExistingAnchors та resetSceneReconstruction.

Що LiDAR дає порівняно з plane detection

Критерій З LiDAR Без LiDAR (plane detection)
Час ініціалізації сцени 0.2–0.5 с 2–5 с
Якість оклюзії Повна, з урахуванням глибини Відсутня або приблизна
Визначення вертикальних поверхонь Миттєво Ускладнено (10-15 с)
Навантаження на CPU/GPU Високе (оптимізоване GPU instancing) Помірне

Fallback для пристроїв без LiDAR

LiDAR є лише з iPhone 12 Pro. Для широкого охоплення пишемо два шляхи:

if ARWorldTrackingConfiguration.supportsSceneReconstruction(.mesh) { // LiDAR path } else { // Plane detection fallback config.planeDetection = [.horizontal, .vertical] } 

Це не просто if — це різні UX-сценарії. На non-LiDAR пристроях показуємо індикатор «наведіть на поверхню», на LiDAR — одразу пропонуємо розмістити об'єкт.

Що входить в роботу (послуга під ключ)

  • Налаштування ARWorldTrackingConfiguration з sceneReconstruction та класифікацією поверхонь
  • Реалізація оклюзії та фізики через RealityKit sceneUnderstanding
  • Оптимізація рендерингу меша (LOD, frustum culling, vertex buffer compression)
  • Коректний raycast з LiDAR та fallback для non-LiDAR пристроїв
  • Обробка переривань сесії та відновлення стану
  • Тестування на реальних пристроях (iPhone 12 Pro+, iPad Pro)

Терміни та вартість

Складність Терміни Вартість (орієнтовно)
Базова LiDAR-інтеграція з оклюзією 1–2 тижні від $4,000
Повноцінний пайплайн + fallback + оптимізація 3–5 тижнів від $8,000
Кастомні класифікатори поверхонь + AR-фізика 6–8 тижнів від $15,000

Вартість розраховується індивідуально після аналізу вимог до AR-сцени та цільових пристроїв. Отримайте розрахунок за 1 день — пишіть нам для консультації. Ми оцінимо проєкт безкоштовно.

Посилання на документацію Apple щодо ARWorldTrackingConfiguration [Apple Developer Documentation: ARWorldTrackingConfiguration](https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration)
Що таке LiDAR? LiDAR (Light Detection and Ranging) — технологія вимірювання відстаней за допомогою лазерних імпульсів. Детальніше на [Wikipedia](https://en.wikipedia.org/wiki/Lidar).