Luo laajennetun todellisuuden Android-sovellus Google ARCoren avulla

Kirjoittaja: Laura McKinney
Luomispäivä: 7 Huhtikuu 2021
Päivityspäivä: 1 Heinäkuu 2024
Anonim
Luo laajennetun todellisuuden Android-sovellus Google ARCoren avulla - Sovellukset
Luo laajennetun todellisuuden Android-sovellus Google ARCoren avulla - Sovellukset

Sisältö


3D-mallien tuominen Sceneform-laajennuksella

Yleensä 3D-mallien kanssa työskenteleminen vaatii erikoistunutta tietoa, mutta Sceneform-laajennuksen julkaisun myötä Google on mahdollistanut 3D-mallien esittämisen Java - ja ilman täytyy oppia OpenGL.

Sceneform-laajennus tarjoaa korkean tason sovellusliittymän, jonka avulla voit luoda renderoitavia tavallisista Android-widgetistä, muodoista tai materiaaleista tai 3D-hyödykkeistä, kuten .OBJ- tai .FBX-tiedostoista.

Projektissamme käytämme Sceneform-laajennusta .OBJ-tiedoston tuomiseen Android Studioan. Aina kun tuot tiedoston Sceneform-sovelluksella, tämä laajennus automaattisesti:

  • Muunna sisältötiedosto .sfb-tiedostoksi. Tämä on ajonaikaisesti optimoitu Sceneform-binaarimuoto (.sfb), joka lisätään APK: iin ja ladataan sitten suorituksen aikana. Käytämme tätä .sfb-tiedostoa luomiseen Renderable, joka koostuu silmistä, materiaaleista ja tekstuurista ja joka voidaan sijoittaa mihin tahansa laajennetun kohtauksen sisällä.
  • Luo .sfa-tiedosto. Tämä on omaisuuskuvaustiedosto, joka on tekstitiedosto, joka sisältää ihmisille luettavan kuvauksen .sfb-tiedostosta. Mallista riippuen saatat pystyä muuttamaan sen ulkonäköä muokkaamalla .sfa-tiedoston sisällä olevaa tekstiä.


Huomaa vain, että kirjoittamishetkellä Sceneform-laajennus oli edelleen beetaversio, joten saatat kohdata virheitä, virheitä tai muuta outoa käyttäytymistä tätä laajennusta käytettäessä.

Sceneform-laajennuksen asentaminen

Sceneform-laajennus vaatii Android Studio 3.1 tai uudemman. Jos et ole varma, mitä Android Studion versiota käytät, valitse työkaluriviltä “Android Studio> Tietoja Android Studiosta”. Seuraava ponnahdusikkuna sisältää joitain perustietoja Android Studio -asennuksesta, mukaan lukien sen versionumero.

Sceneform-laajennuksen asentaminen:

  • Jos käytät Mac-tietokonetta, valitse Android Studio -työkaluriviltä ”Android Studio> Asetukset…” ja valitse sitten vasemmasta valikosta ”Plugins”. Jos sinulla on Windows-tietokone, valitse sitten Tiedosto> Asetukset> Lisäosat> Selaa arkistoja.
  • Etsi ”Sceneform”. Kun ”Google Sceneform Tools” tulee näkyviin, valitse ”Install”.
  • Käynnistä Android Studio uudelleen, kun sitä pyydetään, ja laajennus on käyttövalmis.


Sceneform UX ja Java 8: Projektiriippuvuuksien päivittäminen

Aloitetaan lisäämällä riippuvuudet, joita käytämme koko tässä projektissa. Avaa moduulitason build.gradle-tiedostosi ja lisää Sceneform UX -kirjasto, joka sisältää ArFragmentin, jota käytämme asettelumme:

riippuvuudet {toteutustiedostoTree (oh: libs, sisältää:) toteutus androidx.appcompat: appcompat: 1.0.2 toteutus androidx.constraintlayout: rajoituksen esitys: 1.1.3 testImplementation junit: kesäkuu: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 // Sceneform UX tarjoaa UX-resursseja, mukaan lukien ArFragment // toteutus "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" implement "com. android.support:appcompat-v7:28.0.0 "}

Sceneform käyttää Java 8: n kielirakenteita, joten meidän on myös päivitettävä projektimme lähdeyhteensopivuus ja kohdeyhteensopivuus Java 8: een:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

Lopuksi meidän on käytettävä Sceneform-laajennusta:

käytä laajennusta: com.google.ar.sceneform.plugin

Valmiiden build.gradle-tiedostojesi pitäisi näyttää näiltä:

Käytä laajennusta: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.ReserventionCommissionSpace_Command_Complusion.Comprivation.Compresions JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} riippuvuudet {toteutustiedostoTree (johtaja: libs, include:) toteutus androidx.appcompat: appcompatpat: appcompat: appcompat .2 toteutus 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 implementation "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "implement" com.android.support:appcompat-v7:28.0.0 "} käytä laajennusta: com.google.ar .sceneform.plugin

Lupahakemusten hakeminen ArFragmentin avulla

Sovelluksemme käyttää laitteen kameraa analysoimaan sen ympäristöä ja sijoittamaan 3D-mallit todelliseen maailmaan. Ennen kuin sovelluksemme pääsee kameraan, se vaatii kameran luvan, joten avaa projektisi manifesti ja lisää seuraava:

Android 6.0 antoi käyttäjille mahdollisuuden myöntää, evätä ja peruuttaa luvat luvan perusteella. Vaikka tämä paransi käyttökokemusta, Android-kehittäjien on nyt pyydettävä käyttöoikeuksia manuaalisesti suorituksen aikana ja käsiteltävä käyttäjän vastauksia. Hyvä uutinen on, että Google ARCore -työkalua käytettäessä kameran luvan pyytämisprosessi ja käyttäjän vastauksen käsittely toteutetaan automaattisesti.

ArFragment-komponentti tarkistaa automaattisesti, onko sovelluksellasi kameran käyttöoikeudet, ja pyytää sitä tarvittaessa ennen AR-istunnon luomista. Koska käytämme ArFragment-sovellusta sovelluksessamme, meidän ei tarvitse kirjoittaa koodia kameran luvan pyytämiseen.

AR Pakollinen vai valinnainen?

AR-toiminnallisuutta käyttäviä sovelluksia on kahta tyyppiä:

1. AR vaaditaan

Jos sovelluksesi luottaa Google ARCoreen antaakseen hyvän käyttökokemuksen, sinun on varmistettava, että se ladataan vain vain laitteisiin, jotka tukevat ARCorea. Jos merkitset sovelluksesi "AR vaaditaan", se näkyy Google Play -kaupassa vain, jos laite tukee ARCorea.

Hakemuksestamme lähtien tekee vaatii ARCorea, avaa manifesti ja lisää seuraava:

On myös mahdollista, että sovelluksesi voidaan ladata laitteeseen, joka tukee ARCorea teoriassa, mutta jota ei oikeastaan ​​ole asennettuna ARCoreen. Kun merkitsemme sovellukseemme "AR vaaditaan", Google Play lataa ja asentaa ARCoren automaattisesti sovelluksesi rinnalle, jos sitä ei vielä ole kohdelaitteessa.

Huomaa vain, että vaikka sovelluksesi olisi android: välttämätön = ”totta” saat vielä on tarkistettava, että ARCore on läsnä ajon aikana, koska on mahdollista, että käyttäjä on poistanut ARCore-sovelluksen sovelluksen lataamisen jälkeen tai että hänen ARCore-versionsa on vanhentunut.

Hyvä uutinen on, että käytämme ArFragmenttia, joka tarkistaa automaattisesti, että ARCore on asennettu ja ajan tasalla ennen luomista kukin AR-istunto - joten jälleen kerran tämä on asia, jota meidän ei tarvitse toteuttaa manuaalisesti.

2. AR valinnainen

Jos sovelluksessasi on AR-ominaisuuksia, jotka ovat mukavia saada, mutta jotka eivät ole välttämättömiä sen ydintoimintojen toimittamiselle, voit merkitä tämän sovelluksen "AR-valinnaiseksi". Sovelluksesi voi sitten tarkistaa, onko Google ARCore käytössä suorituksen aikana, ja poistaa sen käytöstä AR-ominaisuudet laitteissa, jotka eivät tue ARCorea.

Jos luot ”AR Optional” -sovelluksen, ARCore lukee sen ei asennetaan automaattisesti sovelluksesi rinnalle, vaikka laitteessa olisi kaikki ARCoren tukemiseen tarvittavat laitteistot ja ohjelmistot. “AR valinnainen” -sovelluksesi on sitten tarkistettava, onko ARCore olemassa ja ajan tasalla, ja lataa uusin versio tarvittaessa.

Jos ARCore ei ole ratkaisevan tärkeä sovelluksellesi, voit lisätä manifestiin seuraavan:

Vaikka Manifest on auki, lisääyn myös android: configChanges ja android: screenOrientation, jotta MainActivity käsittelee suuntauksen muutokset sulavasti.

Kun olet lisännyt kaiken tämän Manifest-tiedostoon, valmis tiedoston pitäisi näyttää tällaiselta:

Lisää ArFragment asetteluosi

Käytän ARCoren ArFragmenttia, koska se käsittelee automaattisesti useita keskeisiä ARCore-tehtäviä jokaisen AR-istunnon alussa. ArFragment tarkistaa erityisesti, että laitteeseen on asennettu yhteensopiva ARCore-versio ja että sovelluksella on tällä hetkellä kameran käyttöoikeudet.

Kun ArFragment on todennut, että laite tukee sovelluksesi AR-ominaisuuksia, se luo ArSceneView ARCore -istunnon, ja sovelluksesi AR-kokemus on valmis menemään!

Voit lisätä ArFragment-fragmentin asettelutiedostoon, kuten tavalliseen Android-fragmenttiin, joten avaa activity_main.xml-tiedosto ja lisää ”com.google.ar.sceneform.ux.ArFragment” -komponentti.

Lataa 3D-malleja Googlen Poly -sovelluksen avulla

Voit luoda uudelleenkorjattavia kohteita useilla eri tavoilla, mutta tässä artikkelissa käytämme 3D-sisältötiedostoa.

Sceneform tukee 3D-sisältöä .OBJ-, .glTF- ja .FBX-muodossa, animaatioilla tai ilman. Siellä on paljon paikkoja, joissa voit hankkia 3D-malleja yhdessä näistä tuetuista muodoista, mutta tässä opetusohjelmassa käytän .OBJ-tiedostoa, joka on ladattu Googlen Poly-arkistosta.

Siirry Poly-verkkosivustoon ja lataa haluamasi sisältö .OBJ-muodossa (käytän tätä T-Rex-mallia).

  • Pura kansio, jonka tulisi sisältää mallisi lähdekooditiedosto (.OBJ, .FBX tai .glTF). Mallista riippuen, tämä kansio voi sisältää myös joitain malliriippuvuuksia, kuten .mtl-, .bin-, .png- tai .jpeg-muodossa olevia tiedostoja.

3D-mallien tuominen Android Studioon

Kun olet saanut sisältösi, sinun täytyy tuoda se Android Studioan Sceneform-laajennuksen avulla. Tämä on monivaiheinen prosessi, joka vaatii sinua:

  • Luo ”näytedata” -kansio. Sampledata on uusi kansiotyyppi suunnitellun ajan näytteen tiedoille, joita ei sisällytetä APK: eesi, mutta jotka ovat saatavilla Android Studio -editorissa.
  • Vedä ja pudota alkuperäinen .OBJ -sisältötiedosto “näytedata” -kansioon.
  • Suorita Sceneform-tuonti ja muuntaminen .OBJ-tiedostossa, joka tuottaa .sfa- ja .sfb-tiedostot.

Vaikka se saattaa tuntua selkeämmältä, älä vetämällä ja pudottamalla .OBJ-tiedosto suoraan projektin ”res” -hakemistoon, koska tämä aiheuttaa mallin sisällyttämisen tarpeettomasti APK-tiedostoon.

Android Studio -projektit eivät sisällä oletuksena ”näyttötietokansiota”, joten sinun on luotava se manuaalisesti:

  • Napsauta Control-napsauttamalla projektisi sovellus-kansiota.
  • Valitse ”Uusi> Sample Data Directory” ja luo kansio nimeltä “datadata”.
  • Siirry aiemmin lataamiin 3D-mallitiedostoihin. Etsi lähdetiedosto (.OBJ, .FBX tai .glTF) ja vedä ja pudota se sitten "näytedata" -hakemistoon.
  • Tarkista, onko mallillasi riippuvuuksia (kuten .mtl-, .bin-, .png- tai .jpeg-muodossa olevat tiedostot). Jos löydät jonkin näistä tiedostoista, vedä ja pudota ne “näytedata” -kansioon.
  • Napsauta Android Studiossa Control-osoittamalla 3D-mallilähteesi tiedostoa (.OBJ, .FBX tai .glTF) ja valitsemalla sitten Tuo kohtausmuodon omaisuus.

  • Seuraava ikkuna näyttää joitain tietoja tiedostoista, joita Sceneform aikoo tuottaa, mukaan lukien missä tuloksena oleva .sfa-tiedosto tallennetaan projektiisi; Aion käyttää ”raahaa” hakemistoa.
  • Kun olet tyytyväinen antamiisi tietoihin, napsauta Valmis.

Tämä tuonti tekee muutamia muutoksia projektiisi. Jos avaat build.gradle-tiedostosi, huomaat, että Sceneform-laajennus on lisätty projektiriippuvuudeksi:

riippuvuudet {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // HUOMAUTUS: Älä aseta sovellusriippuvuuksia tähän; ne kuuluvat // yksittäisen moduulin build.gradle-tiedostoihin}}

Avaa moduulitason build.gradle-tiedosto ja löydät uuden scenform.asset () -merkinnän tuodulle 3D-mallelle:

käytä laajennusta: com.google.ar.sceneform.plugin // Tuonnin aikana määrittämäsi "Source Asset Path" // sceneform.asset (esimerkkidata / dinosaur.obj, // tuonnin aikana määrittämäsi "Material Polku" // Oletusasetus , // Tuonnin aikana määrittämäsi ".sfa-lähtöpolku" // sampledata / dinosaur.sfa, // ".sfb-lähtöpolku", jonka määritit tuonnin aikana // src / main / resources / dinosaur)

Jos tarkastelet "näytedata" - ja "raa'ita" kansioita, huomaat, että ne sisältävät vastaavasti uusia .sfa- ja .sfb-tiedostoja.

Voit esikatsella .sfa-tiedostoa Android Studion uudessa Sceneform Viewer -sovelluksessa:

  • Valitse Android Studion valikkopalkista Näytä> Työkalut Windows> Viewer.
  • Valitse vasemmasta valikosta .sfa-tiedostosi. 3D-mallisi pitäisi näkyä nyt Viewer-ikkunassa.

Näytä 3D-mallisi

Seuraava tehtävämme on luoda AR-istunto, joka ymmärtää sen ympäristöä ja antaa käyttäjän asettaa 3D-mallit lisättyyn kohtaukseen.

Tämä edellyttää meiltä seuraavaa:

1. Luo ArFragment-jäsenmuuttuja

ArFragmentti suorittaa suuren osan AR-istunnon luomiseen osallistuvista raskaiden nostojen tehtävistä, joten viitamme tähän fragmenttiin koko MainActivity-luokan sisällä.

Luon seuraavassa katkelmassa ArFragment-jäsenmuuttujan ja alustan sen sitten onCreate () -menetelmällä:

yksityinen ArFragment arCoreFragment; @Ohota suojattu tyhjä onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Löydä fragmentti fragmenttihallintaa käyttämällä // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Luo malli, joka voidaan vaihtaa

Meidän on nyt muutettava .sfb-tiedostomme ModelRenderable-tiedostoksi, joka lopulta tekee 3D-objektimme.

Täällä luon mallinparannettavissa olevan projektin res / raw / dinosaur .sfb-tiedostosta:

yksityinen ModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (tämä, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable). Poikkeuksellisesti (heitettävä -> {Log.e ( TAG, "Ei ladattavissa sulatettavissa"); paluu nolla;}); }

3. Vastaa käyttäjän syötteisiin

ArFragmentissa on sisäänrakennettu tuki napautus-, vetämis-, puristus- ja vääntöeleille.

Sovelluksessamme käyttäjä lisää 3D-mallin ARCore-tasoon antamalla kyseiselle tasolle hanan.

Toimittaaksemme tämän toiminnon, meidän on rekisteröitävä takaisinsoitto, johon soitetaan aina, kun lentokoneeseen napsautetaan:

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == nolla) {return;}

4. Ankkuroi mallisi

Tässä vaiheessa haemme ArSceneView: n ja liitämme sen AnchorNode-tiedostoon, joka toimii kohtauksen vanhemman solmuna.

ArSceneView vastaa useiden tärkeiden ARCore-tehtävien suorittamisesta, mukaan lukien laitteen kamerakuvien esittäminen ja Sceneform UX -animaation näyttäminen, joka osoittaa, kuinka käyttäjän tulisi pitää ja siirtää laitettaan AR-kokemuksen aloittamiseksi. ArSceneView korostaa myös kaikki ilmaisunsa lentokoneet, jotka ovat valmiita käyttäjän sijoittamaan 3D-mallinsa kohtaukseen.

ARSceneView-komponenttiin on liitetty kohtaus, joka on vanhemman ja lapsen tietorakenne, joka sisältää kaikki solmut, jotka on tehtävä.

Aluksi luomme AnchorNode-tyyppinen solmu, joka toimii ArSceneView-vanhemmasolmunamme.

Kaikki ankkurisolmut pysyvät samassa reaalimaailmassa, joten luomalla ankkurisolmu varmistamme, että 3D-mallimme pysyvät paikoillaan laajennetussa kohtauksessa.

Luodaan ankkurisolmu:

AnchorNode anchorNode = uusi AnchorNode (ankkuri);

Voimme sitten noutaa ArSceneView-sovelluksen käyttämällä getArSceneView () -sovellusta ja liittää se AnchorNode:

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

5. Lisää tuki liikuttamiselle, skaalaamiselle ja kääntämiselle

Seuraavaksi aion luoda solmun, jonka tyyppi on TransformableNode. TransformableNode on vastuussa solmujen liikuttamisesta, skaalaamisesta ja kiertämisestä käyttäjän eleiden perusteella.

Kun olet luonut TransformableNode -sovelluksen, voit liittää sen Renderable-tiedostoon, joka antaa mallille mahdollisuuden skaalata ja liikkua käyttäjän vuorovaikutuksen perusteella. Lopuksi, sinun on kytkettävä TransformableNode AnchorNode -sovellukseen lapsen ja vanhemman välisessä suhteessa, joka varmistaa TransformableNode ja Rendoitava pysyy paikallaan lisätyn kohtauksen sisällä.

TransformableNode transformableNode = uusi TransformableNode (arCoreFragment.getTransformationSystem ()); // Yhdistä transformableNode anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Valitse solmu // transformableNode.select (); }); }

Päättynyt MainActivity

Kaikkien yllä olevien suorittamisen jälkeen MainActivity-laitteesi pitäisi näyttää tällaiselta:

tuo android.app.Activity; Tuo android.app.ActivityManager; tuo androidx.appcompat.app.AppCompatActivity; tuo android.content.Context; tuo android.net.Uri; tuo android.os.Build; tuo android.os.Build.VERSION_CODES; tuo android.os.Bundle; tuo android.util.Log; tuo android.view.MotionEvent; tuo androidx.annotation.RequiresApi; tuo com.google.ar.core.Anchor; tuo com.google.ar.core.HitResult; tuo com.google.ar.core.Plane; tuo com.google.ar.sceneform.AnchorNode; tuo com.google.ar.sceneform.rendering.ModelRenderable; tuo com.google.ar.sceneform.ux.ArFragment; tuo com.google.ar.sceneform.ux.TransformableNode; julkinen luokka MainActivity laajentaa AppCompatActivity {yksityinen staattinen lopullinen merkkijono TAG = MainActivity.class.getSimpleName (); yksityinen staattinen lopullinen kaksinkertainen MIN_OPENGL_VERSION = 3.0; // Luo jäsenmuuttuja mallilleRenderable // yksityinen ModelRenderable dinoRenderable; // Luo jäsenmuuttuja ArFragmentille // yksityinen ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @Ohita suojattu tyhjä onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); if (! checkDevice ((this)))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Löydä fragmentti fragmenttihallintaa käyttämällä // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Rakenna ModelRenderable // ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build (). ) .poikkeuksellisesti (// Jos tapahtuu virhe ... // heitettävissä -> {//... tulosta seuraava sitten Logcat // Log.e -sovellukseen (TAG, "Ei voida ladata renderoitavaa"); palauta nolla;} ); } // Kuuntele onTap-tapahtumia // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Ankkuri-ankkuri = hitResult.createAnchor (); // solmun tyyppi AnchorNode // AnchorNode anchorNode = uusi AnchorNode (ankkuri); // Yhdistä AnchorNode kohtaukseen // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Rakenna TransformableNode-tyyppinen solmu. TransformableNode transformableNode = uusi TransformableNode (arCoreFragment.getTransformationSystem ()); // Yhdistä TransformableNode ankkuriin // transformableNode.setParent (anchorNode); // Kiinnitä Renderable // transformableNode.setRenderable (dinoRenderable); / transformableNode.select ();}); } julkinen staattinen boolean checkDevice (lopullinen aktiviteetti) {// Jos laitteessa on Android Marshmallow tai aikaisempi ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... tulosta seuraava Logcat // Log.e (TAG, "Sceneform vaatii Android N: n tai uudemman"); activity.finish (); palauta väärä; } Merkkijono openGlVersionString = ((ActivityManager) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Tarkista OpenGL ES: n versio // .getGlEsVersion (); // Jos laitteessa on jotain vähemmän kuin OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//...tulosta seuraavaksi Logcat // Log.e (TAG, " Vaatii OpenGL ES 3.0 tai uudempi "); activity.finish (); palauta väärä; } palata totta; }}

Voit ladata valmis projektin GitHubista.

Google ARCore -laajennetun todellisuuden sovelluksen testaaminen

Olet nyt valmis testaamaan sovellustasi fyysisellä tuetulla Android-laitteella. Jos sinulla ei ole laitetta, joka tukee ARCorea, on mahdollista testata AR-sovelluksesi Android-emulaattorissa (hieman ylimääräisellä kokoonpanolla, jota käsittelemme seuraavassa osiossa).

Testaa projektisi a fyysinen Android-laite:

  • Asenna sovellus kohdelaitteeseen.
  • Anna pyydettäessä sovellukselle pääsy laitteen kameraan.
  • Jos sinua kehotetaan asentamaan tai päivittämään ARCore-sovellus, napauta ”Jatka” ja suorita sitten valintaikkuna varmistaaksesi, että käytät ARCore-sovelluksen uusinta ja suurinta versiota.
  • Sinun pitäisi nyt nähdä kameranäkymä, täydellisenä animaatiolla, joka käsittää laitetta. Osoita kamera tasaiselle alustalle ja siirrä laitetta ympyräliikkeellä, kuten animaatio osoittaa. Muutaman hetken kuluttua näytölle tulee sarja pisteitä, jotka osoittavat, että kone on havaittu.

  • Kun olet tyytyväinen näiden pisteiden sijaintiin, anna heille napautus - 3D-mallisi pitäisi nyt näkyä valitsemassasi lentokoneessa!

  • Yritä liikkua mallin fyysisesti; ympäristöstäsi riippuen saatat pystyä tekemään täydet 360 astetta sen ympärillä. Sinun tulisi myös tarkistaa, että esine heittää varjon, joka on yhdenmukainen todellisen maailman valonlähteiden kanssa.

ARCoren testaaminen Android-virtuaalilaitteella

ARCore-sovellusten testaamiseksi Android-virtuaalilaitteella (AVD) tarvitaan Android Emulator -versio 27.2.9 tai uudempi. Sinun on oltava kirjautuneena myös AVD: n Google Play -kauppaan ja sinulla on oltava OpenGL ES 3.0 tai uudempi.

Voit tarkistaa, onko OpenGL ES 3.0 tai uudempi käytössä tällä hetkellä AVD: llä:

  • Käynnistä AVD, normaalisti.
  • Avaa uusi pääteikkuna (Mac) tai komentokehote (Windows).
  • Vaihda hakemisto (“cd”), niin pääte- / komentokehote osoittaa Android SDK: n “adb” -ohjelman sijaintiin, esimerkiksi komento näyttää tältä:

Cd / Käyttäjät / jessicathornsby / Kirjasto / Android / sdk / alusta-työkalut

  • Paina näppäimistön Enter-näppäintä.
  • Kopioi / liitä seuraava komento terminaaliin ja paina sitten Enter-näppäintä:

./adb logcat | grep eglMakeCurrent

Jos terminaali palaa ”ver 3 0” tai uudempi, OpenGL ES on määritetty oikein. Jos pääte- tai komentokehote näyttää jotain aikaisempaa kuin 3.0, sinun on otettava OpenGL ES 3.0 käyttöön:

  • Vaihda takaisin AVD-laitteeseen.
  • Etsi Android-emulaattorin vieressä kelluvat laajennetun ohjauksen painikkeiden nauhat ja valitse sitten Asetukset> Lisäasetukset.
  • Siirry kohtaan “OpenGL ES API -taso> Järjestäjän enimmäismäärä (enintään OpenGL ES 3.1).”
  • Käynnistä emulaattori uudelleen.

Kopioi / liitä seuraava komento Pääte / Komento -ikkunassa ja paina sitten “Enter” -näppäintä ”

./adb logcat | grep eglMakeCurrent

Sinun pitäisi nyt saada tulos “ver 3 0” tai uudempi, mikä tarkoittaa, että OpenGL ES on määritetty oikein.

Varmista lopuksi, että AVD-levylläsi on viimeisin ARCore-versio:

  • Siirry ARCoren GitHub-sivulle ja lataa viimeisin ARCore-julkaisu emulaattorille. Esimerkiksi kirjoittamishetkellä viimeisin julkaisu oli “ARCore_1.7.0.x86_for_emulator.apk”.
  • Vedä ja pudota APK käynnissä olevaan AVD: hen.

Voit testata projektisi AVD: llä asentamalla sovelluksesi ja antamalla sille pääsyn AVD: n ”kameraan”, kun sitä pyydetään.

Sinun pitäisi nyt nähdä kameranäkymä simuloidusta huoneesta. Voit testata sovellustasi liikkumalla virtuaalitilan ympäri, löytää simuloitu tasainen pinta ja sijoittaa malli napsauttamalla -painiketta.

Voit siirtää virtuaalikameraa virtuaalihuoneen ympärillä pitämällä "Optio" (macOS) tai "Alt" (Linux tai Windows) -näppäimiä painettuna ja käyttämällä sitten mitä tahansa seuraavista pikanäppäimistä:

  • Siirrä vasemmalle tai oikealle. Paina A tai D.
  • Siirrä alas tai ylös. Paina Q tai E.
  • Siirry eteen- tai taaksepäin. Paina W tai S.

Voit myös "liikkua" virtuaalisen kohtauksen ympärillä painamalla "Optio" tai "Alt" ja käyttämällä sitten hiirtä. Tämä voi tuntua aluksi hieman tahmealta, mutta käytännössä sinun pitäisi pystyä tutkimaan virtuaalitilaa onnistuneesti. Kun olet löytänyt simuloidun tason, napsauta valkoisia pisteitä sijoittaaksesi 3D-mallisi tälle pinnalle.

Käärimistä

Tässä artikkelissa loimme yksinkertaisen lisätyn todellisuuden sovelluksen ARCorea ja Sceneform-laajennusta käyttämällä.

Jos päätät käyttää Google ARCorea omissa projekteissasi, muista jakaa luomuksesi alla oleviin kommentteihin!

Chrome O: lla on maine vakaudeta ja ripeätä uoritukyvytä, mutta uui CPU-virhe näyttää huoletuttavan joitain käyttäjiä. Mutta omituita e näyttä...

Mahdollinen uui Google Chrome -ominaiuu on matkalla elaimen Kanarian verioon (kautta Chrome tory). Uuden ominaiuuden avulla käyttäjät voivat jakaa linkkejä tiettyihin verkkoivujen ...

Suosittelemme Sinua