ARCore: co to jest, możliwości i technologia rzeczywistości rozszerzonej

Autor: IT Sectr Opublikowano: 2026-03-25 Czas czytania: 8 min

Platforma ARCore — rozwiązanie Google do rzeczywistości rozszerzonej na Androida, wykorzystujące kamerę i czujniki inercyjne smartfona do śledzenia położenia w przestrzeni. Według Google AR Developers, 2025, platforma obsługuje Motion Tracking, Environmental Understanding i Light Estimation — trzy podstawowe technologie do umieszczania wirtualnych obiektów w rzeczywistym otoczeniu. Architektura wieloplatformowa pozwala programistom tworzyć aplikacje AR na Androida, iOS, Unity i Unreal Engine z jedną bazą kodu.

Najważniejsze

  • ARCore — platforma od Google do rzeczywistości rozszerzonej na Androida, przedstawiona w 2018 roku.
  • Motion Tracking — technologia śledzenia ruchu urządzenia oparta na IMU i analizie obrazu.
  • Environmental Understanding — rozpoznawanie płaszczyzn, granic i ukształtowania powierzchni.
  • Cloud Anchors — mechanizm synchronizacji obiektów AR między wieloma urządzeniami przez chmurę.
  • ARCore SDK dostępny dla Androida (Kotlin/Java), iOS, Unity i Unreal Engine.

Co to jest ARCore?

ARCore — to platforma rzeczywistości rozszerzonej od Google, ogłoszona w 2018 roku jako następca Project Tango w lżejszym i bardziej dostępnym formacie. W przeciwieństwie do Tango, który wymagał specjalistycznych czujników głębi, ARCore działa na standardowych smartfonach z Androidem, używając tylko kamery i czujników inercyjnych (IMU).

ARCore wykorzystuje trzy kluczowe technologie: Motion Tracking do śledzenia położenia urządzenia, Environmental Understanding do wykrywania poziomych i pionowych płaszczyzn oraz Light Estimation do dostosowywania oświetlenia wirtualnych obiektów do rzeczywistego otoczenia. Te trzy technologie pozwalają umieszczać obiekty AR, które wyglądają naturalnie na każdej powierzchni.

Według Google I/O 2024, ARCore jest obsługiwany na ponad 1 miliardzie urządzeń z Androidem, w tym smartfonach Samsung, Xiaomi, Huawei, OnePlus, Google Pixel i innych. Platforma jest zintegrowana z Google Play Services for AR, co pozwala aktualizować ARCore przez Google Play Store niezależnie od wersji Androida.

Ewolucja ARCore

Przez sześć wersji ARCore przeszedł znaczącą ewolucję: ARCore 1.0 — podstawowe śledzenie i rozpoznawanie płaszczyzn; ARCore 1.2 — pionowe płaszczyzny i Augmented Images; ARCore 1.7 — Cloud Anchors dla sesji wieloosobowych; ARCore 1.10 — Augmented Faces do śledzenia mimiki twarzy.

ARCore 1.20+ zawiera Scene Semantic Understanding — rozpoznawanie kategorii obiektów (podłoga, sufit, ściana, mebel, roślina, drzwi) przez model ML TensorFlow Lite na urządzeniu. Street View Geometry API umożliwia korzystanie z map głębi Google Street View do nawigacji AR na otwartym powietrzu.

kotlin
// Inicjalizacja sesji 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)

// Przetwarzanie klatki
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
    Plane::class.java
)

Jak działa ARCore

ARCore wykorzystuje podejście hybrydowe: IMU (inercyjny moduł pomiarowy) przewiduje położenie urządzenia z wysoką częstotliwością (do 1000 Hz), a odometria wizualna koryguje błędy na podstawie analizy charakterystycznych punktów z kamery z częstotliwością 30–60 Hz. To podejście zapewnia dokładność śledzenia około 1–2 centymetrów w warunkach stacjonarnych.

Proces Environmental Understanding działa w trzech etapach: najpierw ARCore znajduje punkty charakterystyczne (feature points) na obrazie z kamery, następnie określa skupiska punktów leżących na jednej płaszczyźnie i aproksymuje je w wielokąt. Po rozpoznaniu płaszczyzny ARCore tworzy obiekt Trackable typu Plane, który jest aktualizowany w miarę otrzymywania nowych klatek.

Według Google, ARCore określa płaszczyznę o wielkości od 10x10 centymetrów w odległości do 1 metra od kamery. Dla średnich pomieszczeń (pokój 20 m²) pełne skanowanie płaszczyzn zajmuje około 2–4 sekund. Przy użyciu Depth API z obsługą czujnika ToF dokładność rozpoznawania wzrasta o 40%.

Depth API i Scene Mesh

Depth API — technologia ARCore, która buduje mapę głębi sceny na podstawie analizy stereo obrazu z kamery. Na urządzeniach z czujnikiem ToF (Time-of-Flight) mapa głębi jest uzyskiwana natychmiastowo z dokładnością do 2 cm. Na urządzeniach bez czujnika głębi Depth API wykorzystuje uczenie maszynowe do oceny głębi z pojedynczej klatki, co daje dokładność około 10 cm.

Scene Mesh — trójwymiarowa siatka otoczenia, którą ARCore buduje w czasie rzeczywistym. Siatka jest używana do fizyki kolizji, okluzji wirtualnych obiektów i nakładania cieni. Scene Mesh jest dostępny na urządzeniach z OpenGL ES 3.1 i obsługą Depth API, obejmuje do 500 tysięcy wielokątów na klatkę.

kotlin
// Pobieranie mapy głębi
val depthImage = frame.acquireDepthImage16Bits()

// Umieszczanie obiektu na rozpoznanej płaszczyźnie
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 i ARKit: porównanie

Chociaż ARCore i ARKit rozwiązują te same zadania — śledzenie położenia, rozpoznawanie płaszczyzn i ocenę oświetlenia — ich podejścia i ekosystemy różnią się. ARCore stawia na wieloplatformowość i kompatybilność, podczas gdy ARKit wykorzystuje głęboką integrację ze sprzętem Apple.

Kluczowe różnice: ARCore działa na Androidzie i iOS przez ARCore SDK, ARKit — tylko na iOS. ARCore używa Cloud Anchors do synchronizacji przez Firebase, ARKit — ARWorldMap do bezpośredniej wymiany między urządzeniami. ARCore z Depth API obsługuje czujniki ToF, ARKit z LiDAR — skanowanie laserowe z dokładnością do 3 cm.

Według danych testów porównawczych Google 2024, dokładność śledzenia ARCore na urządzeniach z żyroskopem i czujnikiem ToF jest porównywalna z ARKit na iPhone z LiDAR — błąd nie przekracza 2 cm na odległości 2 metrów. Na urządzeniach bez ToF ARCore ustępuje ARKit pod względem szybkości inicjalizacji: 3 sekundy wobec 0,5 sekundy.

Wybór między ARCore a ARKit zależy od grupy docelowej: jeśli aplikacja jest przeznaczona tylko dla iOS — ARKit zapewnia lepszą wydajność i dostęp do ekskluzywnych funkcji LiDAR. Jeśli potrzebne jest wsparcie obu platform — ARCore z ARCore iOS SDK pozwala używać jednolitej bazy kodu z minimalnymi różnicami platformowymi, choć z utratą niektórych możliwości sprzętowych każdej platformy.

CechaARCoreARKit
PlatformaAndroid + iOS + Unity/Unrealtylko iOS
Czujnik głębiToF (opcjonalnie)LiDAR (modele Pro)
SynchronizacjaCloud Anchors (Firebase)ARWorldMap (Multipeer)
Śledzenie twarzyAugmented FacesFace Tracking (TrueDepth)
Dokładność VIO1–3 cm0,5–1 cm

Integracja ARCore w aplikacji

Integracja ARCore zaczyna się od dodania zależności Google Play Services for AR w build.gradle: com.google.ar:core. Aplikacja powinna sprawdzić dostępność ARCore na urządzeniu przez ArCoreApk.checkAvailability() — jeśli ARCore nie jest zainstalowany, zaproponować użytkownikowi instalację z Google Play Store.

Podstawowy projekt ARCore obejmuje: utworzenie Session i Config, skonfigurowanie SurfaceView do wyświetlania kamery, uruchomienie sesji przez session.resume() i przetwarzanie klatek przez session.update(). Do renderowania obiektów 3D używany jest Sceneform SDK (biblioteka Google oparta na Filament) lub Unity/Unreal dla złożonych scen.

Google zaleca Sceneform dla aplikacji Kotlin — zapewnia gotowe komponenty: ModelRenderable do ładowania modeli 3D (OBJ, glTF, FBX), ViewRenderable do osadzania widoku Androida w scenie AR oraz MotionEvent do obsługi dotknięć. Sceneform automatycznie zarządza cyklem życia sesji AR i zwalnianiem zasobów.

Obsługa błędów śledzenia

ARCore może tracić śledzenie przy niedostatecznym oświetleniu, jednolitych powierzchniach lub szybkich ruchach urządzenia. Stan śledzenia jest dostępny przez frame.getTrackingState() — wartości TRACKING, PAUSED i STOPPED. Przy przejściu w PAUSED zaleca się wstrzymanie renderowania i wyświetlenie użytkownikowi zaleceń: „Wolniej przesuwaj urządzenie” lub „Przejdź do bardziej oświetlonego miejsca”.

Do automatycznego przywracania po błędzie ARCore obsługuje relokalizację na podstawie zapisanej mapy punktów charakterystycznych. Deweloper może zapisać mapę przez session.serialize() i przywrócić przez session.deserialize() — jest to przydatne dla długotrwałych doświadczeń AR, gdzie użytkownik wraca do tej samej przestrzeni fizycznej. Przywrócenie mapy zajmuje 1–2 sekundy, pod warunkiem że otoczenie nie zmieniło się znacząco.

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()
            }
        }
    }
}

Często zadawane pytania

Jakie urządzenia obsługują ARCore?

ARCore jest obsługiwany na ponad 1 miliardzie urządzeń z Androidem, w tym Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ i wielu innych. Pełna lista certyfikowanych urządzeń jest opublikowana na stronie developers.google.com/ar/devices.

Czy do działania ARCore potrzebny jest internet?

Podstawowe funkcje ARCore — Motion Tracking i Environmental Understanding — nie wymagają internetu. Cloud Anchors i Augmented Images z linkami w chmurze wymagają połączenia. Depth API i Scene Mesh działają w pełni na urządzeniu bez połączenia z siecią.

Czy można tworzyć aplikacje AR bez Sceneform?

Tak, ARCore można używać z OpenGL ES 3.1 bezpośrednio, z Unity lub Unreal Engine. Sceneform to zalecana opcja dla prostych projektów w Kotlin, ale nie jest obowiązkowy. Do złożonych scen 3D z realistyczną fizyką lepiej używać silników gier z obsługą ARCore SDK.

Jak ARCore działa w pomieszczeniach i na zewnątrz?

ARCore jest zoptymalizowany do pomieszczeń z wystarczającym oświetleniem (100–500 luksów). Na zewnątrz w jasnym słońcu dokładność śledzenia może się obniżać z powodu prześwietlenia kamery. Do pracy na zewnątrz Google zaleca korzystanie z Street View Geometry API, które udostępnia mapy głębi dla lokalizacji miejskich.

Czym ARCore różni się od Scene Viewer?

Scene Viewer — to gotowy komponent UI Google do przeglądania modeli 3D w AR bez pisania kodu, działający przez WebXR. ARCore to pełnoprawne SDK do tworzenia niestandardowych doświadczeń AR z programowym sterowaniem wszystkimi aspektami sesji, śledzenia i renderowania.

Podsumowanie

  • ARCore — wieloplatformowa platforma AR od Google, działająca na Androidzie i iOS.
  • Motion Tracking wykorzystuje hybrydę IMU i odometrii wizualnej do precyzyjnego pozycjonowania.
  • Cloud Anchors zapewniają wieloosobowe sesje AR z synchronizacją przez Firebase.
  • Depth API buduje mapę głębi sceny — programowo lub przez czujnik ToF.
  • Sceneform — zalecane SDK do tworzenia aplikacji AR w Kotlin z minimalną ilością kodu.
  • Kompatybilność — ponad 1 miliard urządzeń z Androidem z certyfikacją ARCore.
  • Wybór między ARCore a ARKit zależy od platformy docelowej i wymagań dotyczących dokładności.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również