ARCore: какво е това, възможности и технология за добавена реалност

Автор: IT Sectr Публикувано: 2026-03-25 Време за четене: 8 мин

Платформата ARCore — решението на Google за добавена реалност на Android, което използва камерата и инерциалните сензори на смартфона за проследяване на позицията в пространството. Според Google AR Developers, 2025, платформата поддържа Motion Tracking, Environmental Understanding и Light Estimation — три основни технологии за поставяне на виртуални обекти в реална среда. Кръстосаната архитектура позволява на разработчиците да създават AR приложения за Android, iOS, Unity и Unreal Engine с единна кодова база.

Основни точки

  • ARCore — платформата на Google за добавена реалност на Android, представена през 2018 г.
  • Motion Tracking — технология за проследяване на движението на устройството базирана на IMU и анализ на изображение.
  • Environmental Understanding — разпознаване на равнини, граници и релеф на повърхности.
  • Cloud Anchors — механизъм за синхронизиране на AR обекти между множество устройства през облака.
  • ARCore SDK достъпен за Android (Kotlin/Java), iOS, Unity и Unreal Engine.

Какво е ARCore?

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 претърпя значителна еволюция: 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 навигация на открито.

kotlin
// Инициализиране на 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

ARCore използва хибриден подход: IMU (инерциален измервателен модул) прогнозира позицията на устройството с висока честота (до 1000 Hz), а визуалната одометрия коригира грешките на базата на анализ на характерни точки от камерата с честота 30–60 Hz. Този подход осигурява точност на проследяване от около 1–2 сантиметра в стационарни условия.

Процесът на Environmental Understanding работи на три етапа: първо ARCore намира характерни точки (feature points) в изображението от камерата, след това идентифицира клъстери от точки, лежащи на една равнина, и ги апроксимира в полигон. След разпознаване на равнината ARCore създава Trackable обект от тип Plane, който се актуализира с постъпването на нови кадри.

Според Google, ARCore определя равнина с размер 10x10 сантиметра на разстояние до 1 метър от камерата. За средно големи помещения (стая от 20 m²) пълното сканиране на равнините отнема около 2–4 секунди. При използване на Depth API с поддръжка на ToF сензор, точността на разпознаване се повишава с 40%.

Depth API и Scene Mesh

Depth API — технология на ARCore, която изгражда карта на дълбочината на сцената на базата на стерео анализ на изображението от камерата. На устройства с ToF сензор (Time-of-Flight) картата на дълбочината се получава незабавно с точност до 2 см. На устройства без сензор за дълбочина, Depth API използва машинно обучение за оценка на дълбочината от един кадър, което дава точност от около 10 см.

Scene Mesh — триизмерна мрежа на околната среда, която ARCore изгражда в реално време. Мрежата се използва за физика на сблъсъци, оклузия на виртуални обекти и нанасяне на сенки. Scene Mesh е достъпен на устройства с OpenGL ES 3.1 и поддръжка на Depth API, включва до 500 хиляди полигона на кадър.

kotlin
// Получаване на карта на дълбочината
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 решават едни и същи задачи — проследяване на позиция, разпознаване на равнини и оценка на осветление — техните подходи и екосистеми се различават. 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 с ARCore iOS SDK позволява използване на единна кодова база с минимални платформени разлики, макар и със загуба на някои хардуерни възможности на всяка платформа.

ХарактеристикаARCoreARKit
ПлатформаAndroid + iOS + Unity/Unrealсамо iOS
Сензор за дълбочинаToF (по избор)LiDAR (Pro модели)
СинхронизацияCloud Anchors (Firebase)ARWorldMap (Multipeer)
Проследяване на лицеAugmented FacesFace Tracking (TrueDepth)
Точност на VIO1–3 см0,5–1 см

Интегриране на ARCore в приложението

Интегрирането на 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() — това е полезно за дълготрайни AR изживявания, където потребителят се връща в същото физическо пространство. Възстановяването на картата отнема 1–2 секунди, при условие че средата не се е променила значително.

kotlin
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?

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?

Основните функции на ARCore — Motion Tracking и Environmental Understanding — не изискват интернет. Cloud Anchors и Augmented Images с облачни връзки изискват свързаност. Depth API и Scene Mesh работят изцяло на устройството без мрежова връзка.

Могат ли да се създават AR приложения без Sceneform?

Да, ARCore може да се използва директно с OpenGL ES 3.1, с Unity или Unreal Engine. Sceneform е препоръчителният вариант за прости проекти в Kotlin, но не е задължителен. За сложни 3D сцени с реалистична физика е по-добре да се използват игрови двигатели с поддръжка на ARCore SDK.

Как работи ARCore на закрито и на открито?

ARCore е оптимизиран за вътрешни пространства с достатъчно осветление (100–500 лукс). На открито при ярко слънце точността на проследяване може да намалее поради преекспониране на камерата. За работа на открито Google препоръчва използването на Street View Geometry API, който предоставя карти на дълбочината за градски локации.

Каква е разликата между ARCore и Scene Viewer?

Scene Viewer — е готов UI компонент на Google за преглед на 3D модели в AR без писане на код, работещ чрез WebXR. ARCore е пълноценен SDK за създаване на персонализирано AR изживяване с програмно управление на всички аспекти на сесията, проследяването и рендерирането.

Резюме

  • ARCore — кръстосана платформена AR платформа от Google, работеща на Android и iOS.
  • Motion Tracking използва хибрид от IMU и визуална одометрия за точно позициониране.
  • Cloud Anchors осигуряват AR сесии с множество потребители със синхронизация чрез Firebase.
  • Depth API изгражда карта на дълбочината на сцената — програмно или чрез ToF сензор.
  • Sceneform — препоръчителен SDK за създаване на AR приложения в Kotlin с минимален код.
  • Съвместимост — над 1 милиард Android устройства със сертификация ARCore.
  • Изборът между ARCore и ARKit зависи от целевата платформа и изискванията за точност.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също