Sukurkite papildytos realybės „Android“ programą naudodami „Google ARCore“

Autorius: Laura McKinney
Kūrybos Data: 7 Balandis 2021
Atnaujinimo Data: 1 Liepos Mėn 2024
Anonim
Create an Augmented Reality App in Android |  App Development Tutorial | Android Studio
Video.: Create an Augmented Reality App in Android | App Development Tutorial | Android Studio

Turinys


3D modelių importavimas su „Sceneform“ papildiniu

Paprastai darbui su 3D modeliais reikia specialių žinių, tačiau išleidus „Sceneform“ papildinį, „Google“ leido atkurti 3D modelius naudojant „Java“ ir „ be turėdamas išmokti „OpenGL“.

„Sceneform“ papildinys teikia aukšto lygio API, kurią galite naudoti, norėdami sukurti „Renderdables“ iš standartinių „Android“ valdiklių, formų ar medžiagų arba iš 3D išteklių, tokių kaip .OBJ arba .FBX failai.

Savo projekte mes naudosime „Sceneform“ papildinį, norėdami importuoti .OBJ failą į „Android Studio“. Kai importuosite failą naudodamiesi „Sceneform“, šis įskiepis automatiškai:

  • Konvertuokite turto failą į .sbb failą. Tai yra runtime optimizuotas dvejetainis „Sceneform“ formatas (.sbb), kuris pridedamas prie jūsų APK ir įkeliamas vykdant. Mes naudosime šį .sbb failą norėdami sukurti „Rendetable“, kurį sudaro tinkleliai, medžiagos ir faktūros ir kurį galima patalpinti bet kurioje papildytos scenos vietoje.
  • Sugeneruokite .sfa failą. Tai yra turto aprašymo failas, tai yra tekstinis failas, kuriame yra žmonėms suprantamas .sfb failo aprašymas. Priklausomai nuo modelio, galite pakeisti jo išvaizdą redaguodami tekstą .sfa faile.


Tiesiog žinokite, kad rašymo metu „Sceneform“ papildinys vis dar buvo beta versijoje, todėl naudodamiesi šiuo įskiepiu galite susidurti su klaidomis, klaidomis ar kitokiu keistu elgesiu.

„Sceneform“ papildinio diegimas

„Sceneform“ papildiniui reikalinga „Android Studio 3.1“ ar naujesnė versija. Jei nesate tikri, kurią „Android Studio“ versiją naudojate, įrankių juostoje pasirinkite „Android Studio“> Apie „Android Studio“. Kitame iššokančiame meniu yra pagrindinė informacija apie „Android Studio“ diegimą, įskaitant jo versijos numerį.

Norėdami įdiegti „Sceneform“ papildinį:

  • Jei naudojate „Mac“, „Android Studio“ įrankių juostoje pasirinkite „Android Studio> Nuostatos ...“, tada kairiajame meniu pasirinkite „Papildiniai“. Jei naudojate „Windows“ asmeninį kompiuterį, pasirinkite „Failas> Nustatymai> Papildiniai> Naršyti saugyklas“.
  • Ieškokite „Sceneform“. Kai pasirodys „Google Sceneform Tools“, pasirinkite „Install“.
  • Kai būsite paraginti, iš naujo paleiskite „Android Studio“ ir jūsų papildinys bus paruoštas naudoti.


„Sceneform UX“ ir „Java 8“: projekto priklausomybių atnaujinimas

Pradėkime pridėdami priklausomybes, kurias naudosime visame šiame projekte. Atidarykite savo modulio lygio „build.gradle“ failą ir pridėkite „Sceneform UX“ biblioteką, kurioje yra „ArFragment“, kurį naudosime savo makete:

priklausomybės {diegimo failasTree (režimas: libs, apima:) diegimas androidx.appcompat: appcompat: 1.0.2 diegimas 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 teikia UX išteklius, įskaitant ArFragment // įgyvendinimą. android.support:appcompat-v7:28.0.0 "}

„Sceneform“ naudoja kalbų konstrukcijas iš „Java 8“, todėl mes taip pat turėsime atnaujinti savo projekto šaltinio ir tikslinį suderinamumą su „Java 8“:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

Galiausiai turime pritaikyti „Sceneform“ papildinį:

pritaikykite papildinį: com.google.ar.sceneform.plugin

Užbaigtas „build.gradle“ failas turėtų atrodyti taip:

pritaikyti papildinį: „com.android.application android“ „JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} priklausomybės {implement fileTree (dir: libs, include:) implement androidx.appcompat: appcompatpat: appcompatpat: .2 diegimas androidx.constraintlayout: constraintlayout: 1.1.3 testImlegmentas 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 "} pritaikyti papildinį: com.google.ar .sceneform.plugin

Prašoma leidimų naudojant „ArFragment“

Mūsų programa naudos įrenginio fotoaparatą, norėdama išanalizuoti jo aplinką ir išdėstyti 3D modelius realiame pasaulyje. Kad mūsų programa galėtų pasiekti kamerą, jai reikalingas kameros leidimas, todėl atidarykite projekto manifestą ir pridėkite:

„Android 6.0“ suteikė vartotojams galimybę suteikti, atsisakyti ir atšaukti leidimus remiantis leidimu. Nors tai pagerino vartotojo patirtį, „Android“ kūrėjai dabar turi rankiniu būdu prašyti leidimų vykdydami laiką ir tvarkyti vartotojo atsakymus. Geros žinios yra tai, kad dirbant su „Google ARCore“, fotoaparato leidimo prašymo ir vartotojo atsakymo tvarkymo procesas įgyvendinamas automatiškai.

„ArFragment“ komponentas automatiškai patikrina, ar jūsų programa turi fotoaparato leidimą, ir, jei reikia, paprašo jo prieš sukurdamas AR seansą. Kadangi programoje naudosime „ArFragment“, mums nereikia rašyti jokio kodo, norint paprašyti fotoaparato leidimo.

AR yra būtinas ar pasirenkamas?

Yra dviejų tipų programos, kurios naudoja AR funkciją:

1. AR reikalingas

Jei jūsų programa remiasi „Google ARCore“, kad užtikrintų gerą naudotojo patirtį, turite įsitikinti, kad ji kada nors bus atsiųsta į įrenginius, palaikančius „ARCore“. Jei pažymėsite savo programą kaip „AR būtiną“, ji bus rodoma „Google Play“ parduotuvėje tik tuo atveju, jei įrenginys palaiko „ARCore“.

Nuo mūsų paraiškos daro reikalauti ARCore, atidarykite manifestą ir pridėkite:

Taip pat yra tikimybė, kad jūsų programa gali būti atsisiųsta į įrenginį, kuris teoriškai palaiko „ARCore“, tačiau iš tikrųjų nėra įdiegęs „ARCore“. Kai pažymėsime programą kaip „AR reikalinga“, „Google Play“ automatiškai atsiųs ir įdiegs „ARCore“ kartu su jūsų programa, jei jos dar nėra tiksliniame įrenginyje.

Tiesiog atminkite, kad net jei jūsų programinė įranga yra „Android“: būtinas = „teisinga“, jūs tai padarysite vis tiek turite patikrinti, ar „ARCore“ veikia vykdymo metu, nes yra tikimybė, kad vartotojas gali pašalinti „ARCore“ nuo to laiko, kai atsisiuntė jūsų programą, arba kad jo „ARCore“ versija pasenusi.

Geros žinios yra tai, kad mes naudojame „ArFragment“, kuris prieš sukurdamas automatiškai patikrina, ar „ARCore“ yra įdiegtas ir atnaujintas. kiekviena AR sesija - taigi, tai dar kartą, ko nereikia įgyvendinti rankiniu būdu.

2. AR pasirenkama

Jei jūsų programoje yra AR funkcijų, kurios yra malonios turėti, bet nėra būtinos norint užtikrinti jos pagrindinę funkciją, galite pažymėti šią programą kaip „AR pasirenkama“. Tada jūsų programa gali patikrinti, ar „Google ARCore“ veikia veikimo metu, ir išjungti AR funkcijos įrenginiuose, kurie nepalaiko „ARCore“.

Jei sukursite programą „AR pasirenkama“, tada „ARCore“ tai sukurs ne būti automatiškai įdiegtas kartu su jūsų programa, net jei įrenginyje yra visa aparatinė ir programinė įranga, reikalinga palaikyti „ARCore“. Tada jūsų „AR pasirenkama“ programa turės patikrinti, ar „ARCore“ yra ir yra atnaujinta, ir atsisiųsti naujausią versiją prireikus.

Jei „ARCore“ nėra labai svarbus jūsų programai, tuomet prie manifesto galite pridėti:

Kol „Manifest“ yra atidarytas, taip pat pridedu „Android“: „configChanges“ ir „Android“: „screenOrientation“, kad „MainActivity“ maloniai tvarkytų orientacijos pokyčius.

Sudėjus visa tai į manifestą, baigtas failas turėtų atrodyti taip:

Pridėkite „ArFragment“ prie savo maketo

Naudosiu „ARCore“ „ArFragment“, nes kiekvienos AR sesijos pradžioje ji automatiškai tvarko keletą pagrindinių „ARCore“ užduočių. Visų pirma, „ArFragment“ patikrina, ar įrenginyje įdiegta suderinama „ARCore“ versija ir ar programa šiuo metu turi kameros leidimą.

Kai „ArFragment“ patikrins, ar įrenginys palaiko jūsų programos AR funkcijas, jis sukuria „ArSceneView ARCore“ seansą ir jūsų programos AR patirtis yra paruošta!

„ArFragment“ fragmentą galite pridėti prie išdėstymo failo, kaip ir įprastą „Android“ fragmentą, todėl atidarykite savo veiklos_main.xml failą ir pridėkite komponentą „com.google.ar.sceneform.ux.ArFragment“.

Atsisiųskite 3D modelius naudodami „Google“ Poly

Yra keletas skirtingų būdų, kaip kurti atkuriamus elementus, tačiau šiame straipsnyje mes naudosime trimatės informacijos failą.

„Sceneform“ palaiko 3D išteklius .OBJ, .glTF ir .FBX formatais, su animacija arba be jos. Yra daugybė vietų, kur galite įsigyti 3D modelius vienu iš šių palaikomų formatų, tačiau šioje mokymo programoje naudosiu .OBJ failą, atsisiųstą iš „Google“ Poly saugyklos.

Eikite į „Poly“ svetainę ir atsisiųskite norimą naudoti turtą .OBJ formatu (aš naudoju šį „T-Rex“ modelį).

  • Išpakuokite aplanką, kuriame turėtų būti jūsų modelio šaltinio išteklių failas (.OBJ, .FBX arba .glTF). Priklausomai nuo modelio, šiame aplanke taip pat gali būti tam tikrų modelio priklausomybių, pavyzdžiui, failai formatu .mtl, .bin, .png arba .jpeg.

3D modelių importavimas į „Android Studio“

Kai turėsite savo turtą, turėsite jį importuoti į „Android Studio“ naudodami „Sceneform“ papildinį. Tai yra kelių žingsnių procesas, reikalaujantis:

  • Sukurkite „pavyzdinių duomenų“ aplanką. Duomenų pavyzdžiai yra naujas aplanko tipas, skirtas projektavimo laiko pavyzdžių duomenims, kurie nebus įtraukti į APK, bet bus prieinami „Android Studio“ redaktoriuje.
  • Nuvilkite originalų .OBJ išteklių failą į aplanką „pavyzdiniai duomenys“.
  • Atlikite „Sceneform“ importavimą ir konvertavimą .OBJ faile, kuris sugeneruos .sfa ir .sfb failus.

Nors tai gali atrodyti tiesmukiškesnė, nereikia vilkite .OBJ failą tiesiai į projekto „res“ katalogą, nes tai be reikalo įtrauks modelį į APK.

Pagal numatytuosius nustatymus „Android Studio“ projektuose nėra aplanko „pavyzdiniai duomenys“, todėl turėsite jį sukurti rankiniu būdu:

  • Kontroliniu būdu spustelėkite projekto aplanką „app“.
  • Pasirinkite „New> Sample Data Directory“ ir sukurkite aplanką pavadinimu „sampledata“.
  • Eikite į 3D modelio failus, kuriuos atsisiuntėte anksčiau. Suraskite šaltinio išteklių failą (.OBJ, .FBX arba .glTF) ir vilkite ir upuść jį į katalogą „sampledata“.
  • Patikrinkite, ar jūsų modelyje nėra priklausomybių (pvz., Failai formatu .mtl, .bin, .png ar .jpeg). Jei radote kurį nors iš šių failų, vilkite ir upuść juos į aplanką „sampledata“.
  • „Android“ studijoje „Control“ spustelėkite 3D modelio šaltinio failą (.OBJ, .FBX arba .glTF) ir pasirinkite „Importuoti scenos formos išteklių“.

  • Kitame lange rodoma tam tikra informacija apie failus, kuriuos „Sceneform“ sukurs, įskaitant tai, kur gautas .sfa failas bus saugomas jūsų projekte; Aš naudoju „neapdorotą“ katalogą.
  • Kai esate patenkinti įvesta informacija, spustelėkite „Baigti“.

Šis importavimas daro keletą pakeitimų jūsų projekte. Jei atidarysite „build.gradle“ failą, pamatysite, kad „Sceneform“ papildinys buvo pridėtas kaip projekto priklausomybė:

priklausomybės {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // PASTABA: nedėkite čia savo programų priklausomybių; jie priklauso // atskirame modulyje build.gradle failai}}

Atidarykite savo modulio lygio „build.gradle“ failą ir rasite naują importuoto 3D modelio įrašą sceneform.asset ():

pritaikyti papildinį: com.google.ar.sceneform.plugin // „Šaltinio išteklių kelias“, kurį nurodėte importuodami // sceneform.asset (pavyzdys / dinosaur.obj, // „Medžiagos kelias“, kurį nurodėte importuodami // Numatytasis , // „.sfa išvesties kelias“, kurį nurodėte importuodami // sampledata / dinosaur.sfa, // „.sfb išvesties kelias“, kurį nurodėte importuodami // src / main / turtas / dinozauras)

Jei pažiūrėsite į „pavyzdinių duomenų“ ir „neapdorotus“ aplankus, pamatysite, kad juose yra atitinkamai nauji .sfa ir .sfb failai.

Galite peržiūrėti .sfa failą naujojoje „Android Studio“ scenų peržiūros priemonėje:

  • „Android Studio“ meniu juostoje pasirinkite „Peržiūrėti>„ Windows “įrankiai“> „Viewer“.
  • Kairiajame meniu pasirinkite .sfa failą. Dabar jūsų 3D modelis turėtų būti rodomas „Viewer“ lange.

Parodykite savo 3D modelį

Kitas mūsų uždavinys yra sukurti AR seansą, kuris suprastų jo aplinką ir leistų vartotojui patalpinti 3D modelius padidintoje scenoje.

Tam reikia atlikti šiuos veiksmus:

1. Sukurkite „ArFragment“ nario kintamąjį

„ArFragment“ atlieka didžiąją dalį sunkumų kilnojimo, susijusio su AR seanso kūrimu, todėl mes nurodysime šį fragmentą visoje „MainActivity“ klasėje.

Šiame fragmente sukuriu „ArFragment“ nario kintamąjį ir tada jį inicijuoju „onCreate ()“ metodu:

privatus „ArFragment“ arCoreFragment; @Apsaugoti negaliojantį „onCreate“ (Bundle saveInstanceState) {super.onCreate (savedInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Suraskite fragmentą, naudodami fragmentų tvarkytuvę // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Sukurkite modelį, kurį galima pakeisti

Dabar turime transformuoti .sfb failą į „ModelRenderable“, kuris ilgainiui pavers 3D objektą.

Aš kuriu „ModelRenderable“ iš savo projekto res / raw / dinozaurų .sbb failo:

privatus „ModelRenderable dinoRenderable“; ... ... ... ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renvable -> dinoRenderable = renderable) .exceptionly (throvable -> {Log.e ( TAG, „Neįmanoma pakrauti išlyginamųjų“); grąžinti negaliojantį;}); }

3. Atsakykite į vartotojo įvestą informaciją

„ArFragment“ turi įmontuotą palietimo, vilkimo, prispaudimo ir pasukimo gestų palaikymą.

Mūsų programoje vartotojas pridės 3D modelį prie „ARCore Plane“, suteikdamas tam lėktuvui čiaupą.

Norėdami suteikti šią funkciją, turime užregistruoti atgalinį skambutį, į kurį bus skambinama kiekvieną kartą bakstelėjus lėktuvą:

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

4. Įtvirtinkite savo modelį

Šiame žingsnyje mes nuskaitysime „ArSceneView“ ir pritvirtinsime jį prie „AnchorNode“, kuris veiks kaip Scenos pagrindinis mazgas.

„ArSceneView“ yra atsakingas už kelių svarbių „ARCore“ užduočių atlikimą, įskaitant įrenginio fotoaparato vaizdų pateikimą ir „Sceneform UX“ animacijos rodymą, parodančią, kaip vartotojas turėtų laikyti ir perkelti savo įrenginį, kad galėtų pradėti naudotis AR. „ArSceneView“ taip pat išryškins visas aptiktas plokštumas, paruoštas vartotojui pateikti 3D modelius scenoje.

„ARSceneView“ komponentas turi pridėtą sceną, kuri yra tėvų ir vaikų duomenų struktūra, kurioje yra visi mazgai, kuriuos reikia atkurti.

Pradėsime kurdami AnchorNode tipo mazgą, kuris veiks kaip pagrindinis „ArSceneView“ mazgas.

Visi inkaro mazgai išlieka toje pačioje realiojo pasaulio padėtyje, todėl sukurdami inkaro mazgą mes užtikrinsime, kad mūsų 3D modeliai išliktų fiksuoti vietoje padidintoje scenoje.

Sukurkime mūsų inkaro mazgą:

AnchorNode anchorNode = naujas AnchorNode (inkaras);

Tada mes galime nuskaityti „ArSceneView“ naudodami „getArSceneView ()“ ir prisegti jį prie „AnchorNode“:

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

5. Pridėkite judėjimo, mastelio keitimo ir pasukimo atramas

Tada aš sukursiu „TransformableNode“ tipo mazgą. Remiantis vartotojo gestais, „TransformableNode“ yra atsakingas už mazgų judėjimą, mastelio keitimą ir sukimąsi.

Sukūrę „TransformableNode“, galite pridėti jį prie „Renderable“, kuris suteiks modeliui galimybę keisti mastelį ir judėti, atsižvelgiant į vartotojo sąveiką. Galiausiai turite prijungti „TransformableNode“ prie „AnchorNode“, naudodamiesi vaiko ir tėvo santykiais, kurie užtikrina „TransformableNode“ ir Padaromas lieka fiksuotoje vietoje padidintoje scenoje.

TransformableNode transformableNode = naujas TransformableNode (arCoreFragment.getTransformationSystem ()); // Prijunkite „transformableNode“ prie anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Pasirinkite mazgą // transformableNode.select (); }); }

Užbaigtas „MainActivity“

Atlikę visa tai, kas išdėstyta aukščiau, jūsų „MainActivity“ turėtų atrodyti taip:

importuoti „android.app.Activity“; importuoti „android.app.ActivityManager“; importuoti „androidx.appcompat.app.AppCompatActivity“; importuoti android.content.Context; importuoti android.net.Uri; importuoti android.os.Build; importuoti „android.os.Build.VERSION_CODES“; importuoti android.os.Bundle; importuoti android.util.Log; importuoti „android.view.MotionEvent“; import androidx.annotation.RequiresApi; importuoti com.google.ar.core.Anchor; importuoti com.google.ar.core.HitResult; importuoti com.google.ar.core.Plane; importuoti com.google.ar.sceneform.AnchorNode; importuoti com.google.ar.sceneform.rendering.ModelRenderable; importuoti com.google.ar.sceneform.ux.ArFragment; importuoti com.google.ar.sceneform.ux.TransformableNode; viešosios klasės „MainActivity“ išplečia „AppCompatActivity“ {privati ​​statinė galutinė eilutė TAG = MainActivity.class.getSimpleName (); privatus statinis dvigubas MIN_OPENGL_VERSION = 3.0; // Sukurkite „ModelRenderable“ nario kintamąjį // Privatus „ModelRenderable“ „dinoRenderable“; // Sukurkite ArFragment nario kintamąjį // private ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @Apsaugoti negaliojantį „onCreate“ (Bundle savedInstanceState) {super.onCreate (savedInstanceState); if (! checkDevice ((this))) {grįžti; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Suraskite fragmentą, naudodami fragmentų tvarkytuvę // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Sukurkite ModelRenderable // ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renvable -> dinoRenderable = rendevable) ). išskirtinai (// Jei įvyksta klaida ... // išmetamas -> {//... tada atspausdinkite šiuos duomenis į „Logcat“ // Log.e (TAG, „Neįmanoma įkelti perdirbamųjų“); grąžinkite negaliojantį;} ); } // Klausykite „OnTap“ įvykių // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Inkaro inkaras = hitResult.createAnchor (); // Sukurkite a. AnchorNode tipo mazgas // AnchorNode anchorNode = new AnchorNode (inkaras); // Prijunkite „AnchorNode“ prie scenos // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Sukurkite „TransformableNode“ tipo mazgą // TransformableNode transformableNode = naujas TransformableNode (arCoreFragment.getTransformationSystem ()); // Prijunkite TransformableNode prie anchorNode // transformableNode.setParent (anchorNode); // Prijunkite Renderable // transformableNode.setRenderable (dinoRenderable); / transformableNode.select ();}); } viešas statinis boolean checkDevice (galutinė veiklos veikla) ​​{// Jei įrenginyje veikia „Android Marshmallow“ ar senesnės versijos ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//...tad atsispausdinkite toliau nurodytą informaciją į „Logcat“ // Log.e (TAG, „Sceneform reikalinga„ Android N “arba naujesnė“); veikla.pabaiga (); grąžinti klaidingą; } Eilutė „openGlVersionString =“ ((„ActivityManager“) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Patikrinkite „OpenGL ES“ versiją // .getGlEsVersion (); // Jei įrenginyje veikia kas nors mažiau nei OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//...tad atspausdinkite šiuos duomenis į Logcat // Log.e (TAG, " Reikia „OpenGL ES 3.0“ ar naujesnės versijos “); veikla.pabaiga (); grąžinti klaidingą; } grįžti tiesa; }}

Galite atsisiųsti baigtą projektą iš „GitHub“.

Išbandykite „Google ARCore“ papildytos realybės programą

Dabar esate pasirengę išbandyti savo programą fiziniame palaikomame „Android“ įrenginyje. Jei neturite įrenginio, palaikančio „ARCore“, galite išbandyti AR programą „Android“ emuliatoriuje (su šiek tiek papildomos konfigūracijos, kurią aptarsime kitame skyriuje).

Norėdami išbandyti savo projektą fizinis „Android“ įrenginys:

  • Įdiekite savo programą tiksliniame įrenginyje.
  • Kai būsite paraginti, suteikite programai prieigą prie savo įrenginio fotoaparato.
  • Jei būsite paraginti įdiegti ar atnaujinti „ARCore“ programą, palieskite „Tęsti“ ir užbaikite dialogą, kad įsitikintumėte, jog naudojate naujausią ir geriausią „ARCore“ versiją.
  • Dabar turėtumėte pamatyti fotoaparato vaizdą kartu su prietaiso, kuriame laikoma ranka, animacija. Nukreipkite fotoaparatą į lygų paviršių ir judinkite savo prietaisą sukamaisiais judesiais, kaip parodyta animacijoje. Po kelių akimirkų turėtų atsirasti taškų serija, rodanti, kad buvo aptiktas lėktuvas.

  • Kai būsite patenkinti šių taškų padėtimi, palieskite juos čiaupą - jūsų 3D modelis dabar turėtų pasirodyti jūsų pasirinktoje plokštumoje!

  • Pabandykite fiziškai judėti po modelį; priklausomai nuo jūsų aplinkos, galite aplink ją atlikti visus 360 laipsnių kampą. Taip pat turėtumėte patikrinti, ar objektas meta šešėlį, atitinkantį realaus pasaulio šviesos šaltinius.

„ARCore“ testavimas „Android“ virtualiame įrenginyje

Jei norite išbandyti „ARCore“ programas „Android“ virtualiame įrenginyje (AVD), jums reikės „Android“ emuliatoriaus 27.2.9 ar naujesnės versijos. Taip pat turite būti prisijungę prie „Google Play“ parduotuvės savo AVD ir įjungę „OpenGL ES 3.0“ ar naujesnę versiją.

Norėdami patikrinti, ar AVD šiuo metu įgalinta „OpenGL ES 3.0“ ar naujesnė versija:

  • Paleiskite savo AVD, kaip įprasta.
  • Atidarykite naują terminalo langą („Mac“) arba komandų eilutę („Windows“).
  • Pakeiskite katalogą („CD“), kad terminalas / komandinė eilutė nurodytų jūsų „Android“ SDK programos „adb“ vietą, pavyzdžiui, mano komanda atrodo taip:

Cd / Vartotojai / jessicathornsby / Biblioteka / „Android“ / SDK / platformos įrankiai

  • Paspauskite klaviatūros klavišą „Enter“.
  • Nukopijuokite / įklijuokite kitą komandą į terminalą ir paspauskite klavišą „Enter“:

./adb logcat | grep eglMakeCurrent

Jei terminalas grąžina „ver 3 0“ arba aukštesnį, tada „OpenGL ES“ sukonfigūruota teisingai. Jei terminalas ar komandinė eilutė rodo ką nors anksčiau nei 3.0, turėsite įgalinti „OpenGL ES 3.0“:

  • Perjunkite atgal į savo AVD.
  • Suraskite mygtukus „Išplėstinis valdymas“, esančius šalia „Android“ emuliatoriaus, ir pasirinkite „Nustatymai> Išplėstiniai“.
  • Eikite į „OpenGL ES API lygį> Maksimalus renderio koeficientas (iki OpenGL ES 3.1)“.
  • Paleiskite emuliatorių iš naujo.

Terminalo / komandų eilutės lange nukopijuokite / įklijuokite šią komandą ir paspauskite „Enter“ klavišą “.

./adb logcat | grep eglMakeCurrent

Dabar turėtumėte gauti „ver 3 0“ ar aukštesnį rezultatą, tai reiškia, kad „OpenGL ES“ sukonfigūruota teisingai.

Galiausiai įsitikinkite, kad jūsų AVD veikia naujausia „ARCore“ versija:

  • Eikite į „ARCore“ „GitHub“ puslapį ir atsisiųskite naujausią „ARCore“ versiją emuliatoriui. Pavyzdžiui, rašymo metu naujausia laida buvo „ARCore_1.7.0.x86_for_emulator.apk“.
  • Vilkite ir nuleiskite APK ant veikiančio AVD.

Norėdami išbandyti savo projektą per AVD, įdiekite programą ir suteikite jai prieigą prie AVD „fotoaparato“, kai būsite paraginti.

Dabar turėtumėte pamatyti imituojamo kambario vaizdą kameroje. Norėdami išbandyti savo programą, judėkite šioje virtualioje erdvėje, raskite modeliuotą plokščią paviršių ir spustelėkite, kad ant šio paviršiaus padėtumėte modelį.

Galite perkelti virtualią kamerą aplink virtualų kambarį, paspausdami ir laikydami mygtuką „Opcija“ („MacOS“) arba „Alt“ („Linux“ arba „Windows“) ir naudodamiesi bet kuriuo iš šių sparčiųjų klavišų:

  • Judėkite kairėn arba dešinėn. Paspauskite A arba D.
  • Judėkite žemyn arba aukštyn. Paspauskite Q arba E.
  • Judėkite pirmyn arba atgal. Paspauskite W arba S.

Taip pat galite „judėti“ virtualioje scenoje paspausdami „Option“ arba „Alt“ ir paskui naudodami pelę. Iš pradžių tai gali jaustis šiek tiek gremėzdiškai, tačiau atlikdami praktiką turėtumėte sugebėti sėkmingai tyrinėti virtualią erdvę. Suradę modeliuojamą plokštumą, spustelėkite baltus taškus, kad ant šio paviršiaus padėtumėte 3D modelį.

Apvyniojimas

Šiame straipsnyje mes sukūrėme paprastą papildytos realybės programą, naudodami „ARCore“ ir „Sceneform“ papildinį.

Jei nuspręsite naudoti „Google ARCore“ savo projektuose, būtinai pasidalykite savo kūriniais komentaruose žemiau!

Remianti naujai „enor Tower“ duomenimi, 100 geriauių programų kūrėjų uždirbo maždaug 84 mln. UD iš pardavimų „Apple App tore“ per pirmąjį 2019 m. Ketvirtį. Tai yra maždaug 9 mln. UD daugiau nei progra...

veiki atvykę į naują eriją kuriame pateikiamo naujauio naujieno, uijuio u pagrindiniu „Android“ konkurentu „Apple“. Tai yra paprata būda „Android“ gerbėjam būti naujiem apie tai, ka vykta mobiliuoiuo...

Mūsų Patarimai