Технічні аспекти AR-вимірювання відстаней та площ
AR-вимірювання відстаней — один із небагатьох AR-юскейсів, де користувач одразу розуміє цінність. Але точність AR-вимірювання в production виявляється болючою темою: на iPhone 11 без LiDAR похибка може сягати 5-8%, а на iPad Pro з LiDAR — менше 1%. Цю різницю потрібно чесно донести до клієнта ще на етапі проектування. Наш досвід показує, що багато команд неправильно обирають стек і потім переписують алгоритми. Ми пропонуємо «під ключ» надійне рішення з урахуванням усіх нюансів — зв'яжіться з нами для оцінки вашого завдання.
LiDAR vs SLAM: реальна різниця в точності AR-вимірювань
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 (https://developer.apple.com/documentation/arkit/checking_accuracy_of_estimated_scene_depth).
Як будується вимірювання відстані?
Користувач тапає по екрану — створюється точка у світових координатах через 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) |
| Офіційний звіт з планом | Середня (UIGraphicsPDFRenderer) | |
| JSON | Інтеграція в CRM/БД | Висока (узгодження схеми) |
Типові вимоги: зберегти скріншот з нанесеними вимірами, експортувати дані в PDF або JSON. ARView.snapshot(saveToHDR:completion:) у RealityKit. Для PDF — UIGraphicsPDFRenderer з накладеним ARView.snapshot на схематичний план приміщення.
Приклад впровадження: кейс для логістичного складу
Один із наших клієнтів — оператор складської нерухомості — поставив задачу: скоротити час обміру приміщень при здачі в оренду. Ручні заміри рулеткою займали до 30 хвилин на кімнату, похибка сягала 5% через людський фактор. Ми реалізували AR-вимірювання на iPad Pro з LiDAR: користувач обводить периметр приміщення, система автоматично обчислює площу та генерує PDF-звіт. Результат: AR-вимірювання в 10 разів швидше за ручні заміри (2 хвилини замість 30), похибка — менше 1%. Це дозволило знизити трудовитрати на 40% та виключити перерахунки при розбіжностях з орендарями. Економія для клієнта склала близько 10 000 грн на місяць. Отримайте консультацію з впровадження AR-вимірювань — зв'яжіться з нами.
Що входить у роботу
Ми спеціалізуємося на ARKit/RealityKit понад 5 років (5 років на ринку), розробили 7 успішних проєктів з AR-вимірюваннями для нерухомості та будівництва, обслуговуємо понад 30 клієнтів. Гарантуємо точність сертифікованих алгоритмів. У послугу входить:
- Архітектура прототипу: вибір стеку (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 днів (від 20 000 грн). Багатоточкове вимірювання площі з експортом — 10-14 днів (від 40 000 грн). Підтримка LiDAR mesh picking — додатково 3-4 дні (від 10 000 грн). Вартість розраховується індивідуально. Зв'яжіться з нами для демонстрації рішення на вашому пристрої.
Детальніше про процес розробки
- Аналітика: визначення вимог до точності, вибір датчиків.
- Проектування: UI/UX, архітектура, алгоритми.
- Реалізація: код, інтеграція з ARKit/RealityKit.
- Тестування: на фізичних пристроях, у різних умовах.
- Деплой: публікація через TestFlight або App Store.







