Využití ARKit ve vývoji iOS aplikací | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Využití ARKit při vývoji iOS augmented reality aplikací

Využití ARKit při vývoji iOS augmented reality aplikací

Kam směřuje technologie AR? Podívej se na příklady i preview rozšířené reality

ARKit od Apple představuje revoluční platformu pro vytváření rozšířené reality (AR) na iOS zařízeních, jako jsou iPhone a iPad. Tato technologie umožňuje vývojářům vytvářet pohlcující a interaktivní AR zážitky, které mohou proměnit způsob, jakým uživatelé vnímají svět kolem sebe prostřednictvím digitálního obsahu překrývajícího se s reálným světem. ARKit využívá pokročilé kamery, procesory a senzory integrované v zařízeních Apple k detekci povrchů, odhadu světla a umisťování virtuálních objektů v reálném prostředí s vysokou přesností a realističností.

Díky ARKitu mohou vývojáři snadno přidávat realistické virtuální objekty do reálného světa, což otevírá dveře pro řadu aplikací, od vzdělávacích a zábavních aplikací až po aplikace pro interiérový design a e-commerce. 

ARKit také podporuje vytváření sdílených AR zážitků, umožňující uživatelům interagovat s AR obsahem ve stejném prostoru současně.

Základy ARKit

Co je to ARKit a jak funguje

ARKit je framework vyvinutý společností Apple, který umožňuje vývojářům snadno vytvářet sofistikované a realistické aplikace rozšířené reality (AR) pro iOS. Klíčovou vlastností ARKitu je jeho schopnost kombinovat digitální virtuální objekty s reálným světem prostřednictvím kamery iOS zařízení. ARKit využívá Visual Inertial Odometry (VIO) k kombinaci dat z kamery a CoreMotion senzorů, což umožňuje přesné sledování polohy světa okolo sebe bez nutnosti externího sledování. Díky pokročilým algoritmům pro detekci ploch a odhad osvětlení mohou vývojáři vytvářet aplikace, ve kterých se virtuální objekty zdají být skutečně umístěné v reálném světě.

ARKit 2 a novější verze přinesly vylepšení, jako je detekce obličeje, sledování pohybu, sdílené AR zážitky a objektová detekce, které otevírají nové možnosti pro interaktivní hry, vzdělávací aplikace, návrh interiérů a mnoho dalších aplikací. S ARKitem můžeme vytvářet aplikace, které umožňují uživatelům vizualizovat virtuální nábytek ve svých domovech, zkoušet oblečení nebo kosmetiku pomocí AR, nebo se učit novým dovednostem s interaktivními tutoriály.

Požadavky na hardware a software

Pro vývoj a spuštění aplikací využívajících ARKit jsou potřeba konkrétní hardwarové a softwarové požadavky. Na hardwarové úrovni ARKit vyžaduje zařízení s procesorem A9 nebo novějším, což zahrnuje iPhone 6s a novější, všechny modely iPad Pro a iPad (5. generace) a novější. Tato zařízení mají dostatečný výpočetní výkon a pokročilé kamery potřebné pro práci s ARKit.

Na straně softwaru ARKit vyžaduje iOS 11 nebo novější, což umožňuje využívat nejnovější funkce a vylepšení frameworku. S každou novou aktualizací iOS a ARKitu přichází Apple s dalšími vylepšeními a funkcemi, které rozšiřují možnosti vývoje AR aplikací. Vývojáři by měli vždy cílit na nejnovější verzi ARKitu a iOS, aby mohli plně využít dostupných funkcí a zajištění nejlepšího výkonu a uživatelské zkušenosti svých AR aplikací.

Pokud máš zařízení od Apple, můžeš se na ukázku takové rozšířené reality podívat!
Podívej se na preview AR s Apple Quick Look

Začínáme s ARKit

Nastavení vývojového prostředí: Jak připravit Xcode a iPhone pro vývoj AR aplikací

Pro začátek s vývojem AR aplikací s využitím ARKitu je nezbytné mít nainstalovaný nejnovější Xcode na macOS. Xcode je integrované vývojové prostředí (IDE) od Apple, které poskytuje vše potřebné pro vývoj iOS aplikací, včetně podpory pro ARKit. Ujisti se, že máš nainstalovanou nejnovější verzi Xcode z Mac App Store, což zajišťuje kompatibilitu s nejnovějšími verzemi ARKitu a iOS.

Po instalaci Xcode je dalším krokem příprava iOS zařízení. Aby bylo možné testovat AR aplikace, je nutné mít zařízení s iOS 11 nebo novějším a s čipem A9 nebo lepším. Zařízení připoj k Macu pomocí kabelu a v Xcode přejdi do sekce "Devices and Simulators" pro konfiguraci zařízení pro vývoj.

Následně otevři Xcode a vytvoř nový projekt. Vyber šablonu aplikace pro iOS a jako framework zvol "Augmented Reality App", což poskytne přednastavenou šablonu s ARKitem a SceneKitem nebo SpriteKitem, dle volby pro 3D nebo 2D obsah.

První ARKit aplikace: Krok za krokem vytvoření jednoduché AR aplikace

Vytvoření nového projektu

Po výběru šablony "Augmented Reality App" pojmenuj projekt a zvol si, zda chceš pracovat s SceneKit pro 3D grafiku nebo s SpriteKit pro 2D. Xcode automaticky nastaví projekt s přednastaveným ARSCNView (pro SceneKit) nebo ARSKView (pro SpriteKit), což jsou zobrazení, která slouží jako plátno pro AR scény.

Přidání ARSCNView do aplikace

Pokud jsi se rozhodl*a vytvořit aplikaci s vlastním UI a potřebuješ přidat ARSCNView manuálně, můžeš tak učinit přidáním UIView do storyboardu a změnou jeho třídy na ARSCNView v Inspektor panelu Identity. Nezapomeň také přidat IBOutlet do ViewControlleru, abys mohl*a s tímto zobrazením programově pracovat.

Spuštění AR session

Pro aktivaci AR funkcionality ve aplikaci je potřeba nastavit a spustit AR session v ARSCNView. Toho dosáhneš inicializací ARWorldTrackingConfiguration, což je konfigurace, která umožňuje sledování polohy a orientace zařízení ve světě, a aktivací této konfigurace na AR session.

override func viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(animated)

    

    // Vytvoření nové session konfigurace

    let configuration = ARWorldTrackingConfiguration()

    configuration.planeDetection = .horizontal

    

    // Spuštění session s danou konfigurací

    sceneView.session.run(configuration)

}

Tento kód spustí AR session, která detekuje horizontální roviny v prostředí a připraví aplikaci na umístění 3D objektů do reálného světa. S tímto základem můžeš začít přidávat virtuální objekty do scény a interagovat s reálným světem prostřednictvím rozšířené reality.

Klíčové komponenty ARKit

Understanding SceneKit: Práce s 3D objekty v ARKit

SceneKit je výkonný 3D grafický framework, který je součástí ekosystému iOS a umožňuje vývojářům snadno vytvářet komplexní 3D scény a grafiku pro aplikace. V kontextu ARKitu se SceneKit používá k vytváření, renderování a manipulaci s 3D objekty v rozšířené realitě. Díky integraci s ARKit mohou vývojáři využívat pokročilé funkce SceneKitu, jako je fyzika, osvětlení nebo animace, pro vytvoření realistických AR zážitků.

Práce s 3D objekty v SceneKitu začíná definicí geometrie objektu, materiálů a textur, které určují vzhled objektu. SceneKit podporuje širokou škálu standardních geometrií, jako jsou koule, válce nebo kostky, ale také umožňuje importovat složité 3D modely ve formátech, jako je .dae (Collada) nebo .usdz (USDZ), což je formát optimalizovaný pro AR aplikace.

Příklad kódu: Vytvoření jednoduchého 3D objektu v SceneKitu

// Vytvoření koule s poloměrem 0.1 metru

let sphereGeometry = SCNSphere(radius: 0.1)

// Vytvoření materiálu a nastavení barvy

let material = SCNMaterial()

material.diffuse.contents = UIColor.blue

sphereGeometry.materials = [material]

// Vytvoření uzlu s definovanou geometrií

let sphereNode = SCNNode(geometry: sphereGeometry)

// Nastavení pozice uzlu ve scéně

sphereNode.position = SCNVector3(x: 0, y: 0, z: -0.5)

// Přidání uzlu do kořenového uzlu scény

sceneView.scene.rootNode.addChildNode(sphereNode)

Plane Detection: Jak ARKit detekuje roviny a pracuje s nimi

Detekce rovin je jednou z klíčových funkcí ARKitu, která umožňuje aplikacím rozpoznat horizontální a vertikální plochy v reálném světě, jako jsou podlahy, stoly nebo stěny. Tato funkce je základem pro umisťování 3D objektů v reálných prostorách, protože poskytuje informace o rovinách, na kterých mohou virtuální objekty "stát" nebo "viset".

Když ARKit detekuje rovinu, vytvoří ARPlaneAnchor objekt, který obsahuje informace o poloze a rozměrech roviny. Vývojáři mohou tyto informace využít k přesnému umístění objektů ve scéně.

Light Estimation: Adaptace osvětlení virtuálních objektů podle reálného prostředí

Adaptace osvětlení je další pokročilou funkcí ARKitu, která zvyšuje realismus AR zážitků tím, že umožňuje virtuálním objektům reagovat na skutečné osvětlení v prostředí. ARKit neustále odhaduje množství světla dostupného v prostředí a jeho směr, což vývojářům umožňuje přizpůsobit osvětlení scény tak, aby odpovídalo reálnému světlu.

Tímto způsobem mohou vývojáři zajistit, že stíny a odlesky na virtuálních objektech vypadají přirozeně a konzistentně s okolním prostředím, což výrazně přispívá k ponoření uživatele do AR zážitku.

// Aktivace odhadu osvětlení

let configuration = ARWorldTrackingConfiguration()

configuration.isLightEstimationEnabled = true

sceneView.session.run(configuration)

Vývojáři mohou tyto informace využít k dynamickému přizpůsobení vlastností světla ve scéně, jako je intenzita nebo barva, na základě odhadů osvětlení poskytnutých ARKit.

Tyto klíčové komponenty ARKitu - práce s 3D objekty pomocí SceneKitu, detekce rovin a adaptace osvětlení - jsou základními stavebními kameny pro vytváření působivých a realistických AR aplikací. S těmito nástroji mohou vývojáři vytvářet zážitky, které překlenou propast mezi virtuálním a reálným světem, poskytují uživatelům nové způsoby, jak interagovat s digitálním obsahem.

Pokročilé techniky

Interakce s 3D objekty: Jak manipulovat s objekty v AR prostředí

Manipulace s 3D objekty v AR prostředí je klíčová pro vytváření interaktivních a pohlcujících aplikací. ARKit poskytuje rozhraní pro detekci dotyků a interakci s objekty, což umožňuje uživatelům posouvat, otáčet nebo měnit velikost virtuálních objektů, jako by byly součástí reálného světa. Tato interaktivita se dosahuje kombinací dotykových událostí z UIKitu a transformací objektů v SceneKitu nebo SpriteKitu.

Pro manipulaci s objektem můžeš například použít gesta, jako je štípnutí pro změnu velikosti nebo tažení pro posunutí. Při detekci gesta můžeš upravit vlastnosti SCNNode přidružené k objektu, což změní jeho pozici, velikost nebo orientaci ve scéně.

Příklad kódu: Posunutí 3D objektu v AR

@objc func handlePan(_ gesture: UIPanGestureRecognizer) {

    let location = gesture.location(in: sceneView)

    let hitTestResults = sceneView.hitTest(location, options: nil)

    

    if let hitTestResult = hitTestResults.first, let nodeToMove = hitTestResult.node {

        let translation = gesture.translation(in: sceneView)

        let xTranslation = Float(translation.x) * 0.001 // Přepočet na metry

        let yTranslation = Float(translation.y) * 0.001 // Přepočet na metry

        

        nodeToMove.localTranslate(by: SCNVector3(xTranslation, 0, yTranslation))

    }

}

Persistence a obnovení AR scény: Ukládání a načítání stavu AR scény

Udržování stavu AR scény mezi jednotlivými spuštěními aplikace je důležité pro aplikace, které vyžadují, aby uživatelé mohli navázat na předchozí práci. ARKit umožňuje serializaci a deserializaci ARWorldMap, což je objekt, který obsahuje informace o detekovaných rovinách a pozici objektů v prostoru. Uložením ARWorldMap můžeš později obnovit stav AR scény s přesnými polohami objektů a rovinami.

Příklad kódu: Uložení ARWorldMap

func saveWorldMap() {

    sceneView.session.getCurrentWorldMap { worldMap, error in

        guard let map = worldMap else { return }

        // Serializace ARWorldMap do dat

        let worldMapData = try? NSKeyedArchiver.archivedData(withRootObject: map, requiringSecureCoding: true)

        // Uložení dat do souboru nebo jiného úložiště

    }

}

Rozšířené příklady využití

Pokročilé aplikace využívající ARKit rozšiřují možnosti interakce s uživateli a prostředím. Příkladem může být aplikace pro virtuální zkoušení oblečení, kde ARKit a strojové učení spolupracují na analýze obrazu uživatele a umístění virtuálního oblečení na jeho tělo v reálném čase. Další aplikace může zahrnovat návrh interiéru, kde uživatelé mohou vizualizovat, jak budou různé kusy nábytku vypadat v jejich domově, s možností měnit barvy, textury a rozmístění objektů.

Tyto případy ukazují, jak ARKit může otevřít nové možnosti pro různé obory od módy přes vzdělávání až po maloobchod, poskytující uživatelům unikátní a pohlcující zážitky. Rozvoj AR technologií a jejich aplikace ve vývoji iOS aplikací neustále posouvá hranice toho, co je možné, a nabízí vývojářům a firmám nové způsoby, jak zapojit a zaujmout své publikum.

Nejlepší praktiky a tipy

Jak zvýšit výkon a snížit spotřebu energie AR aplikace

Výkon a efektivita jsou klíčové pro vytváření plynulých a reaktivních AR aplikací. ARKit aplikace mohou být náročné na systémové zdroje, což může vést k rychlému vybíjení baterie a zahřívání zařízení. Zde jsou některé tipy, jak optimalizovat výkon a energetickou efektivitu AR aplikace:

  • Minimalizuj počet polygonů: Složité 3D modely s vysokým počtem polygonů mohou zpomalit výkon. Používej modely s nižším počtem polygonů nebo použij techniky jako je Level of Detail (LOD), které dynamicky upravují složitost modelů na základě jejich velikosti na obrazovce.
  • Optimalizuj materiály a textury: Vysoké rozlišení textur a složité shaderové efekty mohou zatěžovat GPU. Používej komprimované textury a jednodušší shadery, kde je to možné, a využij možnosti kešování materiálů.
  • Efektivní detekce rovin: Při použití detekce rovin omez sledování pouze na potřebné typy rovin (horizontální nebo vertikální) a v případě potřeby omez velikost detekované oblasti.
  • Omezení sledování obličeje: Sledování obličeje může být zdrojově náročné. Pokud aplikace nepotřebuje neustálé aktualizace, zvaž snížení frekvence aktualizací nebo vypnutí sledování, když není potřeba.
  • Správa AR session: Spouštěj AR session pouze tehdy, když je to nutné, a pozastavuj je nebo je ukonči, když AR funkce nejsou aktivně využívány.

Řešení běžných problémů: Jak překonat nejčastější výzvy při vývoji s ARKit

Vývoj AR aplikací může přinášet specifické výzvy, jako jsou problémy s přesností umístění, detekcí rovin nebo osvětlením. Zde jsou některé strategie, jak se vypořádat s běžnými problémy:

  • Nepřesné umístění objektů: Ujisti se, že AR scéna je správně kalibrovaná a že používáš správné jednotky pro umístění objektů. Používej funkce ARKitu pro kotvení objektů (ARAnchor), což pomáhá stabilizovat jejich polohu v reálném světě.
  • Nedostatečná detekce rovin: Zlepšit detekci rovin může pomoci osvětlení scény a kontrast mezi objekty. V situacích s nízkým osvětlením nebo na jednolitých površích může být detekce rovin obtížnější. V takových případech zvaž použití vizuálních indikátorů nebo instrukcí pro uživatele, jak zlepšit detekci.
  • Osvětlení: Pro realistické začlenění virtuálních objektů do reálného světa je klíčové správné osvětlení. Použij odhady osvětlení poskytnuté ARKitem k dynamickému upravování osvětlení scény, aby odpovídalo reálnému prostředí.

Vývoj aplikací s ARKit přináší nové možnosti pro tvorbu interaktivních a pohlcujících zážitků. S těmito tipy a nejlepšími praktikami můžeš zvýšit výkon aplikace, zlepšit uživatelskou zkušenost a překonat běžné výzvy spojené s vývojem AR.

ARKit od Apple představuje průlomovou technologii v oblasti rozšířené reality, která otevírá dveře k novým možnostem ve vývoji aplikací pro iOS. Díky pokročilým funkcím, jako je detekce rovin, sledování pohybu, odhad osvětlení a interakce s 3D objekty, mohou vývojáři vytvářet aplikace, které nabízejí pohlcující a interaktivní zážitky. Význam ARKitu pro budoucnost vývoje iOS aplikací je nepopiratelný, neboť technologie rozšířené reality se stává stále dostupnější a integrovanější do našich každodenních životů.

Autor: Jan Bílek

Více článků
A proč je užitečná pro každého, kdo pracuje s computer vision
Kde můžeš začít navazovat vztahy s lidmi se zájmem o IT?