Platforma ARCore — řešení Google pro rozšířenou realitu na Androidu, které využívá kameru a inerciální senzory chytrého telefonu ke sledování polohy v prostoru. Podle Google AR Developers, 2025 platforma podporuje Motion Tracking, Environmental Understanding a Light Estimation — tři základní technologie pro umisťování virtuálních objektů do reálného prostředí. Multiplatformní architektura umožňuje vývojářům vytvářet AR aplikace pro Android, iOS, Unity a Unreal Engine s jednotnou kódovou základnou.
Hlavní body
ARCore — je platforma rozšířené reality od Google, oznámená v roce 2018 jako nástupce Project Tango v lehčím a dostupnějším formátu. Na rozdíl od Tango, které vyžadovalo specializované hloubkové senzory, ARCore funguje na standardních chytrých telefonech s Androidem a používá pouze kameru a inerciální senzory (IMU).
ARCore využívá tři klíčové technologie: Motion Tracking pro sledování polohy zařízení, Environmental Understanding pro detekci horizontálních a vertikálních rovin a Light Estimation pro přizpůsobení osvětlení virtuálních objektů reálnému prostředí. Tyto tři technologie umožňují umisťovat AR objekty, které vypadají přirozeně na jakémkoli povrchu.
Podle Google I/O 2024 je ARCore podporován na více než 1 miliardě Android zařízení, včetně smartphonů Samsung, Xiaomi, Huawei, OnePlus, Google Pixel a dalších. Platforma je integrována s Google Play Services for AR, což umožňuje aktualizovat ARCore prostřednictvím Google Play Store nezávisle na verzi Androidu.
Během šesti verzí ARCore prošel významným vývojem: ARCore 1.0 — základní sledování a rozpoznávání rovin; ARCore 1.2 — vertikální roviny a Augmented Images; ARCore 1.7 — Cloud Anchors pro víc-uživatelské relace; ARCore 1.10 — Augmented Faces pro sledování výrazů obličeje.
ARCore 1.20+ zahrnuje Scene Semantic Understanding — rozpoznávání kategorií objektů (podlaha, strop, zeď, nábytek, rostlina, dveře) pomocí ML modelu TensorFlow Lite na zařízení. Street View Geometry API umožňuje používat hloubkové mapy Google Street View pro AR navigaci venku.
// Inicializace ARCore relace
val session = Session(context)
val config = Config(session)
config.lightEstimationMode =
Config.LightEstimationMode.ENVIRONMENTAL_HDR
config.planeFindingMode =
Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
session.configure(config)
// Zpracování snímku
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
Plane::class.java
)
ARCore používá hybridní přístup: IMU (inerciální měřicí jednotka) předpovídá polohu zařízení s vysokou frekvencí (až 1000 Hz) a vizuální odometrie koriguje chyby na základě analýzy charakteristických bodů z kamery s frekvencí 30–60 Hz. Tento přístup zajišťuje přesnost sledování přibližně 1–2 centimetry ve stacionárních podmínkách.
Proces Environmental Understanding funguje ve třech fázích: nejprve ARCore najde charakteristické body (feature points) v obraze z kamery, poté identifikuje shluky bodů ležících na stejné rovině a aproximuje je do polygonu. Po rozpoznání roviny ARCore vytvoří objekt Trackable typu Plane, který se aktualizuje s příchodem nových snímků.
Podle Google ARCore určuje rovinu o velikosti 10x10 centimetrů na vzdálenost až 1 metr od kamery. Pro středně velké místnosti (místnost 20 m²) trvá úplné skenování rovin přibližně 2–4 sekundy. Při použití Depth API s podporou ToF senzoru se přesnost rozpoznávání zvyšuje o 40%.
Depth API — technologie ARCore, která vytváří hloubkovou mapu scény na základě stereoskopické analýzy obrazu z kamery. Na zařízeních se senzorem ToF (Time-of-Flight) je hloubková mapa získána okamžitě s přesností až 2 cm. Na zařízeních bez hloubkového senzoru Depth API využívá strojové učení k odhadu hloubky z jednoho snímku, což poskytuje přesnost přibližně 10 cm.
Scene Mesh — trojrozměrná síť prostředí, kterou ARCore vytváří v reálném čase. Síť se používá pro fyziku kolizí, okluzi virtuálních objektů a aplikaci stínů. Scene Mesh je k dispozici na zařízeních s OpenGL ES 3.1 a podporou Depth API, zahrnuje až 500 tisíc polygonů na snímek.
// Získání hloubkové mapy
val depthImage = frame.acquireDepthImage16Bits()
// Umístění objektu na rozpoznanou rovinu
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()
}
}
Ačkoli ARCore a ARKit řeší stejné úkoly — sledování polohy, rozpoznávání rovin a hodnocení osvětlení — jejich přístupy a ekosystémy se liší. ARCore upřednostňuje multiplatformnost a kompatibilitu, zatímco ARKit využívá hlubokou integraci s hardwarem Apple.
Klíčové rozdíly: ARCore funguje na Androidu a iOS přes ARCore SDK, ARKit — pouze na iOS. ARCore používá Cloud Anchors pro synchronizaci přes Firebase, ARKit — ARWorldMap pro přímou výměnu mezi zařízeními. ARCore s Depth API podporuje ToF senzory, ARKit s LiDAR — laserové skenování s přesností až 3 cm.
Podle srovnávacích testů Google 2024 je přesnost sledování ARCore na zařízeních s gyroskopem a ToF senzorem srovnatelná s ARKit na iPhone s LiDAR — chyba nepřesahuje 2 cm na vzdálenost 2 metrů. Na zařízeních bez ToF ARCore zaostává za ARKit v rychlosti inicializace: 3 sekundy oproti 0,5 sekundy.
Výběr mezi ARCore a ARKit závisí na cílové skupině: pokud je aplikace určena pouze pro iOS — ARKit poskytuje lepší výkon a přístup k exkluzivním funkcím LiDAR. Pokud je vyžadována podpora obou platforem — ARCore s ARCore iOS SDK umožňuje používat jednotnou kódovou základnu s minimálními rozdíly platforem, i když se ztrátou některých hardwarových schopností každé platformy.
| Vlastnost | ARCore | ARKit |
|---|---|---|
| Platforma | Android + iOS + Unity/Unreal | pouze iOS |
| Hloubkový senzor | ToF (volitelně) | LiDAR (modely Pro) |
| Synchronizace | Cloud Anchors (Firebase) | ARWorldMap (Multipeer) |
| Sledování obličeje | Augmented Faces | Face Tracking (TrueDepth) |
| Přesnost VIO | 1–3 cm | 0,5–1 cm |
Integrace ARCore začíná přidáním závislosti Google Play Services for AR do build.gradle: com.google.ar:core. Aplikace by měla zkontrolovat dostupnost ARCore na zařízení pomocí ArCoreApk.checkAvailability() — pokud ARCore není nainstalován, navrhnout uživateli instalaci z Google Play Store.
Základní projekt ARCore zahrnuje: vytvoření Session a Config, konfiguraci SurfaceView pro zobrazení kamery, spuštění relace pomocí session.resume() a zpracování snímků pomocí session.update(). Pro vykreslování 3D objektů se používá Sceneform SDK (knihovna Google založená na Filament) nebo Unity/Unreal pro složité scény.
Google doporučuje Sceneform pro Kotlin aplikace — poskytuje hotové komponenty: ModelRenderable pro načítání 3D modelů (OBJ, glTF, FBX), ViewRenderable pro vložení Android View do AR scény a MotionEvent pro zpracování dotyků. Sceneform automaticky spravuje životní cyklus AR relace a uvolňování zdrojů.
ARCore může ztratit sledování při nedostatečném osvětlení, jednotných površích nebo rychlých pohybech zařízení. Stav sledování je k dispozici přes frame.getTrackingState() — hodnoty TRACKING, PAUSED a STOPPED. Při přechodu do PAUSED se doporučuje pozastavit vykreslování a zobrazit uživateli doporučení: „Pohybujte zařízením pomaleji” nebo „Přejděte na více osvětlené místo”.
Pro automatické obnovení po chybě ARCore podporuje relokalizaci na základě uložené mapy charakteristických bodů. Vývojář může mapu uložit pomocí session.serialize() a obnovit pomocí session.deserialize() — to je užitečné pro dlouhodobé AR zážitky, kde se uživatel vrací do stejného fyzického prostoru. Obnovení mapy trvá 1–2 sekundy za předpokladu, že se prostředí významně nezměnilo.
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()
}
}
}
}
Často kladené dotazy
ARCore je podporován na více než 1 miliardě Android zařízení, včetně Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ a mnoha dalších. Kompletní seznam certifikovaných zařízení je zveřejněn na webu developers.google.com/ar/devices.
Základní funkce ARCore — Motion Tracking a Environmental Understanding — nevyžadují internet. Cloud Anchors a Augmented Images s cloudovými odkazy vyžadují připojení. Depth API a Scene Mesh fungují plně na zařízení bez připojení k síti.
Ano, ARCore lze použít přímo s OpenGL ES 3.1, s Unity nebo Unreal Engine. Sceneform je doporučenou volbou pro jednoduché projekty v Kotlinu, ale není povinný. Pro složité 3D scény s realistickou fyzikou je lepší použít herní enginy s podporou ARCore SDK.
ARCore je optimalizován pro vnitřní prostory s dostatečným osvětlením (100–500 luxů). Venku na ostrém slunci může přesnost sledování klesnout kvůli přeexponování kamery. Pro práci venku Google doporučuje používat Street View Geometry API, které poskytuje hloubkové mapy pro městské lokality.
Scene Viewer — je hotová komponenta UI Google pro prohlížení 3D modelů v AR bez psaní kódu, fungující přes WebXR. ARCore je plnohodnotné SDK pro vytváření vlastního AR zážitku s programovým řízením všech aspektů relace, sledování a vykreslování.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také