Реализация LiDAR-сканирования в iOS AR-приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация LiDAR-сканирования в iOS AR-приложении
Сложный
~3-5 дней
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация LiDAR-сканирования в iOS AR-приложении

LiDAR-сенсор появился в iPad Pro 2020, iPhone 12 Pro и старше. ARKit использует его данные через ARWorldTrackingConfiguration с включённым sceneReconstruction — и это меняет всё, что касается качества plane detection, окклюзии объектов и скорости инициализации сцены.

Без LiDAR ARKit определяет горизонтальные плоскости за 2–5 секунд, вертикальные — ещё дольше. С LiDAR получаем меш окружения за доли секунды. Это не маркетинг — это разница между «AR-объект появляется сразу» и «пользователь машет телефоном 10 секунд перед тем, как что-то произойдёт».

Где конкретно ломается LiDAR-интеграция

Первая проблема — ARMeshGeometry даёт слишком плотный меш. Типичный фрейм: 50 000–200 000 вершин на комнату средних размеров. Если передавать это напрямую в SceneKit или RealityKit без LOD и culling, FPS проседает уже на A14.

Решение: используем ARMeshAnchor и ARMeshGeometry.faces для разреженного меша, а для отображения — 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 секунды на нон-LiDAR устройстве.

Fallback для устройств без LiDAR

LiDAR есть только с iPhone 12 Pro. Для широкого охвата пишем два пути:

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

Это не просто if — это разные UX-сценарии. На нон-LiDAR устройствах показываем индикатор «наведите на поверхность», на LiDAR — сразу предлагаем разместить объект.

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

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

Сроки

Сложность Сроки
Базовая LiDAR-интеграция с окклюзией 1–2 недели
Полноценный пайплайн + fallback + оптимизация 3–5 недель
Кастомные классификаторы поверхностей + AR-физика 6–8 недель

Стоимость рассчитывается индивидуально после анализа требований к AR-сцене и целевых устройств.