Framework ARKit — platforma rozšířené reality od Apple, která umožňuje vývojářům vytvářet AR aplikace pro iOS bez hlubokých znalostí počítačového vidění. Podle Apple ARKit Documentation, 2025 framework využívá Visual-Inertial Odometry pro přesné sledování polohy zařízení v prostoru bez externích markerů. Sémantické porozumění scéně umožňuje rozpoznávat horizontální a vertikální roviny, určovat osvětlení a umísťovat virtuální objekty v reálném prostředí.
Hlavní body
ARKit — framework rozšířené reality od Apple, oznámený na WWDC 2017 spolu s iOS 11. Spojuje možnosti kamery, M-série pohybového procesoru a neurálního engine A-čipů pro vytvoření pohlcujícího AR zážitku bez potřeby specializovaného hardwaru — stačí jen iPhone nebo iPad.
ARKit využívá technologii Visual-Inertial Odometry (VIO), která spojuje data z kamery a inerciálních senzorů Core Motion pro přesné sledování pohybu zařízení v prostoru. VIO umožňuje frameworku rozumět, kde se zařízení nachází vůči okolí, bez použití GPS nebo externích markerů.
Podle Apple WWDC 2024 je ARKit 6 podporován na zařízeních s čipem A12 a novějších (iPhone XS, iPad Pro 2018+). Počet AR aplikací v App Store přesáhl 15 tisíc a celková plocha rozpoznaných rovin ve všech AR sezeních přesahuje 100 miliard čtverečních metrů.
Během šesti verzí obdržel ARKit významná vylepšení: ARKit 1.0 (iOS 11) — základní sledování a rozpoznávání rovin; ARKit 2.0 — sdílená AR sezení přes ARWorldMap a detekce 3D objektů; ARKit 3.0 — sledování lidského těla, segmentace osob a současné přední a zadní kamery.
ARKit 4.0 představil LiDAR Scanner pro okamžité určení hloubky a neprůhlednosti objektů, stejně jako Location Anchor pro připojení AR obsahu k GPS souřadnicím. ARKit 6 přidal 4K video s HDR, Plane Estimation pomocí LiDARu a vylepšené zpracování okluze.
import ARKit
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
let arView = ARSCNView(frame: view.bounds)
arView.session.run(configuration)
arView.debugOptions = [.showFeaturePoints]
view.addSubview(arView)
ARKit funguje prostřednictvím cyklu AR sezení, které se spouští s konfigurací a nepřetržitě analyzuje video stream z kamery. Každý snímek framework vypočítává polohu zařízení (6 stupňů volnosti), aktualizuje mapu rozpoznaných rovin a koriguje polohu virtuálních objektů — vše s frekvencí 60 snímků za sekundu.
Proces VIO se skládá ze dvou paralelních proudů: algoritmus vizuální odometrie sleduje pohyb charakteristických bodů (feature points) mezi snímky a inerciální senzory Core Motion předpovídají pohyb v krátkých intervalech, když se kamera rychle pohybuje nebo je obraz rozmazaný. Kombinace dvou metod poskytuje přesnost sledování až 1 centimetr.
Podle Apple zpracovává ARKit až 500 charakteristických bodů na snímek a velikost mapy okolí (ARWorldMap) může dosáhnout průměru 100 metrů. Skenování okolí a budování mapy trvá přibližně 2-3 sekundy po spuštění sezení — po celou tuto dobu ARKit shromažďuje data z kamery a senzorů.
ARAnchor — klíčový objekt pro umísťování obsahu. Když ARKit rozpozná rovinu, vytvoří ARPlaneAnchor s určením polohy, velikosti a orientace povrchu. Vývojář reaguje na delegáta session(_:didAdd:) a umístí 3D objekt na místo detekce roviny prostřednictvím SceneKitu nebo RealityKitu.
Pro realizaci přetahování objektů se používá ARHitTestResult: při dotyku obrazovky se provádí hit-test skrze snímek ARKitu, který vrací bod průsečíku paprsku s rozpoznanými rovinami. Nalezený bod je převeden na ARAnchor a objekt je v této poloze fixován.
func renderer(
_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor
) {
guard let planeAnchor = anchor
as? ARPlaneAnchor else { return }
let boxNode = SCNNode(
geometry: SCNBox(
width: planeAnchor.extent.x,
height: 0.01,
length: planeAnchor.extent.z,
chamferRadius: 0
)
)
node.addChildNode(boxNode)
}
ARKit poskytuje sadu technologií, které činí rozšířenou realitu realistickou a funkční: sledování pohybu s 6 stupni volnosti, porozumění scéně prostřednictvím rozpoznávání rovin a hranic, odhad osvětlení pro správné vrhání stínů, okluze osob a reflexní povrchy na základě map okolí.
Motion Capture (ARKit 3+) — technologie sledování lidského těla v reálném čase kamerou. Umožňuje animovat postavy pohyby uživatele bez externích senzorů: rozpoznává se 18 kloubů s frekvencí 60 Hz. Používá se ve fitness aplikacích a pro prototypování animací.
Sdílená AR sezení (ARKit 2+) umožňují více zařízením vidět stejné virtuální objekty ve sdíleném prostoru. ARWorldMap ukládá mapu okolí, která je přenášena dalším zařízením přes síť. Apple uvádí příklad přesnosti synchronizace: dva iPhone 12 Pro v jedné místnosti vidí objekt s odchylkou ne větší než 2 centimetry.
LiDAR skener, nainstalovaný na iPhone 12 Pro a novějších, radikálně mění možnosti ARKitu. Namísto softwarového určování hloubky analýzou obrazů, LiDAR okamžitě poskytuje mapu hloubky s přesností až 3 centimetry v rozsahu až 5 metrů. To umožňuje ARKitu rozpoznávat roviny okamžitě, bez předchozího skenování kamerou.
Pomocí LiDARu může ARKit určit neprůhlednost objektů: virtuální objekt se může schovat za skutečnou židli nebo stůl. Kromě toho Scene Reconstruction staví 3D síť okolí v reálném čase — až 10 milionů polygonů na místnost, používanou pro simulaci fyziky srážek a realistické osvětlení.
// Konfigurace pro LiDAR
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// Detekce dotyku na rovině
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
let location = touches.first?.location(in: arView)
guard let hitPoint = location else { return }
let results = arView
.raycastQuery(
from: hitPoint,
allowing: .existingPlaneInfinite,
alignment: .horizontal
)
}
Integrace ARKitu začíná minimálními požadavky: Xcode 15+, iOS 17 SDK, zařízení s čipem A12 Bionic a novějším. Do Info.plist je třeba přidat klíč NSCameraUsageDescription — ARKit používá kameru pro sledování a zobrazení AR scény. Bez tohoto klíče aplikace skončí chybou při spuštění AR sezení.
Pro vykreslování obsahu iOS nabízí tři frameworky: SceneKit pro 3D grafiku střední úrovně složitosti, RealityKit pro fotorealistické vykreslování s PBR materiály a Metal pro maximální výkon. RealityKit — doporučená volba pro nové projekty, protože obsahuje vestavěnou podporu pro ARKit funkce, animaci a fyziku.
Podle Apple je průměrný čas integrace základní AR obrazovky do stávající aplikace — přibližně 2 hodiny pro zkušeného iOS vývojáře. Hlavní potíže vznikají při práci s překrýváním UI prvků na AR scéně a při zpracování přerušení AR sezení — hovorů, přepínání aplikací nebo ztráty sledování při slabém osvětlení.
ARKit může ztratit sledování v řadě situací: nedostatečné osvětlení (méně než 100 luxů), absence charakteristických bodů (jednobarevné stěny), rychlé pohyby kamery nebo zakrytí objektivu. Delegát ARSessionDelegate poskytuje metody pro zpracování těchto stavů — doporučuje se zobrazovat uživateli tipy: „Pohybujte zařízením pomaleji” nebo „Zapněte osvětlení”.
Pro obnovu po selhání ARKit automaticky spouští relokalizaci — snaží se přiřadit aktuální video stream k uložené mapě okolí. Pokud relokalizace není možná, sezení se restartuje s novou konfigurací. Doporučuje se ukládat ARWorldMap při opuštění aplikace pro rychlé obnovení AR scény při návratu.
class ARViewController: UIViewController {
let arView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.frameSemantics = .personSegmentation
arView.session.run(config)
}
func sessionWasInterrupted(
_ session: ARSession
) {
showAlert("Relace přerušena")
}
}
Často kladené otázky
ARKit funguje na zařízeních Apple s čipem A12 Bionic a novějších: iPhone XS, XR, 11, 12, 13, 14, 15, 16 a SE (2. a 3. generace), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+. Pro funkce LiDAR jsou vyžadovány iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max a iPad Pro 2020+.
Ano, ARKit lze použít přímo s Metalem, ale to vyžaduje napsání vlastního shaderu a vykreslování. SceneKit a RealityKit poskytují hotová řešení s integrací ARKitu na úrovni frameworku. Pro začátečníky je RealityKit optimální volbou, protože automaticky zpracovává funkce ARKitu.
ARKit automaticky vyhodnocuje osvětlení scény kamerou a poskytuje údaje o směru, intenzitě a barevné teplotě zdroje světla prostřednictvím AREnvironmentProbeAnchor. To umožňuje virtuálním objektům správně vrhat stíny a odrážet okolí, čímž vytváří realistické splynutí s reálným světem.
ARKit funguje pouze na iOS a používá Visual-Inertial Odometry pro sledování, zatímco ARCore od Google funguje na Androidu a používá vlastní Motion Tracking založený na IMU a kameře. ARKit má výhodu díky hardwarové integraci s čipy Apple a ARCore — multiplatformnost prostřednictvím Cloud Anchors.
Ano, ARKit je ideální pro AR hry. SceneKit a RealityKit podporují fyziku (SCNPhysicsBody, PhysicsSimulation), animaci, zvuk a částice. Známé příklady — Pokémon GO (používá vlastní engine s ARKitem), Angry Birds AR a Lego AR Studio. ARKit také podporuje multiplayerová sezení prostřednictvím ARWorldMap.
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é