Реализация AR-измерения расстояний и площадей

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

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

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

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

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

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    744
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    562

Технические аспекты AR-измерения расстояний и площадей

AR-рулетка — один из немногих AR-юзкейсов, где пользователь сразу понимает ценность. Но точность измерения в production оказывается болезненной темой: на iPhone 11 без LiDAR погрешность может достигать 5-8%, а на iPad Pro с LiDAR — менее 1%. Эту разницу нужно честно донести до клиента ещё на этапе проектирования. Наш опыт показывает, что многие команды неправильно выбирают стек и потом переписывают алгоритмы. Мы предлагаем «под ключ» надёжное решение с учётом всех нюансов — свяжитесь с нами для оценки вашей задачи.

LiDAR vs SLAM: реальная разница в точности

LiDAR обеспечивает точность в 5-10 раз выше по сравнению со SLAM-алгоритмами на дистанциях более 2 метров. Вот сравнение на разных устройствах:

Устройство Тип датчика Погрешность до 2 м Погрешность до 5 м
iPhone SE SLAM 2–4% 5–10%
iPhone 12 Pro LiDAR 0.5–1% 1–2%
iPad Pro (M1) LiDAR 0.3–0.8% 0.8–1.5%

Без LiDAR (ARKit Visual SLAM): ARKit определяет расстояние через триангуляцию feature points. Точность сильно зависит от текстуры поверхности, освещения и пройденного пути камеры. Монотонные поверхности (белый стол, однотонный пол) дают +3–5% к погрешности. Для приложений, где требуется сертификационная точность (строительство, страхование, недвижимость), LiDAR — не опция, а требование. Для бытового использования SLAM достаточно. Подробнее — в документации ARKit.

Как строится измерение расстояния?

Пользователь тапает по экрану — создаётся точка в мировых координатах через raycast. Расстояние между двумя точками — евклидово расстояние в 3D-пространстве:

func distance(_ a: simd_float3, _ b: simd_float3) -> Float {
    return simd_distance(a, b)
}

Для отображения линии между точками в RealityKit — ModelEntity с MeshResource.generateBox(size:) вытянутым по вектору между точками и повёрнутым через simd_look(at:from:up:relativeTo:). Альтернатива — SCNGeometry с двумя вершинами и примитивом .line в SceneKit.

Текстовый лейбл с расстоянием — ModelEntity с MeshResource.generateText() или billboard SCNNode с SCNBillboardConstraint чтобы всегда смотрел на камеру.

Как измерить площадь полигона?

Площадь вычисляется через алгоритм Гаусса (shoelace formula) для 2D-проекции:

func polygonArea(_ points: [simd_float3]) -> Float {
    var area: Float = 0
    let n = points.count
    for i in 0..<n {
        let j = (i + 1) % n
        area += points[i].x * points[j].z
        area -= points[j].x * points[i].z
    }
    return abs(area) / 2
}

Важный нюанс: если точки расставлены на поверхности с уклоном (например, ступени), проекция на XZ даст заниженную площадь. Для наклонных поверхностей нужна 3D-площадь через cross product.

Почему UI-паттерны критичны для точности?

Crosshair в центре экрана с индикатором confidence — пользователь должен понимать, когда точка зафиксирована достаточно точно. Если ARKit возвращает ARRaycastResult с .estimatedPlane — показывать предупреждение «наведите на поверхность». Если .existingPlaneGeometry — всё в порядке.

Снэппинг к уже поставленным точкам на расстоянии < 5 см в экранном пространстве — обязателен для замыкания полигона при измерении площади. Без этого пользователь не может точно замкнуть контур.

Экспорт результатов: сравнение методов

Формат Назначение Сложность реализации
Скриншот Быстрый просмотр для пользователя Низкая (ARView.snapshot)
PDF Официальный отчёт с планом Средняя (UIGraphicsPDFRenderer)
JSON Интеграция в CRM/БД Высокая (согласование схемы)

Типовые требования: сохранить скриншот с нанесёнными измерениями, экспортировать данные в PDF или JSON. ARView.snapshot(saveToHDR:completion:) в RealityKit. Для PDF — UIGraphicsPDFRenderer с наложенным ARView.snapshot на схематичный план помещения.

Пример внедрения: кейс для логистического склада

Один из наших клиентов — оператор складской недвижимости — поставил задачу: сократить время обмера помещений при сдаче в аренду. Ручные замеры рулеткой занимали до 30 минут на комнату, погрешность достигала 5% из-за человеческого фактора. Мы реализовали AR-измеритель на iPad Pro с LiDAR: пользователь обводит периметр помещения, система автоматически вычисляет площадь и генерирует PDF-отчёт. Результат: время замера сократилось в 10 раз (до 2 минут), погрешность — менее 1%. Это позволило снизить трудозатраты на 40% и исключить пересчёты при разногласиях с арендаторами. Получите консультацию по внедрению AR-измерений — пишите на оценку проекта.

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

Мы специализируемся на ARKit/RealityKit более 5 лет, разработали 7 проектов с AR-измерениями для недвижимости и строительства. В услугу входит:

  • Архитектура прототипа: выбор стека (ARKit/RealityKit + SwiftUI/UIKit)
  • Реализация алгоритмов: raycast, снэппинг, polygon area (Gauss)
  • UI: crosshair с индикацией confidence, снэппинг углов
  • Экспорт: скриншот, PDF с планом, JSON/CSV
  • Тестирование на 10+ устройствах с разными датчиками
  • Соблюдение App Store Review Guidelines (Section 2.3.10, точность измерений)
  • Документация и пример кода

Сроки

Линейное измерение расстояния с двумя точками — 4-6 дней. Многоточечное измерение площади с экспортом — 10-14 дней. Поддержка LiDAR mesh picking — дополнительно 3-4 дня. Стоимость рассчитывается индивидуально. Свяжитесь с нами для демонстрации решения на вашем устройстве.

Подробнее о процессе разработки
  1. Аналитика: определение требований к точности, выбор датчиков.
  2. Проектирование: UI/UX, архитектура, алгоритмы.
  3. Реализация: код, интеграция с ARKit/RealityKit.
  4. Тестирование: на физических устройствах, в разных условиях.
  5. Деплой: публикация через TestFlight или App Store.

Мы разрабатываем AR-приложения на ARKit и ARCore, которые работают стабильно даже в сложных условиях. Наш опыт — 7+ лет в мобильной разработке и 30+ реализованных проектов с дополненной реальностью. Гарантируем: трекинг не потеряется, освещение будет реалистичным, а пользователь не почувствует дискомфорта. Сертифицированные разработчики Apple и Google.

Почему трекинг теряется и как это исправить?

ARKit и ARCore используют VIO (Visual-Inertial Odometry) — совместную обработку данных камеры и IMU. Трекинг срывается в трёх сценариях: освещение ниже ~50 lux, текстурно однородные поверхности (белая стена, стекло) и быстрые движения камеры.

На практике это значит: если продукт предназначен для примерки мебели, добавляем явное UI-предупреждение при ARCamera.TrackingState.limited(.insufficientFeatures). Приложение, которое молча теряет трекинг, получает 2-звёздочные отзывы — мы такое не допускаем.

Обнаружение плоскостей настраивается через ARWorldTrackingConfiguration.planeDetection = [.horizontal, .vertical]. Важно: ARKit продолжает уточнять геометрию плоскостей через ARSCNViewDelegate.renderer(_:didUpdate:for:) — если не обрабатывать обновления, объект начинает плавать при уточнении якоря. Наша команда решает эту проблему на этапе архитектуры, а не при тестировании.

AR Foundation: кросс-платформа с нюансами

Unity AR Foundation — слой абстракции поверх ARKit и ARCore. Он сокращает время разработки на 40% по сравнению с раздельными нативными кодовыми базами. Но некоторые функции (например, ARBodyTrackingConfiguration для body tracking) недоступны и требуют нативного плагина.

Для React Native и Flutter прямой AR Foundation отсутствует. Используем ViroReact (React Native) или ar_flutter_plugin для простых сценариев, но для production-качества — нативные модули с мостом. Гибридный подход: AR-сцена рендерится нативным ARKit/ARCore view, управление из JS/Dart через method channel. Входит в нашу стандартную поставку.

Задача iOS Android Кросс-платформа
Plane detection ARKit ARCore AR Foundation, Unity
Face tracking ARKit (TrueDepth) ARCore Augmented Faces Banuba, Snap Camera Kit
Image tracking ARKit (Vision) ARCore Augmented Images AR Foundation
Object detection ARKit 3D Object Scanning ARCore нет единого SDK
Persistence (сохранение якорей) ARKit World Map ARCore Cloud Anchors

Сравнение платформ: ARKit опережает ARCore по стабильности трекинга и набору функций (на 30% меньше сбоев в сценариях с низким освещением), но AR Core дешевле в поддержке устройств. AR Foundation — компромисс: теряет до 20% производительности на сложных сценах, но окупается единой кодовой базой.

Try-on: примерка товаров через AR

Примерка очков, украшений, косметики — отдельный класс задач. Здесь нужен face tracking, а не plane detection.

ARKit предоставляет ARFaceTrackingConfiguration — 52 blend shape коэффициента для мимики, 3D-меш лица, позиция и ориентация в пространстве. Работает только на устройствах с TrueDepth-камерой (iPhone с Face ID).

Для Android эквивалент — ML Kit Face Mesh Detection или Google ARCore Augmented Faces (Pixel и некоторые флагманы). Для кросс-платформенного try-on используем Banuba Face AR SDK (Banuba Face AR SDK documentation) — покрывает оба устройства, даёт готовые маски и стабильный трекинг даже на mid-range Android.

Качество try-on критически зависит от 3D-моделей товаров. Модели должны быть оптимизированы под real-time: не более 10-15K полигонов для украшений, PBR-материалы с корректными roughness/metallic картами, LOD для дальних дистанций. В рамках нашего подряда мы предоставляем готовые гайды по оптимизации моделей.

Как добиться реалистичного освещения в AR?

ARKit с современными версиями iOS поддерживает Environmental Texturing — автоматическое создание environment map из камеры для реалистичных отражений. Включается через ARWorldTrackingConfiguration.environmentTexturing = .automatic. Без этого металлические и стеклянные материалы выглядят пластиково.

ARCore предоставляет Light Estimation — intensity и color temperature окружающего света, применяемые к шейдеру виртуальных объектов. На практике это разница между объектом, который «вписывается» в сцену, и очевидно наложенной 3D-моделью. Мы гарантируем, что финальное изображение не выдаёт виртуальности.

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

  • Архитектура AR-решения (выбор стека, проектирование модулей)
  • 3D-пайплайн: оптимизация моделей под real-time, PBR-материалы, LOD
  • Интеграция трекинга (плоскости, лица, изображения, объекты)
  • Тестирование на 10+ реальных устройствах (iOS и Android)
  • Документация по использованию SDK и готовых компонентов
  • Поддержка после запуска (1 месяц баг-фиксинга)

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

Простая AR-сцена с размещением одной 3D-модели на плоскости — 1–2 недели. Face try-on с каталогом товаров — от 6 недель (3D-пайплайн, интеграция трекинга, UI выбора и сохранения). Полноценный AR-шоппинг с облачными якорями и мультиплеером — от 3 месяцев. Оценим проект за 1 день — пишите, обсудим вашу AR-идею.