Bangun aplikasi Android augmented reality dengan Google ARCore

Pengarang: Laura McKinney
Tanggal Pembuatan: 7 Lang L: none (month-011) 2021
Tanggal Pembaruan: 1 Juli 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

Isi


Mengimpor model 3D, dengan plugin Sceneform

Biasanya, bekerja dengan model 3D memerlukan pengetahuan khusus, tetapi dengan merilis plugin Sceneform, Google telah memungkinkan untuk membuat model 3D menggunakan Java - dan tanpa harus belajar OpenGL.

Plugin Sceneform menyediakan API tingkat tinggi yang dapat Anda gunakan untuk membuat Renderdables dari widget Android standar, bentuk atau bahan, atau dari aset 3D, seperti file .OBJ atau .FBX.

Dalam proyek kami, kami akan menggunakan plugin Sceneform untuk mengimpor file .OBJ ke Android Studio. Setiap kali Anda mengimpor file menggunakan Sceneform, plugin ini akan secara otomatis:

  • Konversikan file aset menjadi file .sfb. Ini adalah format Biner Sceneform Binary (.sfb) yang dioptimalkan-runtime yang ditambahkan ke APK Anda dan kemudian dimuat saat runtime. Kami akan menggunakan file .sfb ini untuk membuat Renderable, yang terdiri dari jerat, bahan, dan tekstur, dan dapat ditempatkan di mana saja dalam adegan yang diperbesar.
  • Buat file .sfa. Ini adalah file deskripsi aset, yang merupakan file teks yang berisi deskripsi yang dapat dibaca manusia dari file .sfb. Bergantung pada modelnya, Anda mungkin dapat mengubah tampilannya dengan mengedit teks di dalam file .sfa.


Perlu diketahui bahwa pada saat penulisan, plugin Sceneform masih dalam versi beta, jadi Anda mungkin menemukan bug, kesalahan, atau perilaku aneh lainnya saat menggunakan plugin ini.

Menginstal plugin Sceneform

Plugin Sceneform membutuhkan Android Studio 3.1 atau lebih tinggi. Jika Anda tidak yakin versi Android Studio yang Anda gunakan, pilih "Android Studio> Tentang Android Studio" dari bilah alat. Munculan berikutnya berisi beberapa informasi dasar tentang instalasi Android Studio Anda, termasuk nomor versinya.

Untuk menginstal plugin Sceneform:

  • Jika Anda menggunakan Mac, pilih "Android Studio> Preferences ..." dari bilah alat Android Studio, lalu pilih "Plugins" dari menu sebelah kiri. Jika Anda menggunakan PC Windows, lalu pilih "File> Pengaturan> Plugins> Jelajahi repositori."
  • Cari "Sceneform." Ketika "Google Sceneform Tools" muncul, pilih "Instal."
  • Mulai ulang Android Studio saat diminta, dan plugin Anda akan siap digunakan.


Sceneform UX dan Java 8: Memperbarui dependensi proyek Anda

Mari kita mulai dengan menambahkan dependensi yang akan kita gunakan di seluruh proyek ini. Buka file build.gradle tingkat modul Anda, dan tambahkan perpustakaan Sceneform UX, yang berisi ArFragment yang akan kami gunakan di tata letak kami:

dependencies {implementasi fileTree (dir: libs, termasuk:) implementasi androidx.appcompat: appcompat: 1.0.2 implementasi 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 menyediakan sumber daya UX, termasuk ArFragment // implementasi "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" implementasi "com. android.support:appcompat-v7:28.0.0 "}

Sceneform menggunakan konstruksi bahasa dari Java 8, jadi kami juga perlu memperbarui Kompatibilitas Sumber dan Kompatibilitas Target proyek kami ke Java 8:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

Akhirnya, kita perlu menerapkan plugin Sceneform:

terapkan plugin: com.google.ar.sceneform.plugin

File build.gradle Anda yang sudah selesai akan terlihat seperti ini:

terapkan plugin: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versiName "1.0" testInstrumentationRunner "androidx.test.runnercompompersebuahuntukcompatibersebandituntukcompilasiuntuk lebih lanjutuntuk kompatibilitasGeneraluntukcompatibilitasuntukuntuk lebih banyak. JavaVersion.VERSION_1_8} buildTypes {rilis {minifyEnabled proguardfile palsu getDefaultProguardFile (proguard-android-optim.txt), proguard-rules.pro}}} dependensi {implementasi fileTree (dir: libs, termasuk:) implementasi androidx.appcompat: appcompat: appcompat: appcompat: appcompat 1.0 app .2 implementasi 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 implementasi "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "implementasi" com.android.support:appcompat-v7:28.0.0 "} terapkan plugin: com.google.ar .sceneform.plugin

Meminta izin dengan ArFragment

Aplikasi kami akan menggunakan kamera perangkat untuk menganalisis lingkungannya dan menempatkan model 3D di dunia nyata. Sebelum aplikasi kami dapat mengakses kamera, itu membutuhkan izin kamera, jadi buka Manifest proyek Anda dan tambahkan yang berikut:

Android 6.0 memberi pengguna kemampuan untuk memberikan, menolak, dan mencabut izin berdasarkan izin-demi-izin. Sementara ini meningkatkan pengalaman pengguna, pengembang Android sekarang harus secara manual meminta izin pada saat runtime, dan menangani respons pengguna. Berita baiknya adalah ketika bekerja Google ARCore, proses meminta izin kamera dan menangani respons pengguna diimplementasikan secara otomatis.

Komponen ArFragment secara otomatis memeriksa apakah aplikasi Anda memiliki izin kamera dan kemudian memintanya, jika perlu, sebelum membuat sesi AR. Karena kita akan menggunakan ArFragment di aplikasi kita, kita tidak perlu menulis kode apa pun untuk meminta izin kamera.

Wajib atau Opsional?

Ada dua jenis aplikasi yang menggunakan fungsionalitas AR:

1. Diperlukan AR

Jika aplikasi Anda mengandalkan Google ARCore untuk memberikan pengalaman pengguna yang baik, maka Anda perlu memastikan itu hanya diunduh ke perangkat yang mendukung ARCore. Jika Anda menandai aplikasi Anda sebagai "AR Wajib" maka itu hanya akan muncul di Google Play store, jika perangkat mendukung ARCore.

Karena aplikasi kita tidak memerlukan ARCore, buka Manifest dan tambahkan yang berikut:

Ada juga kemungkinan aplikasi Anda dapat diunduh ke perangkat yang mendukung teori ARCore, tetapi ARCore sebenarnya tidak diinstal. Setelah kami menandai aplikasi kami sebagai "Wajib AR" Google Play akan secara otomatis mengunduh dan menginstal ARCore di samping aplikasi Anda, jika aplikasi itu belum ada di perangkat target.

Perlu diketahui bahwa meskipun aplikasi Anda adalah android: wajib = "benar", Anda akan masih perlu memeriksa apakah ARCore hadir saat runtime, karena ada kemungkinan pengguna telah menghapus instalasi ARCore sejak mengunduh aplikasi Anda, atau bahwa versi ARCore mereka kedaluwarsa.

Berita baiknya adalah kita menggunakan ArFragment, yang secara otomatis memeriksa apakah ARCore diinstal dan terbaru sebelum membuat setiap Sesi AR - jadi sekali lagi, ini adalah sesuatu yang tidak harus kami laksanakan secara manual.

2. AR Opsional

Jika aplikasi Anda menyertakan fitur AR yang bagus untuk dimiliki tetapi tidak penting untuk menghadirkan fungsionalitas intinya, maka Anda dapat menandai aplikasi ini sebagai “AR Opsional.” Aplikasi Anda kemudian dapat memeriksa apakah Google ARCore hadir saat runtime, dan nonaktifkan Fitur AR pada perangkat yang tidak mendukung ARCore.

Jika Anda membuat aplikasi "AR Opsional", maka ARCore akan melakukannya tidak diinstal secara otomatis di samping aplikasi Anda, bahkan jika perangkat memiliki semua perangkat keras dan perangkat lunak yang diperlukan untuk mendukung ARCore. Aplikasi “AR Opsional” Anda kemudian perlu memeriksa apakah ARCore hadir dan terbaru, dan mengunduh versi terbaru jika diperlukan.

Jika ARCore tidak penting untuk aplikasi Anda, maka Anda dapat menambahkan yang berikut ke Manifest Anda:

Sementara saya memiliki Manifest terbuka, saya juga menambahkan android: configChanges dan android: screenOrientation, untuk memastikan MainActivity menangani perubahan orientasi dengan anggun.

Setelah menambahkan semua ini ke Manifest Anda, file yang sudah selesai akan terlihat seperti ini:

Tambahkan ArFragment ke tata letak Anda

Saya akan menggunakan ArFragment ARCore, karena secara otomatis menangani sejumlah tugas utama ARCore pada awal setiap sesi AR. Terutama, ArFragment memeriksa bahwa versi ARCore yang kompatibel diinstal pada perangkat, dan bahwa aplikasi saat ini memiliki izin kamera.

Setelah ArFragment memverifikasi bahwa perangkat dapat mendukung fitur AR aplikasi Anda, itu menciptakan sesi ArSceneView ARCore, dan pengalaman AR aplikasi Anda siap untuk digunakan!

Anda dapat menambahkan fragmen ArFragment ke file tata letak, sama seperti Fragmen Android biasa, jadi buka file activity_main.xml Anda dan tambahkan komponen "com.google.ar.sceneform.ux.ArFragment".

Mengunduh model 3D, menggunakan Google's Poly

Ada beberapa cara berbeda untuk membuat Renderables, tetapi dalam artikel ini kita akan menggunakan file aset 3D.

Sceneform mendukung aset 3D dalam format .OBJ, .glTF, dan .FBX, dengan atau tanpa animasi. Ada banyak tempat di mana Anda dapat memperoleh model 3D dalam salah satu format yang didukung ini, tetapi dalam tutorial ini saya akan menggunakan file .OBJ, diunduh dari repositori Poly Google.

Buka situs web Poly dan unduh aset yang ingin Anda gunakan, dalam format .OBJ (Saya menggunakan model T-Rex ini).

  • Buka zip folder, yang seharusnya berisi file aset sumber model Anda (.OBJ, .FBX, atau .glTF). Bergantung pada model, folder ini mungkin juga berisi beberapa dependensi model, seperti file dalam format .mtl, .bin, .png, atau .jpeg.

Mengimpor model 3D ke Android Studio

Setelah Anda memiliki aset, Anda harus mengimpornya ke Android Studio menggunakan plugin Sceneform. Ini adalah proses multi-langkah yang mengharuskan Anda untuk:

  • Buat folder "sampledata". Sampledata adalah jenis folder baru untuk data sampel waktu desain yang tidak akan dimasukkan dalam APK Anda, tetapi akan tersedia di editor Android Studio.
  • Seret dan jatuhkan file aset .OBJ asli ke folder "sampledata" Anda.
  • Lakukan impor dan konversi Sceneform pada file .OBJ, yang akan menghasilkan file .sfa dan .sfb.

Meskipun mungkin tampak lebih mudah, tidak seret dan letakkan file .OBJ langsung ke direktori "res" proyek Anda, karena ini akan menyebabkan model untuk dimasukkan ke dalam APK Anda secara tidak perlu.

Android Studio memproyeksikan tidak mengandung folder "sampledata" secara default, jadi Anda harus membuatnya secara manual:

  • Klik kontrol folder "aplikasi" proyek Anda.
  • Pilih "Baru> Direktori Data Sampel" dan buat folder bernama "sampledata."
  • Arahkan ke file model 3D yang Anda unduh sebelumnya. Temukan file aset sumber (.OBJ, .FBX, atau .glTF) lalu seret dan letakkan di direktori "sampledata".
  • Periksa apakah model Anda memiliki dependensi (seperti file dalam format .mtl, .bin, .png, atau .jpeg). Jika Anda menemukan salah satu dari file-file ini, lalu seret dan letakkan di folder "sampledata".
  • Di Android Studio, Kontrol-klik file sumber model 3D Anda (.OBJ, .FBX, atau .glTF) dan kemudian pilih "Impor Aset Sceneform."

  • Jendela berikutnya menampilkan beberapa informasi tentang file yang akan dihasilkan Sceneform, termasuk di mana file .sfa yang dihasilkan akan disimpan dalam proyek Anda; Saya akan menggunakan direktori "mentah".
  • Saat Anda senang dengan informasi yang Anda masukkan, klik "Selesai."

Impor ini membuat beberapa perubahan pada proyek Anda. Jika Anda membuka file build.gradle Anda, maka Anda akan melihat bahwa plugin Sceneform telah ditambahkan sebagai ketergantungan proyek:

dependencies {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // CATATAN: Jangan letakkan dependensi aplikasi Anda di sini; mereka termasuk // dalam file build.gradle modul individu}}

Buka file build.gradle tingkat modul Anda, dan Anda akan menemukan entri sceneform.asset () baru untuk model 3D yang diimpor:

terapkan plugin: com.google.ar.sceneform.plugin // "Source Asset Path" yang Anda tentukan selama impor // sceneform.asset (sampledata / dinosaur.obj, // "Material Path" yang Anda tentukan saat impor // Default , // ".sfa Output Path" yang Anda tentukan selama impor // sampledata / dinosaur.sfa, // ".sfb Output Path" yang Anda tentukan selama impor // src / main / aset / dinosaurus)

Jika Anda melihat folder "sampledata" dan "raw" Anda, maka Anda akan melihat bahwa folder itu masing-masing berisi file .sfa dan .sfb baru.

Anda dapat melihat pratinjau file .sfa, di Sceneform Viewer baru Android Studio:

  • Pilih "Lihat> Alat Windows> Penampil" dari bilah menu Android Studio.
  • Di menu sebelah kiri, pilih file .sfa Anda. Model 3D Anda sekarang akan muncul di jendela Penampil.

Tampilkan model 3D Anda

Tugas kami berikutnya adalah membuat sesi AR yang memahami lingkungannya, dan memungkinkan pengguna untuk menempatkan model 3D dalam adegan yang diperbesar.

Ini mengharuskan kami untuk melakukan hal berikut:

1. Buat variabel anggota ArFragment

ArFragment melakukan banyak pekerjaan berat yang terlibat dalam membuat sesi AR, jadi kami akan mereferensikan fragmen ini di seluruh kelas MainActivity kami.

Dalam cuplikan berikut, saya membuat variabel anggota untuk ArFragment dan kemudian menginisialisasi dalam metode onCreate ():

ArFragment pribadi arCoreFragment; @Override void onCreate yang dilindungi (Bundle saverInstanceState) {super.onCreate (saverInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Temukan fragmen, menggunakan manajer fragmen // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Bangun ModelRenderable

Kita sekarang perlu mengubah file .sfb kita menjadi ModelRenderable, yang pada akhirnya akan membuat objek 3D kita.

Di sini, saya membuat ModelRenderable dari file res / raw / dinosaur .sfb proyek saya:

dinoRenderable ModelRenderable pribadi; ... ... ... ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build (). KemudianAccept (renderable -> dinoRenderable = renderable) .tertentu (dapat dibuang -> {Log.e ( TAG, "Tidak dapat memuat yang dapat di render"); return null;}); }

3. Menanggapi input pengguna

ArFragment memiliki dukungan bawaan untuk gerakan tap, drag, pinch, dan twist.

Di aplikasi kami, pengguna akan menambahkan model 3D ke Pesawat ARCore, dengan memberikan sentuhan pada pesawat itu.

Untuk memberikan fungsionalitas ini, kami perlu mendaftarkan panggilan balik yang akan dipanggil setiap kali pesawat diketuk:

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

4. Jangkar model Anda

Pada langkah ini, kami akan mengambil ArSceneView dan melampirkannya ke AnchorNode, yang akan berfungsi sebagai simpul orangtua Scene.

ArSceneView bertanggung jawab untuk melakukan beberapa tugas penting ARCore, termasuk merender gambar kamera perangkat, dan menampilkan animasi Sceneform UX yang menunjukkan bagaimana pengguna harus memegang dan memindahkan perangkat mereka untuk memulai pengalaman AR. ArSceneView juga akan menyorot semua pesawat yang terdeteksi, siap bagi pengguna untuk menempatkan model 3D mereka di dalam adegan.

Komponen ARSceneView memiliki adegan yang melekat padanya, yang merupakan struktur data orangtua-anak yang berisi semua node yang perlu dirender.

Kami akan mulai dengan membuat simpul tipe AnchorNode, yang akan bertindak sebagai simpul induk ArSceneView kami.

Semua simpul jangkar tetap di posisi dunia nyata yang sama, jadi dengan membuat simpul jangkar kami memastikan bahwa model 3D kami akan tetap terpasang di tempatnya dalam adegan yang diperbesar.

Mari kita buat simpul jangkar kami:

AnchorNode anchorNode = new AnchorNode (anchor);

Kami kemudian dapat mengambil ArSceneView, menggunakan getArSceneView (), dan melampirkannya ke AnchorNode:

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

5. Tambahkan dukungan untuk bergerak, menskala, dan memutar

Selanjutnya, saya akan membuat simpul bertipe TransformableNode. TransformableNode bertanggung jawab untuk memindahkan, menskalakan, dan memutar simpul, berdasarkan gerakan pengguna.

Setelah membuat TransformableNode, Anda dapat melampirkannya Renderable, yang akan memberi model kemampuan untuk menskala dan bergerak, berdasarkan interaksi pengguna. Akhirnya, Anda perlu menghubungkan TransformableNode ke AnchorNode, dalam hubungan anak-orang tua yang memastikan TransformableNode dan Renderable tetap terpasang di tempatnya dalam adegan augmented.

TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // Hubungkan transformableNode ke anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Pilih simpul // transformableNode.select (); }); }

MainActivity yang selesai

Setelah melakukan semua hal di atas, MainActivity Anda akan terlihat seperti ini:

impor android.app.Aktivitas; impor android.app.Aktivitas Manajer; impor androidx.appcompat.app.AppCompatActivity; impor android.content.Context; impor android.net.Uri; impor android.os.Build; impor android.os.Build.VERSION_CODES; impor android.os.Bundle; impor android.util.Log; impor android.view.MotionEvent; impor 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; MainActivity kelas publik memperluas AppCompatActivity {private static final String TAG = MainActivity.class.getSimpleName (); double final privat statis MIN_OPENGL_VERSION = 3.0; // Buat variabel anggota untuk ModelRenderable // private ModelRenderable dinoRenderable; // Buat variabel anggota untuk ArFragment // private ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @Override void onCreate yang dilindungi (BundleelamatkanInstanceState) {super.onCreate (saveInstanceState); if (! checkDevice ((this)))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Temukan fragmen, menggunakan manajer fragmen // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Bangun ModelRenderable // ModelRenderable.builder () .setSource (ini, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable = ) .tertentu (// Jika terjadi kesalahan ... // dapat dibuang -> {//...kemudian cetak yang berikut ini ke Logcat // Log.e (TAG, "Tidak dapat memuat yang dapat diurai"); kembalikan null;} ); } // Dengarkan acara onTap // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Jangkar jangkar = hitResult.createAnchor (); // Buat sebuah simpul tipe AnchorNode // AnchorNode anchorNode = new AnchorNode (anchor); // Hubungkan AnchorNode ke Scene // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Bangun simpul bertipe TransformableNode // TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // Hubungkan TransformableNode ke AnchorNode // transformableNode.setParent (anchorNode); // Lampirkan Renderable // transformableNode.setRenderable (dinoRenderable); // Set the node / / transformableNode.select ();}); } public boolean static checkDevice (aktivitas akhir aktivitas) {// Jika perangkat menjalankan Android Marshmallow atau sebelumnya ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... lalu cetak berikut ini untuk Logcat // Log.e (TAG, "Sceneform membutuhkan Android N atau lebih tinggi"); activity.finish (); return false; } String openGlVersionString = ((ActivityManager) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Periksa versi OpenGL ES // .getGlEsVersion (); // Jika perangkat menjalankan sesuatu yang kurang dari OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {// ... lalu cetak berikut ini ke Logcat // Log.e (TAG, " Memerlukan OpenGL ES 3.0 atau lebih tinggi "); activity.finish (); return false; } mengembalikan true; }}

Anda dapat mengunduh proyek yang sudah selesai dari GitHub.

Menguji aplikasi augmented reality Google ARCore Anda

Anda sekarang siap untuk menguji aplikasi Anda pada perangkat Android yang didukung fisik. Jika Anda tidak memiliki perangkat yang mendukung ARCore, maka dimungkinkan untuk menguji aplikasi AR Anda di Android Emulator (dengan sedikit konfigurasi tambahan, yang akan kita bahas di bagian selanjutnya).

Untuk menguji proyek Anda pada a fisik Perangkat Android:

  • Instal aplikasi Anda di perangkat target.
  • Saat diminta, berikan aplikasi akses ke kamera perangkat Anda.
  • Jika diminta untuk menginstal atau memperbarui aplikasi ARCore, ketuk "Lanjutkan" dan kemudian selesaikan dialog untuk memastikan Anda menjalankan versi ARCore terbaru dan terhebat.
  • Sekarang Anda akan melihat tampilan kamera, lengkap dengan animasi dari tangan yang memegang perangkat. Arahkan kamera ke permukaan datar dan gerakkan perangkat Anda dalam gerakan memutar, seperti yang ditunjukkan oleh animasi. Setelah beberapa saat, serangkaian titik akan muncul, menunjukkan bahwa sebuah pesawat telah terdeteksi.

  • Setelah Anda puas dengan posisi titik-titik ini, beri mereka ketukan - model 3D Anda sekarang akan muncul di pesawat pilihan Anda!

  • Cobalah bergerak secara fisik di sekitar model; tergantung pada lingkungan Anda, Anda mungkin dapat melakukan 360 derajat penuh di sekitarnya. Anda juga harus memeriksa bahwa objek tersebut menampilkan bayangan yang konsisten dengan sumber cahaya dunia nyata.

Menguji ARCore pada Perangkat Virtual Android

Untuk menguji aplikasi ARCore Anda di Android Virtual Device (AVD), Anda membutuhkan Android Emulator versi 27.2.9 atau lebih tinggi. Anda juga harus masuk ke Google Play store pada AVD Anda, dan mengaktifkan OpenGL ES 3.0 atau lebih tinggi.

Untuk memeriksa apakah OpenGL ES 3.0 atau lebih tinggi saat ini diaktifkan di AVD Anda:

  • Luncurkan AVD Anda, seperti biasa.
  • Buka jendela Terminal baru (Mac) atau Command Prompt (Windows).
  • Ubah direktori ("cd") sehingga Terminal / Command Prompt menunjuk ke lokasi program "adb" Android SDK Anda, misalnya perintah saya terlihat seperti ini:

Cd / Pengguna / jessicathornsby / Library / Android / SDK / platform-tools

  • Tekan tombol "Enter" di keyboard Anda.
  • Salin / tempel perintah berikutnya ke Terminal, lalu tekan tombol "Enter":

./adb logcat | grep eglMakeCurrent

Jika Terminal mengembalikan "ver 3 0" atau lebih tinggi, maka OpenGL ES dikonfigurasi dengan benar. Jika Terminal atau Command Prompt menampilkan sesuatu yang lebih awal dari 3.0, maka Anda harus mengaktifkan OpenGL ES 3.0:

  • Beralih kembali ke AVD Anda.
  • Temukan potongan tombol "Extended Control" yang melayang di samping Android Emulator, lalu pilih "Pengaturan> Lanjutan."
  • Arahkan ke "OpenGL ES API level> Renderer maksimum (hingga OpenGL ES 3.1)."
  • Mulai ulang emulator.

Di jendela Terminal / Command Prompt, salin / tempel perintah berikut ini dan kemudian tekan tombol "Enter"

./adb logcat | grep eglMakeCurrent

Anda sekarang harus mendapatkan hasil "ver 3 0" atau lebih tinggi, yang berarti OpenGL ES dikonfigurasi dengan benar.

Terakhir, pastikan AVD Anda menjalankan versi terbaru ARCore:

  • Buka halaman GitHub ARCore, dan unduh rilis ARCore terbaru untuk emulator. Misalnya, pada saat penulisan rilis terbaru adalah "ARCore_1.7.0.x86_for_emulator.apk"
  • Seret dan lepas APK ke AVD Anda yang sedang berjalan.

Untuk menguji proyek Anda pada AVD, instal aplikasi Anda dan berikan akses ke "kamera" AVD ketika diminta.

Anda sekarang akan melihat tampilan kamera dari ruang simulasi. Untuk menguji aplikasi Anda, berkeliling ruang virtual ini, menemukan permukaan datar yang disimulasikan, dan klik untuk menempatkan model pada permukaan ini.

Anda dapat memindahkan kamera virtual di sekitar ruang virtual, dengan menekan dan menahan tombol "Opsi" (macOS) atau "Alt" (Linux atau Windows), dan kemudian menggunakan salah satu pintasan keyboard berikut:

  • Bergerak ke kiri atau ke kanan. Tekan A atau D.
  • Pindah ke bawah atau ke atas. Tekan Q atau E.
  • Maju atau mundur. Tekan W atau S.

Anda juga dapat "bergerak" di sekitar adegan virtual, dengan menekan "Opsi" atau "Alt" dan kemudian menggunakan mouse Anda. Ini mungkin terasa sedikit kikuk pada awalnya, tetapi dengan latihan Anda harus bisa menjelajahi ruang virtual dengan sukses. Setelah Anda menemukan bidang yang disimulasikan, klik titik-titik putih untuk menempatkan model 3D Anda di permukaan ini.

Membungkus

Pada artikel ini, kami membuat aplikasi augmented reality sederhana, menggunakan ARCore dan plugin Sceneform.

Jika Anda memutuskan untuk menggunakan Google ARCore dalam proyek Anda sendiri, maka pastikan untuk membagikan kreasi Anda di komentar di bawah!

Jujur aja: Tak atu pun dari perangkat Mi Band Xiaomi yang pernah menjadi teknologi yang dirancang dengan angat baik, tetapi Mi Band 4 merupakan peningkatan. Ini maih alah atu pelacak kebugaran yang le...

Xiaomi Mi Band 4 adalah pelacak kebugaran ramah anggaran terbaru dari Xiaomi. Ini menggabungkan tampilan layar entuh berwarna, enor detak jantung optik, kemampuan untuk melacak ejumlah bear latihan, d...

Direkomendasikan Oleh Kami