Zostavte rozšírenú realitu aplikácie pre Android pomocou Google ARCore

Autor: Laura McKinney
Dátum Stvorenia: 7 Lang L: none (month-011) 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
Zostavte rozšírenú realitu aplikácie pre Android pomocou Google ARCore - Aplikácie
Zostavte rozšírenú realitu aplikácie pre Android pomocou Google ARCore - Aplikácie

Obsah


Importovanie 3D modelov pomocou doplnku Sceneform

Práca s 3D modelmi si zvyčajne vyžaduje odborné znalosti, ale s vydaním doplnku Sceneform Google umožnila vykreslenie 3D modelov pomocou Java - a bez museli sa učiť OpenGL.

Doplnok Sceneform poskytuje rozhranie API na vysokej úrovni, ktoré môžete použiť na vytváranie Renderdables zo štandardných widgetov, tvarov alebo materiálov pre Android alebo z prostriedkov 3D, ako sú napríklad súbory .OBJ alebo .FBX.

V našom projekte použijeme doplnok Sceneform na import súboru .OBJ do aplikácie Android Studio. Vždy, keď importujete súbor pomocou aplikácie Sceneform, tento doplnok automaticky:

  • Konvertujte súbor diela na súbor .sfb. Toto je binárny formát optimalizovaný pre runtime (.sfb), ktorý sa pridal do súboru APK a potom sa načítal za behu. Tento súbor .sfb použijeme na vytvorenie Renderable, ktorá pozostáva z ôk, materiálov a textúr a dá sa umiestniť kdekoľvek v rozšírenej scéne.
  • Vytvorte súbor .sfa. Toto je súbor s popisom diel, čo je textový súbor obsahujúci popis súboru .sfb, ktorý je čitateľný pre človeka. V závislosti od modelu môžete zmeniť jeho vzhľad úpravou textu v súbore .sfa.


Nezabudnite, že v čase písania bol doplnok Sceneform stále vo verzii beta, takže pri používaní tohto doplnku sa môžu vyskytnúť chyby, chyby alebo iné podivné správanie.

Inštalácia doplnku Sceneform

Doplnok Sceneform vyžaduje Android Studio 3.1 alebo novší. Ak si nie ste istí, ktorú verziu aplikácie Android Studio používate, na paneli s nástrojmi vyberte možnosť „Android Studio> O aplikácii Android Studio“. Nasledujúce kontextové okno obsahuje niekoľko základných informácií o inštalácii aplikácie Android Studio vrátane čísla verzie.

Inštalácia doplnku Sceneform:

  • Ak používate počítač Mac, na paneli s nástrojmi Android Studio vyberte možnosť „Android Studio> Predvoľby ...“ a potom v ponuke na ľavej strane vyberte položku Doplnky. Ak používate počítač so systémom Windows, vyberte možnosť „Súbor> Nastavenia> Doplnky> Prehľadávať archívy“.
  • Vyhľadajte „Sceneform.“ Keď sa zobrazí „Google Sceneform Tools“, vyberte „Install“.
  • Po výzve reštartujte aplikáciu Android Studio a váš doplnok bude pripravený na použitie.


Sceneform UX a Java 8: Aktualizácia závislostí projektu

Začnime pridaním závislostí, ktoré budeme používať počas tohto projektu. Otvorte súbor build.gradle na úrovni modulu a pridajte knižnicu Sceneform UX, ktorá obsahuje arfragment, ktorý použijeme v našom rozložení:

závislosti {implementačný súborTree (adresár: libs, zahŕňajú:) implementácia androidx.appcompat: appcompat: 1.0.2 implementácia androidx.constraintlayout: constraintlayout: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 // Sceneform UX poskytuje zdroje UX, vrátane implementácie ArFragmentu // com.google.ar.sceneform.ux: sceneform-ux: 1.7.0 „implementácia“ com. android.support:appcompat-v7:28.0.0 "}

Sceneform používa jazykové konštrukty z jazyka Java 8, takže bude potrebné aktualizovať aj zdrojovú kompatibilitu nášho projektu a cieľovú kompatibilitu na jazyk Java 8:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetKompatibilita JavaVersion.VERSION_1_8}

Nakoniec musíme použiť doplnok Sceneform:

použite doplnok: com.google.ar.sceneform.plugin

Váš vyplnený súbor build.gradle by mal vyzerať asi takto:

použiť doplnok: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRpatner"} compComVentifikátorVýsledokVýsledokVýsledokVýsledokVýsledokVýsledokVýsledokVýsledokVýsledokVýsledok. JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} závislosti {implementačný súborTree (adresár: libs, zahŕňajú:) implementácia androidx.appcompat: appcompat: 1.0 .2 implementácia androidx.constraintlayout: constraintlayout: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 implementácia "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "implementation" com.android.support:appcompat-v7:28.0.0 "} použiť plugin: com.google.ar .sceneform.plugin

Vyžiadanie povolení pomocou ArFragmentu

Naša aplikácia použije kameru zariadenia na analýzu svojho okolia a polohovanie 3D modelov v reálnom svete. Aby naša aplikácia mohla pristupovať k fotoaparátu, vyžaduje povolenie od kamery, preto otvorte manifest projektu a pridajte nasledujúce:

Android 6.0 umožňoval používateľom udeľovať, zamietať a rušiť povolenia na základe jednotlivých povolení. Aj keď sa tým zlepšilo užívateľské prostredie, vývojári systému Android teraz musia za runtime manuálne požadovať povolenia a vybavovať reakciu používateľa. Dobrou správou je, že pri práci s programom Google ARCore je implementovaný proces žiadosti o povolenie kamery a spracovanie odpovede používateľa automaticky.

Komponent ArFragment automaticky pred vytvorením relácie AR skontroluje, či má vaša aplikácia povolenie na fotoaparát, a potom ju v prípade potreby požiada. Keďže v našej aplikácii budeme používať ArFragment, nemusíme písať žiadny kód, aby sme mohli požiadať o povolenie fotoaparátu.

AR Vyžadované alebo voliteľné?

Existujú dva typy aplikácií, ktoré používajú funkciu AR:

1. Vyžaduje sa AR

Ak sa vaša aplikácia spolieha na službu Google ARCore, aby vám poskytla dobrý dojem používateľa, musíte zaistiť, aby sa stiahla iba na zariadenia, ktoré podporujú ARCore. Ak označíte svoju aplikáciu ako „Vyžaduje sa AR“, zobrazí sa v obchode Google Play, iba ak zariadenie podporuje ARCore.

Od našej žiadosti robí vyžadujú ARCore, otvorte manifest a pridajte nasledujúce:

Existuje tiež možnosť, že vašu aplikáciu bude možné stiahnuť do zariadenia, ktoré teoreticky podporuje ARCore, ale v skutočnosti nemá nainštalované ARCore. Keď označíme našu aplikáciu ako „Vyžaduje sa AR“, Google Play automaticky stiahne a nainštaluje ARCore spolu s vašou aplikáciou, ak ešte nie je prítomná na cieľovom zariadení.

Nezabudnite, že aj keď je vaša aplikácia Android: vyžaduje = „true“, budete mať stále musíte skontrolovať, či je program ARCore prítomný za behu, pretože existuje pravdepodobnosť, že používateľ mohol odinštalovať program ARCore od prevzatia aplikácie alebo že jeho verzia programu ARCore je zastaraná.

Dobrou správou je, že používame ArFragment, ktorý pred vytvorením automaticky skontroluje, či je ARCore nainštalovaný a aktuálny. každý AR relácia - takže ešte raz, toto nemusíme implementovať manuálne.

2. AR Voliteľné

Ak vaša aplikácia obsahuje funkcie AR, ktoré sú pekné, ale nie sú nevyhnutné na zabezpečenie jej základných funkcií, môžete túto aplikáciu označiť ako „AR Optional“. Vaša aplikácia potom môže skontrolovať, či je služba Google ARCore prítomná za behu, a vypnúť jej Funkcie AR na zariadeniach, ktoré nepodporujú ARCore.

Ak vytvoríte aplikáciu „AR Optional“, potom ARCore áno nie byť nainštalovaný automaticky spolu s vašou aplikáciou, aj keď má zariadenie všetok hardvér a softvér potrebný na podporu ARCore. Vaša aplikácia „AR Optional“ bude potom musieť skontrolovať, či je ARCore prítomná a aktuálna, a podľa potreby si stiahnuť najnovšiu verziu.

Ak ARCore nie je pre vašu aplikáciu rozhodujúce, môžete do manifestu pridať nasledujúce:

Aj keď mám otvorený manifest, pridávam tiež systém Android: configChanges a android: screenOrientation, aby som zaistil, že MainActivity zvládne zmeny orientácie elegantne.

Po pridaní všetkého tohto do manifestu by mal dokončený súbor vyzerať asi takto:

Pridajte ArFragment do svojho rozloženia

Použijem ArFragment ARCore, pretože na začiatku každej relácie AR automaticky spracováva niekoľko kľúčových úloh ARCore. Najdôležitejšie je, že ArFragment skontroluje, či je v zariadení nainštalovaná kompatibilná verzia ARCore a či má aplikácia momentálne povolenie kamery.

Keď ArFragment overí, či zariadenie podporuje funkcie AR vašej aplikácie, vytvorí reláciu ARSceneView ARCore a prostredie vašej aplikácie je pripravené na použitie!

Fragment ArFragment môžete pridať do súboru rozloženia rovnako ako bežný fragment Android, takže otvorte súbor activity_main.xml a pridajte komponent „com.google.ar.sceneform.ux.ArFragment“.

Sťahovanie 3D modelov pomocou služby Poly spoločnosti Google

Existuje niekoľko rôznych spôsobov, ako môžete vytvoriť Renderables, ale v tomto článku budeme používať súbor 3D diel.

Sceneform podporuje 3D diela vo formátoch .OBJ, .glTF a .FBX, s animáciami alebo bez nich. Existuje veľa miest, kde môžete získať 3D modely v jednom z týchto podporovaných formátov, ale v tomto tutoriále budem používať súbor .OBJ stiahnutý z úložiska Poly spoločnosti Google.

Prejdite na webovú stránku Poly a stiahnite dielo, ktoré chcete použiť, vo formáte .OBJ (používam tento model T-Rex).

  • Rozbaľte priečinok, ktorý by mal obsahovať zdrojový súbor vášho modelu (.OBJ, .FBX alebo .glTF). V závislosti od modelu môže tento priečinok obsahovať aj niektoré závislosti modelu, napríklad súbory vo formátoch .mtl, .bin, .png alebo .jpeg.

Import 3D modelov do aplikácie Android Studio

Keď budete mať svoje dielo, musíte ho importovať do aplikácie Android Studio pomocou doplnku Sceneform. Toto je proces pozostávajúci z viacerých krokov, ktorý vyžaduje:

  • Vytvorte priečinok „sampledata“. Sampledata je nový typ priečinka pre údaje vzorových časov návrhu, ktoré nebudú zahrnuté do súboru APK, ale budú k dispozícii v editore Android Studio.
  • Presuňte pôvodný súbor .OBJ do priečinka „sampledata“.
  • Vykonajte import a prevod scény do súboru .OBJ, ktorý vygeneruje súbory .sfa a .sfb.

Aj keď sa to môže zdať jednoduchšie, nie presuňte súbor .OBJ priamo do adresára „res“ vo vašom projekte, pretože to zbytočne spôsobí zahrnutie modelu do súboru APK.

Projekty aplikácie Android Studio v predvolenom nastavení neobsahujú priečinok „sampledata“, takže ho budete musieť vytvoriť ručne:

  • Kliknutím pravým tlačidlom myši na priečinok „app“ vášho projektu.
  • Vyberte „Nový> Sample Data Directory“ a vytvorte priečinok s názvom „sampledata“.
  • Prejdite na súbory 3D modelu, ktoré ste stiahli predtým. Vyhľadajte zdrojový súbor diela (.OBJ, .FBX alebo .glTF) a potom ho presuňte myšou do adresára „sampledata“.
  • Skontrolujte, či má váš model nejaké závislosti (napríklad súbory vo formáte .mtl, .bin, .png alebo .jpeg). Ak niektorý z týchto súborov nájdete, presuňte ich do priečinka „sampledata“.
  • V aplikácii Android Studio kliknite na váš zdrojový súbor 3D modelu (.OBJ, .FBX alebo .glTF) a potom vyberte možnosť „Importovať scenár.“

  • Nasledujúce okno zobrazuje niektoré informácie o súboroch, ktoré program Sceneform vygeneruje, vrátane informácií o tom, kde sa výsledný súbor .sfa uloží do vášho projektu; Budem používať adresár „raw“.
  • Ak ste spokojní so zadanými informáciami, kliknite na tlačidlo Dokončiť.

Tento import vykoná niekoľko zmien vo vašom projekte. Ak otvoríte súbor build.gradle, uvidíte, že doplnok Sceneform bol pridaný ako závislosť od projektu:

závislosti {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // POZNÁMKA: Na tomto mieste neukladajte závislosti aplikácií; patria // do jednotlivých súborov build.gradle súborov}}

Otvorte súbor build.gradle na úrovni modulu a pre importovaný 3D model nájdete novú položku sceneform.asset ():

apply plugin: com.google.ar.sceneform.plugin // Cesta „Source Asset Path“, ktorú ste zadali pri importe // sceneform.asset (sampledata / dinosaur.obj, // „Cesta materiálu“, ktorú ste zadali pri importe // Predvolené , // Výstupná cesta „.sfa“, ktorú ste zadali pri importe // sampledata / dinosaur.sfa, // Výstupná cesta „.sfb“, ktorú ste zadali pri importe // src / main / asset / dinosaur)

Ak sa pozriete na priečinky „sampledata“ a „raw“, uvidíte, že obsahujú nové súbory .sfa a .sfb.

V novom nástroji Sceneform Viewer pre Android Studio si môžete zobraziť ukážku súboru .sfa:

  • Na paneli s ponukami systému Android Studio vyberte položku Zobraziť> Nástroje Windows> Prehliadač.
  • V ponuke naľavo vyberte váš súbor .sfa. Váš 3D model by sa teraz mal objaviť v okne prehliadača.

Zobrazte svoj 3D model

Našou ďalšou úlohou je vytvorenie relácie AR, ktorá rozumie jej prostrediu a umožňuje používateľovi umiestňovať 3D modely do rozšírenej scény.

Vyžaduje si to, aby sme urobili nasledovné:

1. Vytvorte členskú premennú ArFragment

ArFragment vykonáva veľkú časť úloh spojených s vytvorením relácie AR, takže tento fragment budeme odkazovať v celej triede MainActivity.

V nasledujúcom útržku vytváram členskú premennú pre ArFragment a potom ju inicializujem v metóde onCreate ():

súkromný ArFragment arCoreFragment; @Override chránené void onCreate (Bundle uloženéInstanceState) {super.onCreate (uloženéInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Nájdite fragment pomocou manažéra fragmentov // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Zostavte modelRenderable

Teraz musíme transformovať náš súbor .sfb do ModelRenderable, ktorý nakoniec vykreslí náš 3D objekt.

Tu vytváram ModelRenderable zo súboru .sfb res / raw / dinosaur môjho projektu:

súkromný modelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable) .exceptionually (throwable -> {Log.e ( TAG, „Nedá sa načítať vykresliteľný“); návrat null;}); }

3. Reagujte na vstup používateľa

ArFragment má zabudovanú podporu pre gestá klepnutia, ťahania, štipnutia a skrútenia.

V našej aplikácii používateľ pridá 3D model do lietadla ARCore tak, že na túto rovinu klepne.

Aby sme túto funkciu dosiahli, musíme zaregistrovať spätné volanie, ktoré sa vyvolá pri každom poklepaní na lietadlo:

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Rovina, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;}

4. Ukotvte svoj model

V tomto kroku sa chystáme načítať ArSceneView a pripojiť ho k AnchorNode, ktorý bude slúžiť ako nadradený uzol scény.

ArSceneView je zodpovedný za vykonávanie niekoľkých dôležitých úloh ARCore vrátane vykreslenia obrázkov z fotoaparátu zariadenia a za zobrazenie animácie Sceneform UX, ktorá ukazuje, ako by mal užívateľ držať a presúvať svoje zariadenie, aby mohol začať s AR. ArSceneView tiež zvýrazní všetky roviny, ktoré zistí, pripravené na to, aby užívateľ umiestnil svoje 3D modely do scény.

Komponent ARSceneView má k sebe pripojenú scénu, čo je dátová štruktúra typu rodič-dieťa, ktorá obsahuje všetky uzly, ktoré je potrebné vykresliť.

Začneme vytvorením uzla typu AnchorNode, ktorý bude fungovať ako nadradený uzol nášho ArSceneView.

Všetky kotviace uzly zostávajú v rovnakej skutočnej svetovej polohe, takže vytvorením kotviaceho uzla zabezpečujeme, aby naše 3D modely zostali na svojom mieste v rozšírenej scéne.

Vytvorme náš kotviaci uzol:

AnchorNode anchorNode = nový AnchorNode (kotva);

Potom môžeme načítať ArSceneView pomocou getArSceneView () a pripojiť ho k AnchorNode:

anchorNode.setParent (arCoreFragment.getArSceneView () getScene ().);

5. Pridajte podporu pre pohyb, zmenu mierky a rotáciu

Ďalej budem vytvárať uzol typu TransformableNode. TransformableNode je zodpovedný za presun, zmenu mierky a rotáciu uzlov na základe gest používateľa.

Po vytvorení transformovateľného uzla ho môžete pripojiť k aplikácii Renderable, ktorá modelu umožní meniť mierku a pohyb na základe interakcie používateľa. Nakoniec musíte prepojiť TransformableNode s AnchorNode vo vzťahu dieťa-rodič, ktorý zaisťuje TransformableNode. a Renderovateľné zostávajú pevné na svojom mieste v rozšírenej scéne.

TransformableNode transformableNode = nový TransformableNode (arCoreFragment.getTransformationSystem ()); // Pripojte transformableNode k anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Vyberte uzol // transformableNode.select (); }); }

Dokončená MainActivity

Po vykonaní všetkých vyššie uvedených skutočností by mala vaša MainActivity vyzerať asi takto:

import android.app.Activity; import android.app.ActivityManager; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.net.Uri; import android.os.Build; importovať android.os.Build.VERSION_CODES; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import androidx.annotation.RequiresApi; import com.google.ar.core.Anchor; import com.google.ar.core.HitResult; import com.google.ar.core.Plane; import com.google.ar.sceneform.AnchorNode; import com.google.ar.sceneform.rendering.ModelRenderable; naimportujte com.google.ar.sceneform.ux.ArFragment; import com.google.ar.sceneform.ux.TransformableNode; public class MainActivity rozširuje AppCompatActivity {private static final String TAG = MainActivity.class.getSimpleName (); súkromné ​​statické finále dvojité MIN_OPENGL_VERSION = 3,0; // Vytvorte členskú premennú pre ModelRenderable // súkromný ModelRenderable dinoRenderable; // Vytvorte členskú premennú pre ArFragment // private ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @Override chránené void onCreate (Bundle uloženéInstanceState) {super.onCreate (uloženéInstanceState); if (! checkDevice ((this))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Nájdite fragment pomocou manažéra fragmentov // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Zostavte ModelRenderable // ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable ). výnimočne (// Ak sa vyskytne chyba ... // hádzateľný -> {//... potom vytlačte nasledujúce do Logcat // Log.e (TAG, „Nedá sa načítať vykresliteľný“); návrat null;} ); } // Vypočujte si udalosti onTap // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Rovina, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Anchor anchor = hitResult.createAnchor (); // Zostavte a uzol typu AnchorNode // AnchorNode anchorNode = new AnchorNode (anchor); // Pripojte AnchorNode k scéne // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Vytvorte uzol typu TransformableNode // TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // Pripojte TransformableNode k AnchorNode // transformableNode.setParent (anchorNode); // Pripojte Renderable // transformableNode.setRenderable (dinoRenderable); // Nastavte uzol / / transformableNode.select ();}); } verejné statické boolean checkDevice (posledná aktivita) {// Ak zariadenie používa Android Marshmallow alebo staršie ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... Potom vytlačte nasledujúce Logcat // Log.e (TAG „Sceneform vyžaduje Android N alebo vyšší“); activity.finish (); návrat nepravdivý; } String openGlVersionString = ((ActivityManager) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Skontrolujte verziu OpenGL ES // .getGlEsVersion (); // Ak je v zariadení spustené niečo menej ako OpenGL ES 3.0 ... // ak (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//...tak vytlačte nasledujúce súbory do Logcat // Log.e (TAG, " Vyžaduje OpenGL ES 3.0 alebo vyšší "); activity.finish (); návrat nepravdivý; } návrat true; }}

Dokončený projekt si môžete stiahnuť z GitHubu.

Testovanie rozšírenej reality aplikácie Google ARCore

Teraz ste pripravení vyskúšať svoju aplikáciu na fyzickom podporovanom zariadení s Androidom. Ak nevlastníte zariadenie, ktoré podporuje ARCore, je možné otestovať svoju AR aplikáciu v emulátore Android (s trochou ďalšej konfigurácie, ktorej sa budeme venovať v nasledujúcej časti).

Testovanie projektu na a fyzický Zariadenie Android:

  • Nainštalujte svoju aplikáciu do cieľového zariadenia.
  • Po zobrazení výzvy povolte aplikácii prístup k fotoaparátu vášho zariadenia.
  • Ak sa zobrazí výzva na inštaláciu alebo aktualizáciu aplikácie ARCore, klepnite na „Pokračovať“ a potom dokončite dialógové okno, aby ste sa uistili, že používate najnovšiu a najlepšiu verziu ARCore.
  • Teraz by ste mali vidieť pohľad kamery, spolu s animáciou ruky, ktorá drží zariadenie. Nasmerujte fotoaparát na rovnú plochu a pohybujte zariadením krúživým pohybom, ako to dokazuje animácia. Po niekoľkých minútach by sa mala objaviť séria bodiek označujúcich, že bola zistená rovina.

  • Keď budete s pozíciou týchto bodov spokojní, dajte im poklep - váš 3D model by sa teraz mal objaviť na vami vybranej rovine!

  • Skúste fyzicky pohybovať po modeli; v závislosti od vášho okolia môžete byť schopní urobiť okolo 360 stupňov. Mali by ste tiež skontrolovať, či objekt vrhá tieň, ktorý je konzistentný so svetelnými zdrojmi v skutočnom svete.

Testovanie ARCore na virtuálnom zariadení Android

Na testovanie aplikácií ARCore vo virtuálnom zariadení Android (AVD) budete potrebovať Android Emulator verzie 27.2.9 alebo novšej. Musíte byť tiež prihlásení do obchodu Google Play na vašom AVD a mať povolený OpenGL ES 3.0 alebo vyšší.

Ak chcete skontrolovať, či je na vašom AVD aktuálne povolený OpenGL ES 3.0 alebo vyšší:

  • Spustite AVD ako zvyčajne.
  • Otvorte nové okno terminálu (Mac) alebo príkazový riadok (Windows).
  • Zmeňte adresár („cd“) tak, aby terminál / príkazový riadok ukazoval na umiestnenie programu „adb“ vášho Android SDK, napríklad môj príkaz vyzerá takto:

CD / Používatelia / jessicathornsby / Library / Android / sdk / platform-tools

  • Na klávesnici stlačte kláves „Enter“.
  • Skopírujte / prilepte nasledujúci príkaz do terminálu a stlačte kláves „Enter“:

./adb logcat | grep eglMakeCurrent

Ak terminál vráti hodnotu „ver 3 0“ alebo vyššiu, potom je OpenGL ES nakonfigurovaná správne. Ak terminál alebo príkazový riadok zobrazuje niečo skôr ako 3.0, musíte povoliť OpenGL ES 3.0:

  • Prepnite späť na AVD.
  • Nájdite prúžok tlačidiel „Rozšírené ovládanie“, ktoré plávajú vedľa emulátora Android, a potom vyberte „Nastavenia> Rozšírené“.
  • Prejdite na „OpenGL ES API level> Maximum Renderer (až do OpenGL ES 3.1).“
  • Reštartujte emulátor.

V okne Terminal / Command Prompt skopírujte / prilepte nasledujúci príkaz a stlačte kláves „Enter“.

./adb logcat | grep eglMakeCurrent

Teraz by ste mali dostať výsledok „ver 3 0“ alebo vyšší, čo znamená, že OpenGL ES je správne nakonfigurovaný.

Nakoniec skontrolujte, či váš AVD používa najnovšiu verziu ARCore:

  • Prejdite na stránku GitHub spoločnosti ARCore a stiahnite si najnovšie vydanie aplikácie ARCore pre emulátor. Napríklad v čase písania posledného vydania bolo „ARCore_1.7.0.x86_for_emulator.apk“
  • Presuňte súbor APK na bežiaci AVD.

Ak chcete vyskúšať svoj projekt na AVD, nainštalujte svoju aplikáciu a po zobrazení výzvy mu poskytnite prístup k „kamere“ AVD.

Teraz by ste mali vidieť simulovanú miestnosť z pohľadu kamery. Ak chcete otestovať svoju aplikáciu, pohybujte sa po tomto virtuálnom priestore, nájdite simulovanú rovnú plochu a kliknutím umiestnite na túto plochu model.

Virtuálnu kameru môžete posúvať po virtuálnej miestnosti stlačením a podržaním klávesov „Option“ (macOS) alebo „Alt“ (Linux alebo Windows) a následným použitím niektorej z nasledujúcich klávesových skratiek:

  • Pohybujte doľava alebo doprava. Stlačte tlačidlo A alebo D.
  • Posuňte sa nadol alebo nahor. Stlačte kláves Q alebo E.
  • Posúvajte sa dopredu alebo dozadu. Stlačte tlačidlo W alebo S.

Môžete sa tiež „pohybovať“ po virtuálnej scéne stlačením „Option“ alebo „Alt“ a potom pomocou myši. Na prvý pohľad sa to môže zdať trochu neohrabané, ale s praxou by ste mali byť schopní úspešne preskúmať virtuálny priestor. Keď nájdete simulovanú rovinu, kliknutím na biele bodky umiestnite svoj 3D model na tento povrch.

Zabalenie

V tomto článku sme vytvorili jednoduchú aplikáciu s rozšírenou realitou pomocou doplnkov ARCore a Sceneform.

Ak sa rozhodnete používať službu Google ARCore vo svojich vlastných projektoch, nezabudnite zdieľať svoje výtvory v komentároch nižšie!

Apple iPhone 11 vs súťaž Android

Monica Porter

V Júli 2024

A13 Bionic proceor zariadenia iPhone 11 však nemá dotatok energie. Kurz je, že čipová ada bude najlepšie v proceoroch Exyno 9820 a napdragon 855 v porovnávacích tetoch, aj keď všet...

print a jeho dopravcovia konkurenti trávili veľa z poledných dvoch rokov budovaním predpokladov na 5G. Teraz, keď je tu 5G, je ťažké určiť, či a realita zhoduje humbukom....

Odporúčame Vám