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 — 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.
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.
// 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
)
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 — 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ę.
// 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()
}
}
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.
| Cecha | ARCore | ARKit |
|---|---|---|
| Platforma | Android + iOS + Unity/Unreal | tylko iOS |
| Czujnik głębi | ToF (opcjonalnie) | LiDAR (modele Pro) |
| Synchronizacja | Cloud Anchors (Firebase) | ARWorldMap (Multipeer) |
| Śledzenie twarzy | Augmented Faces | Face Tracking (TrueDepth) |
| Dokładność VIO | 1–3 cm | 0,5–1 cm |
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.
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.
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
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.
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ą.
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.
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.
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
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.
Przeczytaj również