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

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

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

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

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

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

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

Етапи розробки

Останні роботи

  • 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

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

AR-рулетка — одна з небагатьох AR-юзкейсів, де користувач одразу розуміє цінність. Але точність вимірювання в production виявляється болючою темою: на iPhone 11 без LiDAR похибка може досягати 5-8%, а на iPad Pro з LiDAR — менше 1%. Цю різницю потрібно чесно донести до клієнта ще на етапі проектування.

LiDAR проти SLAM-вимірювань: реальна різниця

Без LiDAR (ARKit Visual SLAM): ARKit визначає відстань через триангуляцію feature points. Точність сильно залежить від текстури поверхні, освітлення та пройденого пути камери. На відстані до 2 метрів — 2-4% похибки при гарному освітленні. На 5+ метрів — 5-10%. Монотонні поверхні (білий стіл, однотонний пол) дають +3-5% до похибки.

З LiDAR (iPhone 12 Pro+, iPad Pro): дальномер бьє прямим інфрачервоним променем, похибка — 0.5-1.5% на дистанції до 5 метрів. ARKit з sceneReconstruction: .meshWithClassification будує плотний mesh, з якого можна вибирати точки без raycast по площині.

Для додатку, де потрібна сертифікаційна точність (будівництво, страхування, нерухомість), LiDAR — не опція, а вимога. Для побутового використання SLAM достатньо.

Як будується вимірювання відстані

Користувач тапає по екрану — створюється точка в мировых координатах через 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 {
    // Проецюємо на горизонтальну площину (XZ)
    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 см в екранному просторі — обов'язковий для замикання полігона при вимірюванні площі. Без цього користувач не може точно замкнути контур.

Експорт результатів

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

Терміни

Лінійне вимірювання відстані з двома точками — 4-6 днів. Багатоточечне вимірювання площі з експортом — 10-14 днів. Підтримка LiDAR mesh picking — додатково 3-4 дня. Вартість розраховується індивідуально.