Платформа ARCore — рішення Google для доповненої реальності на Android, яке використовує камеру та інерційні датчики смартфона для відстеження положення в просторі. За даними Google AR Developers, 2025, платформа підтримує Motion Tracking, Environmental Understanding та Light Estimation — три базові технології для розміщення віртуальних об'єктів у реальному середовищі. Кроссплатформна архітектура дозволяє розробникам створювати AR-додатки для Android, iOS, Unity та Unreal Engine з єдиною кодовою базою.
Головне
ARCore — це платформа доповненої реальності від Google, анонсована у 2018 році як наступник Project Tango у більш легкому та доступному форматі. На відміну від Tango, який вимагав спеціалізованих сенсорів глибини, ARCore працює на стандартних Android-смартфонах, використовуючи лише камеру та інерційні датчики (IMU).
ARCore використовує три ключові технології: Motion Tracking для відстеження положення пристрою, Environmental Understanding для виявлення горизонтальних та вертикальних площин і Light Estimation для коригування освітлення віртуальних об'єктів під реальне середовище. Ці три технології дозволяють розміщувати AR-об'єкти, які виглядають природно на будь-якій поверхні.
За даними Google I/O 2024, ARCore підтримується на більш ніж 1 мільярді Android-пристроїв, включаючи смартфони Samsung, Xiaomi, Huawei, OnePlus, Google Pixel та інших. Платформа інтегрована з Google Play Services for AR, що дозволяє оновлювати ARCore через Google Play Store незалежно від версії Android.
За шість версій ARCore пройшов значну еволюцію: ARCore 1.0 — базове відстеження та розпізнавання площин; ARCore 1.2 — вертикальні площини та Augmented Images; ARCore 1.7 — Cloud Anchors для багатокористувацьких сесій; ARCore 1.10 — Augmented Faces для відстеження міміки обличчя.
ARCore 1.20+ включає Scene Semantic Understanding — розпізнавання категорій об'єктів (підлога, стеля, стіна, меблі, рослина, двері) через ML-модель TensorFlow Lite на пристрої. Street View Geometry API дозволяє використовувати карти глибини Google Street View для AR-навігації на відкритому повітрі.
// Ініціалізація ARCore сесії
val session = Session(context)
val config = Config(session)
config.lightEstimationMode =
Config.LightEstimationMode.ENVIRONMENTAL_HDR
config.planeFindingMode =
Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
session.configure(config)
// Обробка кадру
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
Plane::class.java
)
ARCore використовує гібридний підхід: IMU (інерційний вимірювальний модуль) передбачає положення пристрою з високою частотою (до 1000 Гц), а візуальна одометрія коригує помилки на основі аналізу характерних точок з камери з частотою 30–60 Гц. Цей підхід забезпечує точність відстеження близько 1–2 сантиметрів у стаціонарних умовах.
Процес Environmental Understanding працює в три етапи: спочатку ARCore знаходить характерні точки на зображенні з камери, потім визначає скупчення точок, що лежать на одній площині, та апроксимує їх у полігон. Після розпізнавання площини ARCore створює Trackable-об'єкт типу Plane, який оновлюється в міру отримання нових кадрів.
За даними Google, ARCore визначає площину розміром від 10x10 сантиметрів на відстані до 1 метра від камери. Для середніх приміщень (кімната 20 м²) повне сканування площин займає близько 2–4 секунд. При використанні Depth API з підтримкою ToF-сенсора точність розпізнавання підвищується на 40%.
Depth API — технологія ARCore, яка будує карту глибини сцени на основі стереоаналізу зображення з камери. На пристроях з ToF-сенсором (Time-of-Flight) карта глибини отримується миттєво з точністю до 2 см. На пристроях без глибиноміра Depth API використовує машинне навчання для оцінки глибини по одному кадру, що дає точність близько 10 см.
Scene Mesh — тривимірна сітка середовища, яку ARCore будує в реальному часі. Сітка використовується для фізики зіткнень, окклюзії віртуальних об'єктів та накладання тіней. Scene Mesh доступний на пристроях з OpenGL ES 3.1 та підтримкою Depth API, включає до 500 тисяч полігонів на кадр.
// Отримання карти глибини
val depthImage = frame.acquireDepthImage16Bits()
// Розміщення об'єкта на розпізнаній площині
val hitResult = frame.hitTest(x, y)
.firstOrNull { it.trackable is Plane }
hitResult?.let { result ->
val anchor = session.createAnchor(
result.hitPose
)
val model = ModelRenderable.builder()
.setSourceId(R.raw.my_model)
.build()
.exceptionally { null }
AnchorNode(anchor).apply {
this.renderable = model.get()
}
}
Хоча ARCore та ARKit вирішують одні й ті ж завдання — відстеження положення, розпізнавання площин та оцінку освітлення — їхні підходи та екосистеми відрізняються. ARCore надає перевагу кроссплатформності та сумісності, тоді як ARKit використовує глибоку інтеграцію з апаратним забезпеченням Apple.
Ключові відмінності: ARCore працює на Android та iOS через ARCore SDK, ARKit — лише на iOS. ARCore використовує Cloud Anchors для синхронізації через Firebase, ARKit — ARWorldMap для прямого обміну між пристроями. ARCore з Depth API підтримує ToF-сенсори, ARKit з LiDAR — лазерне сканування з точністю до 3 см.
За даними порівняльних тестів Google 2024, точність відстеження ARCore на пристроях з гіроскопом та ToF-сенсором порівнянна з ARKit на iPhone з LiDAR — похибка не перевищує 2 см на відстані 2 метрів. На пристроях без ToF ARCore поступається ARKit за швидкістю ініціалізації: 3 секунди проти 0.5 секунди.
Вибір між ARCore та ARKit залежить від цільової аудиторії: якщо додаток призначений лише для iOS — ARKit дає кращу продуктивність та доступ до ексклюзивних функцій LiDAR. Якщо потрібна підтримка обох платформ — ARCore з ArcoreiOS SDK дозволяє використовувати єдину кодову базу з мінімальними платформними відмінностями, хоча з втратою деяких апаратних можливостей кожної платформи.
| Характеристика | ARCore | ARKit |
|---|---|---|
| Платформа | Android + iOS + Unity/Unreal | Лише iOS |
| Датчик глибини | ToF (опціонально) | LiDAR (Pro моделі) |
| Синхронізація | Cloud Anchors (Firebase) | ARWorldMap (Multipeer) |
| Відстеження обличчя | Augmented Faces | Face Tracking (TrueDepth) |
| Точність VIO | 1–3 см | 0.5–1 см |
Інтеграція ARCore починається з додавання залежності Google Play Services for AR в build.gradle: com.google.ar:core. Додаток повинен перевірити доступність ARCore на пристрої через ArCoreApk.checkAvailability() — якщо ARCore не встановлено, запропонувати користувачеві встановити його з Google Play Store.
Базовий проект ARCore включає: створення Session та Config, налаштування SurfaceView для відображення камери, запуск сесії через session.resume() та обробку кадрів через session.update(). Для рендерингу 3D-об'єктів використовується Sceneform SDK (бібліотека Google на основі Filament) або Unity/Unreal для складних сцен.
Google рекомендує Sceneform для Kotlin-додатків — він надає готові компоненти: ModelRenderable для завантаження 3D-моделей (OBJ, glTF, FBX), ViewRenderable для вбудовування Android View в AR-сцену та MotionEvent для обробки дотиків. Sceneform автоматично керує життєвим циклом AR-сесії та звільненням ресурсів.
ARCore може втрачати відстеження при недостатньому освітленні, однотонних поверхнях або швидких рухах пристрою. Стан відстеження доступний через frame.getTrackingState() — значення TRACKING, PAUSED та STOPPED. При переході в PAUSED рекомендується призупиняти рендеринг та показувати користувачеві рекомендації: «Повільніше переміщайте пристрій» або «Перейдіть у більш освітлене місце.»
Для автоматичного відновлення після збою ARCore підтримує релокалізацію на основі збереженої карти характерних точок. Розробник може зберігати карту через session.serialize() та відновлювати через session.deserialize() — це корисно для long-running AR-досвіду, де користувач повертається в той самий фізичний простір. Відновлення карти займає 1–2 секунди за умови, що середовище не змінилося суттєво.
class ARCoreActivity : AppCompatActivity() {
private lateinit var session: Session
override fun onResume() {
super.onResume()
when (ArCoreApk.getInstance()
.checkAvailability(this)
) {
ArCoreApk.Availability.SUPPORTED_INSTALLED -> {
session = Session(this)
session.resume()
}
else -> {
showInstallPrompt()
}
}
}
}
Часті запитання
ARCore підтримується на більш ніж 1 мільярді Android-пристроїв, включаючи Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ та багато інших. Повний список сертифікованих пристроїв опубліковано на сайті developers.google.com/ar/devices.
Базові функції ARCore — Motion Tracking та Environmental Understanding — не потребують інтернету. Cloud Anchors та Augmented Images з хмарними посиланнями потребують з'єднання. Depth API та Scene Mesh працюють повністю на пристрої без підключення до мережі.
Так, ARCore можна використовувати з OpenGL ES 3.1 безпосередньо, з Unity або Unreal Engine. Sceneform — рекомендований варіант для простих проектів на Kotlin, але він не обов'язковий. Для складних 3D-сцен з реалістичною фізикою краще використовувати ігрові движки з підтримкою ARCore SDK.
ARCore оптимізований для приміщень з достатнім освітленням (100–500 люкс). На вулиці при яскравому сонці точність відстеження може знижуватися через пересвіт камери. Для зовнішньої роботи Google рекомендує використовувати Street View Geometry API, що надає карти глибини для міських локацій.
Scene Viewer — це готовий UI-компонент Google для перегляду 3D-моделей в AR без написання коду, що працює через WebXR. ARCore — повноцінний SDK для створення кастомного AR-досвіду з програмним керуванням всіма аспектами сесії, відстеження та рендерингу.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також