Daftar Isi:

Augmented Reality Vuforia 7 Deteksi Pesawat Darat.: 8 Langkah
Augmented Reality Vuforia 7 Deteksi Pesawat Darat.: 8 Langkah

Video: Augmented Reality Vuforia 7 Deteksi Pesawat Darat.: 8 Langkah

Video: Augmented Reality Vuforia 7 Deteksi Pesawat Darat.: 8 Langkah
Video: Обнаружение наземной плоскости | Учебное пособие по дополненной реальности Vuforia Unity | Приложения дополненной реальности 2024, Juli
Anonim
Augmented Reality Vuforia 7 Deteksi Pesawat Darat
Augmented Reality Vuforia 7 Deteksi Pesawat Darat
Augmented Reality Vuforia 7 Deteksi Pesawat Darat
Augmented Reality Vuforia 7 Deteksi Pesawat Darat

SDK augmented reality Vuforia untuk Unity 3D menggunakan ARCore dan ARKit untuk mendeteksi pesawat darat di AR. Tutorial hari ini akan menggunakan integrasi asli mereka di Unity untuk membuat aplikasi AR untuk Android atau iOS. Kita akan melihat mobil jatuh dari langit ke tanah, dan pintunya akan terbuka secara otomatis saat kita mendekat. Kami juga akan melakukan video di AR. Untuk mengikutinya, Anda perlu menginstal Unity 3D di komputer Anda (gratis). Instruksi ini untuk pemula total jadi kami akan membahas semuanya secara detail!

Bagian terbaik tentang SLAM Vuforia adalah jumlah perangkat iOS dan Android yang didukungnya. Daftar perangkat lengkap dapat ditemukan di sini:

library.vuforia.com/articles/Solution/grou…

Langkah 1: Mulai Proyek Baru

Mulai Proyek Baru
Mulai Proyek Baru

Unduh Unity 3D dari sini jika Anda belum memilikinya:

Pastikan untuk menginstal dukungan untuk Vuforia Augmented Reality dan Android atau iOS tergantung pada perangkat yang Anda miliki.

Buka Unity dan mulai proyek Unity baru, beri nama apa pun yang Anda inginkan.

Pertama, mari kita keluar dari pengaturan aplikasi untuk membangun agar kita tidak lupa. Jadi, simpan adegan dan beri nama "utama".

Buka file, pengaturan build, dan alihkan platform build Anda ke Android atau iOS. Arahkan ke pengaturan XR di pengaturan pemutar dan centang Vuforia Augmented Reality Didukung.

Jika Anda menggunakan Android, Anda tidak perlu melakukan hal lain, tetapi di iOS buka pengaturan lain dan pastikan untuk memasukkan sesuatu untuk pengidentifikasi bundel Anda. Gunakan format "com. NamaPerusahaanAnda. NamaAplikasiAnda".

Masukkan apa pun untuk deskripsi penggunaan kamera dan ubah versi build minimum target menjadi setidaknya 9.0.

Tutup dari itu dan sekarang mari kita siapkan semuanya.

Langkah 2: Mari Siapkan Vuforia

Mari Mengatur Vuforia
Mari Mengatur Vuforia

Sekarang mari kita siapkan semuanya.

Pergi ke gameobject di menu atas dan klik ARCamera. Sekarang hapus kamera utama dari adegan Anda.

Pilih ARCamera dan di sisi kanan di inspektur klik Buka Konfigurasi Vuforia. Klik kumpulan dataset dan hapus centang semuanya karena kami tidak menggunakan target gambar apa pun di sini.

Klik pada pelacak perangkat dan klik lacak pose perangkat. Ubah pelacakan dari rotasi ke posisional.

Sekarang kembali ke tab objek game dan klik Vuforia, Ground Plane, dan Plane finder. Ini menampung skrip yang menemukan bidang tanah kami.

Hal terakhir yang kita butuhkan adalah ground plane stage, jadi pergi ke game object lagi di menu atas, dan klik Vuforia, Ground Plane, dan pilih Ground Plane Stage. Sekarang apa pun yang kita anak ini akan muncul di AR.

Langkah 3: Tambahkan Skrip Baru

Tambahkan Skrip Baru
Tambahkan Skrip Baru
Tambahkan Skrip Baru
Tambahkan Skrip Baru

Perilaku default deteksi bidang tanah ini adalah menempatkan objek baru setiap kali Anda menekan layar. Yang kami inginkan hanyalah memposisikan ulang objek setiap kali Anda menekan layar. Jadi klik kanan di folder aset Anda dan buat skrip C# baru. Sebut saja "DeployStageOnce" dan ganti semuanya dengan kode ini:

menggunakan Sistem;

menggunakan UnityEngine; menggunakan Vuforia; kelas publik DeployStageOnce: MonoBehaviour { publik GameObject AnchorStage; PositionalDeviceTracker pribadi _deviceTracker; GameObject pribadi _previousAnchor; public void Mulai () { if (AnchorStage == null) { Debug. Log("AnchorStage harus ditentukan"); kembali; } AnchorStage. SetActive(salah); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } private void OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(Hasil HitTestResult) { if (hasil == null || AnchorStage == null) { Debug. LogWarning("Tes hit tidak valid atau AnchorStage tidak disetel"); kembali; } var jangkar = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), hasil); if (jangkar != null) { JangkarStage.transform.parent = jangkar.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive(benar); } if (_previousAnchor != null) { Hancurkan(_previousAnchor); } _previousAnchor = jangkar; } }

Untuk memastikan skrip ini digunakan, kita perlu memanggil fungsi OnInteractiveHitTest() jadi kembali ke Unity dan klik objek game plane finder. Ubah mode dari Otomatis ke Interaktif. Seret skrip yang baru saja kita buat ke objek game pencari pesawat. Hapus skrip ContentPositioningBehavior. Anda akan melihat tempat untuk objek game pada skrip DeployStageOnce, seret pencari bidang ke sana, dan temukan skrip ini, pilih fungsi OnInteractiveHitTest dari bagian atas daftar. Sekarang fungsi kita akan dipanggil setiap kali pengguna mengklik layar!

Langkah 4: Mari Tambahkan Mobil

Mari Tambahkan Mobil
Mari Tambahkan Mobil

Unduh model 3D mobil gratis ini dari sini (Pastikan untuk mendapatkan versi.obj):

www.turbosquid.com/3d-models/max-exterior-…

Juga, unduh suara ini karena kita akan memainkannya ketika mobil menyentuh tanah:

freesound.org/people/PaulMorek/sounds/1967…

Buka zip kedua file itu dan seret ke folder aset Anda.

Klik pada mobil dan lihat ke kanan, ubah Use Embedded Materials menjadi Use External Materials (Legacy) dari menu drop down di atas. Sekarang kita akan dapat mengubah warna semua bahan pada mobil.

Seret mobil ke panggung ground plane Anda membuatnya menjadi anak-anak. Ubah skala menjadi 0,035 pada x, y, dan z.

Sekarang pergi melalui masing-masing objek permainan anak mobil dan ubah bahannya menjadi warna apa pun yang Anda inginkan.

Tambahkan komponen bodi kaku ke objek permainan akar mobil dan juga tambahkan kotak tumpat, skalakan sehingga menutupi seluruh mobil. Juga tambahkan sebuah kotak penumbuk ke tahap bidang dasar dan skalakan sehingga beberapa kali lebih lebar dari tahap bidang dasar. Dengan cara ini kita bisa menjatuhkan mobil dari langit dan akan menabrak tanah menggunakan mesin fisika bawaan Unity.

Langkah 5: Letakkan Mobil di Langit

Letakkan Mobil di Langit
Letakkan Mobil di Langit

Tambahkan komponen sumber audio ke objek permainan root mobil, seret suara tabrakan mobil ke tempat klip audionya.

Sekarang kita perlu membuat skrip yang akan menempatkan mobil ke udara saat pengguna menekan layar dan kemudian memutar suara tabrakan saat mobil menyentuh tanah. Jadi, klik kanan di folder assets dan buat skrip C# baru dan beri nama "CarController."

Ganti semua kode di sana dengan ini:

menggunakan System. Collections;

menggunakan System. Collections. Generic; menggunakan UnityEngine; kelas publik CarController: MonoBehaviour { private bool soundPlayed = false; // Update dipanggil sekali per frame void Update () { if (!soundPlayed && transform.localPosition.y <.05f) { soundPlayed = true; StartCoroutine (DelayPlaySound ()); } } public void MoveCar(){ transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += new Vector3 (5, 20, 5); soundPlayed = salah; } IEnumerator DelayPlaySound(){ menghasilkan kembali WaitForSeconds baru (.2f); GetComponent (). Putar (); } }

Tambahkan fungsi MoveCar pada event OnInteractiveHitTest seperti pada gambar di atas. Sekarang akan dipanggil ketika pengguna mengklik layar.

Langkah 6: Pintu Lambo

Pintu Lambo
Pintu Lambo

Jadi jika Anda memperluas objek permainan mobil dan menemukan pintunya, Anda akan melihat kedua pintu adalah satu jala tunggal. Jika kami ingin membuka pintu, satu-satunya pilihan kami adalah pintu Lambo yang terbuka secara vertikal. Untuk membuat ini berfungsi, pertama-tama kita harus mengubah titik pivotnya.

Buatlah objek permainan kosong yang merupakan anak dari mobil. Seret pintu masuk dan jadikan mereka anak dari objek game baru ini. Pindahkan objek game induk ke tempat titik pivot seharusnya, dengan engsel pintu. Sekarang pindahkan pintu anak kembali ke tempatnya. Sekarang ketika kita memutar pintu induk, titik pivot berada di tempat yang tepat.

Kami akan membuat skrip yang membuka pintu ketika Anda mendekati mobil tetapi sebelum kami melakukannya, kami membutuhkan cara untuk "memicu" acara tersebut. Tambahkan penumbuk kotak ke objek permainan induk pintu Anda dan skalakan sehingga sedikit melewati mobil di kedua arah. Centang "isTrigger". Sekarang tambahkan penumbuk kotak ke kamera utama dan skalakan dengan tepat. Periksa juga "isTrigger". Tambahkan komponen Rigid Body ke kamera Anda dan hapus centang "useGravity". Dengan kamera Anda dipilih, ubah tag ke "MainCamera" di bagian atas inspektur.

Tambahkan skrip baru bernama "LamboDoorBehavior" dan tambahkan kode di bawah ini. Seret skrip ke induk pintu Anda.

menggunakan System. Collections;

menggunakan System. Collections. Generic; menggunakan UnityEngine; kelas publik LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; float pribadi yang diinginkanAngle = 0; // Update dipanggil sekali per frame void Update () { currAngle = Mathf. LerpAngle (currAngle, keinginanAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors(){ sudut yang diinginkan = 60f; } public void CloseDoors(){ sudut yang diinginkan = 0; } void OnTriggerEnter(Collider col){ if (col. CompareTag ("MainCamera")) { OpenDoors (); } } void OnTriggerExit(Collider col){ if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }

Skrip ini akan menyebabkan pintu Anda terbuka perlahan ketika Anda menutupnya di AR dengan menggunakan fungsi Lerp() dalam kesatuan yang menginterpolasi antara dua titik (atau dalam hal ini dua sudut).

Langkah 7: Memutar Video di AR

Memutar Video di AR
Memutar Video di AR
Memutar Video di AR
Memutar Video di AR

Hal terakhir yang perlu kita lakukan adalah memutar video dalam AR.

Klik kanan pada objek game apa pun yang merupakan anak dari mobil Anda dan buat objek 3D, Quad. Ini akan memastikan quad adalah anak dari mobil Anda. Posisikan dan ubah ukuran quad ini sedemikian rupa sehingga pas di dalam dasbor mobil Anda dan terlihat seperti seharusnya ada di sana. Ini adalah video yang akan kita putar.

Tambahkan komponen pemutar video ke quad Anda. Ubah sumber ke URL dan temukan tautan keras ke file. MP4 atau seret file video ke folder aset Anda, lalu seret klip itu ke slot kosong. Jika Anda ingin melakukan streaming dalam video dari URL, Instragram adalah sumber yang bagus. Klik kanan pada video Instagram apa pun di Google Chrome dan klik periksa. Temukan div yang berisi video dan salin tautannya dari sana (saya memiliki metode ini seperti yang digambarkan di atas).

Pastikan untuk memeriksa loop jika Anda ingin bermain lebih dari sekali. Tambahkan komponen sumber audio ke objek game ini dan ubah sumber output menjadi sumber audio pada pemutar video. Seret sumber audio yang baru Anda buat ke dalam slot itu.

Akhirnya kita selesai!

Langkah 8: Letakkan Aplikasi di Ponsel Anda

Letakkan Aplikasi di Ponsel Anda!
Letakkan Aplikasi di Ponsel Anda!

Jika Anda sedang membangun untuk Android, Anda bisa pergi ke file dan tekan build and run dengan ponsel Anda terhubung.

Jika Anda membangun iPhone atau iPad, pastikan untuk mengunduh Xcode dari app store. Juga, daftar untuk mendapatkan akun pengembang apel gratis dari www.apple.developer.com. Buka file dan tekan build. Buka file yang dibuat dari Xcode dan colokkan ponsel Anda. Pilih tim pengembangan Anda dan tekan tombol putar.

Anda mungkin harus menggerakkan kamera sedikit tetapi tunggu sebentar dan ketuk layar dan Anda akan melihat mobil Anda jatuh dari langit ke tanah! Sekarang Anda dapat masuk ke dalam dan menonton video Anda diputar di dasbor!

Bersenang-senang dan beri tahu saya jika Anda memiliki pertanyaan di komentar!

Direkomendasikan: