Byg en augmented reality-app med Google ARCore

Forfatter: Laura McKinney
Oprettelsesdato: 7 April 2021
Opdateringsdato: 1 Juli 2024
Anonim
ARmedia SDK v2.0: a new tool to build Augmented Reality Apps
Video.: ARmedia SDK v2.0: a new tool to build Augmented Reality Apps

Indhold


Importerer 3D-modeller med Sceneform-plugin

Normalt kræver arbejde med 3D-modeller specialviden, men med frigivelsen af ​​Sceneform-pluginet har Google gjort det muligt at gengive 3D-modeller ved hjælp af Java - og uden at skulle lære OpenGL.

Sceneform-pluginet giver et API på højt niveau, som du kan bruge til at oprette Renderdables fra standard Android-widgets, figurer eller materialer eller fra 3D-aktiver, såsom .OBJ- eller .FBX-filer.

I vores projekt bruger vi Sceneform-pluginet til at importere en .OBJ-fil til Android Studio. Hver gang du importerer en fil ved hjælp af Sceneform, vil dette plugin automatisk:

  • Konverter aktivfilen til en .sfb-fil. Dette er et runtime-optimeret Sceneform Binary-format (.sfb), der føjes til din APK og derefter indlæses under runtime. Vi bruger denne .sfb-fil til at oprette en gengældelig, der består af masker, materialer og teksturer og kan placeres hvor som helst inden for den forstørrede scene.
  • Generer en .sfa-fil. Dette er en aktivbeskrivelsesfil, som er en tekstfil, der indeholder en menneskelig læsbar beskrivelse af .sfb-filen. Afhængig af modellen kan du muligvis ændre dens udseende ved at redigere teksten inde i .sfa-filen.


Bare vær opmærksom på, at Sceneform-plugin på skrivende tidspunkt stadig var i beta, så du kan støde på fejl, fejl eller anden underlig opførsel, når du bruger dette plugin.

Installation af Sceneform-plugin

Sceneform-pluginet kræver Android Studio 3.1 eller nyere. Hvis du ikke er sikker på, hvilken version af Android Studio du bruger, skal du vælge "Android Studio> Om Android Studio" på værktøjslinjen. Den efterfølgende popup indeholder nogle grundlæggende oplysninger om din Android Studio-installation, inklusive dets versionnummer.

Sådan installeres Sceneform-plugin:

  • Hvis du er på en Mac, skal du vælge "Android Studio> Præferencer ..." på værktøjslinjen til Android Studio og derefter vælge "Plugins" i menuen til venstre. Hvis du er på en Windows-pc, skal du vælge "File> Settings> Plugins> Browse repositories."
  • Søg efter “Sceneform.” Når “Google Sceneform Tools” vises, skal du vælge “Install”.
  • Genstart Android Studio, når du bliver bedt om det, og dit plugin er klar til brug.


Sceneform UX og Java 8: Opdatering af dine projektafhængigheder

Lad os starte med at tilføje de afhængigheder, vi bruger i hele dette projekt. Åbn din build.gradle-fil på modulniveau, og tilføj Sceneform UX-biblioteket, som indeholder ArFragment, som vi bruger i vores layout:

afhængigheder {implementeringsfilTree (dir: libs, inkluderer:) implementering androidx.appcompat: appcompat: 1.0.2 implementering 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 leverer UX-ressourcer, herunder ArFragment // implementering "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" implementering "com. android.support:appcompat-v7:28.0.0 "}

Sceneform bruger sprogkonstruktioner fra Java 8, så vi bliver også nødt til at opdatere vores projekts kildekompatibilitet og målkompatibilitet til Java 8:

compileOptions {kildeKompatibilitet JavaVersion.VERSION_1_8 targetKompatibilitet JavaVersion.VERSION_1_8}

Endelig skal vi anvende Sceneform-plugin:

anvende plugin: com.google.ar.sceneform.plugin

Din afsluttede build.gradle-fil skal se sådan ud:

påfør plugin: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.RofficVideo JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} afhængigheder {implementeringsfilTree (dir: libs, inkluderer:) implementering androidx.appcompat: appcompat: 1.0 .2 implementering 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 implementering "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "implementering" com.android.support:appcompat-v7:28.0.0 "} anvend plugin: com.google.ar .sceneform.plugin

Anmoder om tilladelser med ArFragment

Vores applikation bruger enhedens kamera til at analysere omgivelserne og placere 3D-modeller i den virkelige verden. Før vores applikation kan få adgang til kameraet, kræver det kameraet tilladelse, så åbn dit projekt's Manifest og tilføj følgende:

Android 6.0 gav brugerne mulighed for at tildele, afvise og tilbagekalde tilladelser på tilladelse-efter-tilladelsesbasis. Mens dette forbedrede brugeroplevelsen, skal Android-udviklere nu manuelt anmode om tilladelser ved kørsel og håndtere brugerens svar. Den gode nyhed er, at når man arbejder med Google ARCore, implementeres processen med at anmode om kameraet tilladelse og håndtere brugerens svar automatisk.

ArFragment-komponenten kontrollerer automatisk, om din app har kameratilladelse, og anmoder den om nødvendigt, før du opretter AR-sessionen. Da vi bruger ArFragment i vores app, behøver vi ikke at skrive nogen kode for at anmode om kameraets tilladelse.

AR krævet eller valgfri?

Der er to typer applikationer, der bruger AR-funktionalitet:

1. AR krævet

Hvis din ansøgning er afhængig af Google ARCore for at levere en god brugeroplevelse, skal du sikre dig, at den kun nogensinde er downloadet til enheder, der understøtter ARCore. Hvis du markerer din app som "AR krævet", vises den kun i Google Play-butikken, hvis enheden understøtter ARCore.

Siden vores ansøgning gør kræver ARCore, åbne manifestet og tilføj følgende:

Der er også en chance for, at din applikation muligvis kan downloades til en enhed, der understøtter ARCore i teorien, men ikke har ARCore faktisk installeret. Når vi markerer vores app som "AR krævet", vil Google Play automatisk downloade og installere ARCore sammen med din app, hvis den ikke allerede findes på målenheden.

Bare vær opmærksom på, at selv hvis din app er Android: krævet = ”sand”, vil du stadig nødt til at kontrollere, at ARCore er til stede under kørsel, da der er en chance for, at brugeren kan have afinstalleret ARCore siden download af din app, eller at deres version af ARCore er forældet.

Den gode nyhed er, at vi bruger ArFragment, som automatisk kontrollerer, at ARCore er installeret og opdateret, inden du opretter hver AR-session - så endnu en gang er dette noget, vi ikke behøver at implementere manuelt.

2. AR Valgfrit

Hvis din app inkluderer AR-funktioner, der er dejlige at have, men ikke væsentlige for at levere dens kernefunktionalitet, kan du markere denne applikation som "AR Valgfri." Din app kan derefter kontrollere, om Google ARCore er til stede på runtime og deaktivere dens AR-funktioner på enheder, der ikke understøtter ARCore.

Hvis du opretter en "AR valgfri" app, vil ARCore gøre det ikke installeres automatisk ved siden af ​​din applikation, selvom enheden har al den hardware og software, der kræves for at understøtte ARCore. Din “AR Valgfri” app skal derefter kontrollere, om ARCore er til stede og opdateret, og downloade den nyeste version, når og når det er nødvendigt.

Hvis ARCore ikke er afgørende for din app, kan du tilføje følgende til din manifest:

Mens jeg har manifestet åbent, tilføjer jeg også android: configChanges og android: screenOrientation for at sikre, at MainActivity håndterer orienteringsændringer yndefuldt.

Efter at have tilføjet alt dette til dit manifest, skal den afsluttede fil se sådan ud:

Føj ArFragment til dit layout

Jeg bruger ARCores ArFragment, da det automatisk håndterer et antal nøgle-ARCore-opgaver i starten af ​​hver AR-session. Arfragment kontrollerer især, at en kompatibel version af ARCore er installeret på enheden, og at appen i øjeblikket har kameraet tilladelse.

Når ArFragment har bekræftet, at enheden kan understøtte din app's AR-funktioner, opretter den en ArSceneView ARCore-session, og din app's AR-oplevelse er klar til at gå!

Du kan tilføje ArFragment-fragmentet til en layoutfil, ligesom et almindeligt Android Fragment, så åbn din Activity_main.xml-fil og tilføj en “com.google.ar.sceneform.ux.ArFragment” -komponent.

Download af 3D-modeller ved hjælp af Googles Poly

Der er flere forskellige måder, du kan oprette gengivelser på, men i denne artikel bruger vi en 3D-aktivfil.

Sceneform understøtter 3D-aktiver i .OBJ, .glTF og .FBX formater, med eller uden animationer. Der er masser af steder, hvor du kan anskaffe 3D-modeller i et af disse understøttede formater, men i denne tutorial bruger jeg en .OBJ-fil, downloadet fra Googles Poly-arkiv.

Gå over til Poly-webstedet, og download det aktiv, du vil bruge, i .OBJ-format (jeg bruger denne T-Rex-model).

  • Fjern mappen, der skal indeholde din modellens kilde aktivfil (.OBJ, .FBX eller .glTF). Afhængig af modellen kan denne mappe også indeholde nogle modelafhængigheder, såsom filer i formaterne .mtl, .bin, .png eller .jpeg.

Importerer 3D-modeller til Android Studio

Når du har et aktiv, skal du importere det til Android Studio ved hjælp af Sceneform-plugin. Dette er en flertrinsproces, der kræver, at du:

  • Opret en "sampledata" -mappe. Sampledata er en ny mappetype til designtidspunkteksempeldata, som ikke vil inkluderes i din APK, men som vil være tilgængelige i Android Studio-editoren.
  • Træk og slip den originale .OBJ-aktivfil i din "sampledata" -mappe.
  • Udfør Sceneform-import og -konvertering på .OBJ-filen, som genererer .sfa- og .sfb-filerne.

Selvom det kan virke mere ligetil, gør ikke træk og släpp .OBJ-filen direkte i dit projekts “res” -mappe, da dette vil medføre, at modellen unødvendigt inkluderes i din APK.

Android Studio-projekter indeholder ikke en “sampledata” -mappe som standard, så du bliver nødt til at oprette en manuelt:

  • Kontroller-klik på dit projekt “app” -mappe.
  • Vælg "Ny> Eksempeldatakatalog" og opret en mappe med navnet "sampledata."
  • Naviger til de 3D-modelfiler, du har downloadet tidligere. Find kildeaktivfilen (.OBJ, .FBX eller .glTF), og træk og slip den derefter i "sampledata" -mappen.
  • Kontroller, om din model har nogen afhængigheder (f.eks. Filer i formaterne .mtl, .bin, .png eller .jpeg). Hvis du finder nogen af ​​disse filer, skal du trække og slippe dem i mappen "sampledata".
  • I Android Studio skal du kontrollere og klikke på din 3D-modelkildefil (.OBJ, .FBX eller .glTF) og derefter vælge "Import Sceneform Asset."

  • Det efterfølgende vindue viser nogle oplysninger om de filer, som Sceneform vil generere, herunder hvor den resulterende .sfa-fil gemmes i dit projekt; Jeg bruger det "rå" bibliotek.
  • Når du er tilfreds med de oplysninger, du har indtastet, skal du klikke på "Udfør."

Denne import foretager et par ændringer til dit projekt. Hvis du åbner din build.gradle-fil, vil du se, at Sceneform-pluginet er blevet tilføjet som en projektafhængighed:

afhængigheder {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // BEMÆRK: Placer ikke dine ansøgningsafhængigheder her; de hører til // i det enkelte modul build.gradle-filer}}

Åbn din build.gradle-fil på modulniveau, og du finder en ny sceneform.asset () post til din importerede 3D-model:

Anvend plugin: com.google.ar.sceneform.plugin // Den "kildeindstillingssti", du angav under import // sceneform.asset (sampledata / dinosaur.obj, // "Materiale sti", du angav under import // Standard , // ".sfa Output Path", du har angivet under import // sampledata / dinosaur.sfa, // ".sfb Output Path", du angav under import // src / main / asset / dinosaur)

Hvis du kigger på dine "sampledata" og "rå" mapper, vil du se, at de indeholder henholdsvis nye .sfa- og .sfb-filer.

Du kan se en forhåndsvisning af .sfa-filen i Android Studios nye Sceneform Viewer:

  • Vælg "Vis> Værktøjer Windows> Viewer" i menulinjen i Android Studio.
  • Vælg din .sfa-fil i menuen til venstre. Din 3D-model skal nu vises i Viewer-vinduet.

Vis din 3D-model

Vores næste opgave er at oprette en AR-session, der forstår dens omgivelser, og giver brugeren mulighed for at placere 3D-modeller i en forstærket scene.

Dette kræver, at vi gør følgende:

1. Opret en ArFragment-medlemsvariabel

ArFragment udfører meget af det tunge løft, der er involveret i oprettelsen af ​​en AR-session, så vi refererer til dette fragment i vores MainActivity-klasse.

I følgende uddrag opretter jeg en medlemsvariabel til ArFragment og initialiserer den derefter i onCreate () -metoden:

privat arFragment arCoreFragment; @Override beskyttet tomrum onCreate (Bundle gemtInstanceState) {super.onCreate (gemtInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Find fragmentet ved hjælp af fragment manager // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Byg en ModelRenderable

Vi er nu nødt til at omdanne vores .sfb-fil til en ModelRenderable, som til sidst vil gøre vores 3D-objekt.

Her opretter jeg en ModelRenderable fra mit projekts res / raw / dinosaur .sfb-fil:

privat ModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (dette, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable) .exceptional (throwable -> {Log.e ( TAG, "Kan ikke indlæse gengiveligt"); returnere null;}); }

3. Svar på brugerinput

ArFragment har indbygget understøttelse til tryk, træk, knib og vri bevægelser.

I vores app tilføjer brugeren en 3D-model til et ARCore-fly ved at give dette fly et tryk.

For at levere denne funktionalitet er vi nødt til at registrere et tilbagekald, der vil blive aktiveret, hver gang et fly tappes:

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

4. Forankre din model

I dette trin vil vi hente en ArSceneView og vedhæfte den til en ankernode, der fungerer som scenens overordnede knude.

ArSceneView er ansvarlig for at udføre flere vigtige ARCore-opgaver, herunder gengivelse af enhedens kamerabilleder, og visning af en Sceneform UX-animation, der demonstrerer, hvordan brugeren skal holde og flytte deres enhed for at starte AR-oplevelsen. ArSceneView vil også fremhæve alle planer, den registrerer, klar til at brugeren kan placere deres 3D-modeller i scenen.

ARSceneView-komponenten har en scene knyttet til den, som er en forældre-barn datastruktur, der indeholder alle de noder, der skal gengives.

Vi begynder med at oprette en knude af typen AnchorNode, der fungerer som vores ArSceneViews overordnede knude.

Alle ankerknudepunkter forbliver i den samme position i den virkelige verden, så ved at oprette en ankerknudepunkt sikrer vi, at vores 3D-modeller forbliver faste på plads inden for den augmented scene.

Lad os oprette vores ankerknudepunkt:

AnchorNode anchorNode = nyt AnchorNode (anker);

Vi kan derefter hente en ArSceneView ved hjælp af getArSceneView () og vedhæfte den til AnchorNode:

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

5. Tilføj support til bevægelse, skalering og rotation

Dernæst opretter jeg en node af typen TransformableNode. TransformableNode er ansvarlig for at bevæge, skalere og rotere noder, baseret på brugerbevægelser.

Når du har oprettet en TransformableNode, kan du vedhæfte den Renderable, som giver modellen muligheden for at skalere og flytte, baseret på brugerinteraktion. Endelig skal du forbinde TransformableNode til AnchorNode i et barn-forælder forhold, der sikrer TransformableNode og Renderable forbliver fast på plads inden for den augmented scene.

TransformableNode transformableNode = ny TransformableNode (arCoreFragment.getTransformationSystem ()); // Forbind transformableNode til anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Vælg noden // transformableNode.select (); }); }

Den afsluttede MainActivity

Når du har udført alle ovenstående, skal din MainActivity se sådan ud:

import android.app.Aktivitet; import android.app.ActivityManager; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.net.Uri; import android.os.Build; import 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; import com.google.ar.sceneform.ux.ArFragment; import com.google.ar.sceneform.ux.TransformableNode; offentlig klasse MainActivity udvider AppCompatActivity {privat statisk final String TAG = MainActivity.class.getSimpleName (); privat statisk endelig dobbelt MIN_OPENGL_VERSION = 3.0; // Opret en medlemsvariabel til ModelRenderable // private ModelRenderable dinoRenderable; // Opret en medlemsvariabel til ArFragment // privat ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @Override beskyttet tomrum onCreate (Bundle gemtInstanceState) {super.onCreate (gemtInstanceState); if (! checkDevice ((dette))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Find fragmentet ved hjælp af fragment manager // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Build ModelRenderable // ModelRenderable.builder () .setSource (dette, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable) ) .exceptionelt (// Hvis der opstår en fejl ... // kastbar -> {//... tryk derefter følgende til Logcat // Log.e (TAG, "Kan ikke indlæse gengiveligt"); returnere null;} ); } // Lyt til onTap-begivenheder // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Ankeranker = hitResult.createAnchor (); // Build a node af type AnchorNode // AnchorNode anchorNode = new AnchorNode (anker); // Forbind ankerNode til Scene // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Byg en knude af typen TransformableNode // TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // Tilslut TransformableNode til AnchorNode // transformableNode.setParent (anchorNode); // Sæt noden / transformableNode.setRenderable (dinoRenderable); // Sæt noden / / transformableNode.select ();}); } offentlig statisk boolsk checkDevice (slutaktivitetsaktivitet) {// Hvis enheden kører Android Marshmallow eller tidligere ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... derefter udskriv følgende Logcat // Log.e (TAG, "Sceneform kræver Android N eller nyere"); activity.finish (); vende tilbage falsk; } String openGlVersionString = ((ActivityManager) aktivitet.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Kontroller versionen af ​​OpenGL ES // .getGlEsVersion (); // Hvis enheden kører noget mindre end OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//... tryk derefter følgende til Logcat // Log.e (TAG, " Kræver OpenGL ES 3.0 eller nyere "); activity.finish (); vende tilbage falsk; } returner sandt; }}

Du kan downloade det afsluttede projekt fra GitHub.

Test af din Google ARCore augmented reality-app

Du er nu klar til at teste din ansøgning på en fysisk, understøttet Android-enhed. Hvis du ikke ejer en enhed, der understøtter ARCore, er det muligt at teste din AR-app i Android Emulator (med en smule ekstra konfiguration, som vi vil dække i det næste afsnit).

At teste dit projekt på en fysisk Android-enhed:

  • Installer din applikation på målenheden.
  • Når du bliver bedt om det, skal du give applikationen adgang til din enheds kamera.
  • Hvis du bliver bedt om at installere eller opdatere ARCore-appen, skal du trykke på "Fortsæt" og derefter gennemføre dialogen for at sikre dig, at du kører den seneste og bedste version af ARCore.
  • Du skal nu se en kameravisning komplet med en animation af en hånd, der holder en enhed. Ret kameraet mod en plan overflade, og flyt din enhed i en cirkulær bevægelse, som demonstreret af animationen. Efter nogle få øjeblikke skulle en række prikker vises, hvilket indikerer, at et fly er blevet registreret.

  • Når du er tilfreds med placeringen af ​​disse prikker, skal du give dem et tryk - din 3D-model skal nu vises på dit valgte plan!

  • Prøv fysisk at bevæge dig rundt i modellen; afhængigt af dine omgivelser, kan du muligvis gøre det hele 360 ​​grader omkring det. Du skal også kontrollere, at objektet kaster en skygge, der stemmer overens med den virkelige verden lyskilder.

Test af ARCore på en virtuel Android-enhed

For at teste dine ARCore-apps i en Android Virtual Device (AVD), har du brug for Android Emulator version 27.2.9 eller nyere. Du skal også være logget ind i Google Play-butikken på din AVD og have OpenGL ES 3.0 eller nyere aktiveret.

Sådan kontrolleres, om OpenGL ES 3.0 eller nyere i øjeblikket er aktiveret på din AVD:

  • Start din AVD som normalt.
  • Åbn et nyt terminalvindue (Mac) eller en kommandoprompt (Windows).
  • Skift katalog ("cd"), så terminalen / kommandoprompten peger på placeringen af ​​dit Android SDK's "adb" -program, for eksempel ser min kommando sådan ud:

Cd / Brugere / jessicathornsby / Bibliotek / Android / sdk / platform-værktøjer

  • Tryk på "Enter" -tasten på dit tastatur.
  • Kopier / indsæt den næste kommando i terminalen, og tryk derefter på "Enter" -tasten:

./adb logcat | grep eglMakeCurrent

Hvis terminalen returnerer “ver 3 0” eller højere, er OpenGL ES konfigureret korrekt. Hvis terminal eller kommandoprompt viser noget tidligere end 3.0, skal du aktivere OpenGL ES 3.0:

  • Skift tilbage til din AVD.
  • Find strimlen med "Udvidet kontrol" -knapper, der flyder sammen med Android Emulator, og vælg derefter "Indstillinger> Avanceret."
  • Naviger til “OpenGL ES API-niveau> Renderer maximum (op til OpenGL ES 3.1).”
  • Genstart emulatoren.

I vinduet Terminal / Kommandoprompt skal du kopiere / indsætte følgende kommando og derefter trykke på "Enter" -tasten "

./adb logcat | grep eglMakeCurrent

Du skal nu få et resultat af “ver 3 0” eller højere, hvilket betyder, at OpenGL ES er konfigureret korrekt.

Endelig skal du sørge for, at din AVD kører den allerbedste version af ARCore:

  • Gå over til ARCores GitHub-side, og download den seneste version af ARCore til emulatoren. For eksempel var den seneste udgivelse på dette tidspunkt “ARCore_1.7.0.x86_for_emulator.apk”
  • Træk og slip APK'en på dit kørende AVD.

For at teste dit projekt på en AVD skal du installere din applikation og give det adgang til AVD's "kamera", når du bliver bedt om det.

Du skal nu se et kameravisning af et simuleret rum. For at teste din applikation skal du bevæge dig rundt i dette virtuelle rum, finde en simuleret flad overflade og klikke for at placere en model på denne overflade.

Du kan flytte det virtuelle kamera rundt i det virtuelle rum ved at trykke og holde på “Option” (macOS) eller “Alt” (Linux eller Windows) -tasterne og derefter bruge en af ​​følgende tastaturgenveje:

  • Flyt til venstre eller højre. Tryk på A eller D.
  • Gå ned eller op. Tryk på Q eller E.
  • Gå fremad eller tilbage. Tryk på W eller S.

Du kan også "bevæge dig" rundt i den virtuelle scene ved at trykke på “Option” eller “Alt” og derefter bruge din mus. Dette kan føles lidt klodset i starten, men med praksis skal du være i stand til at udforske det virtuelle rum. Når du har fundet et simuleret plan, skal du klikke på de hvide prikker for at placere din 3D-model på denne overflade.

Afslutter

I denne artikel oprettede vi en simpel augmented reality-app ved hjælp af ARCore og Sceneform-plugin.

Hvis du beslutter at bruge Google ARCore i dine egne projekter, skal du huske at dele dine kreationer i kommentarerne herunder!

De flete menneker nyder penge, men ikke å mange kender in og out finaniering og regnkab. Hvi du har tænkt på at pringe ind i finanverdenen, er her din chance for at tarte. Du kan ø...

Men CE 2019 optager alle opmærkomhed i UA, annoncerede quare Enix tille det fri-til-pil Final Fantay Digital Card Game.Final Fantay Digital Card Game, der blev annonceret til pc og martphone, tag...

Fascinerende