Daftar Isi:

Menempatkan Objek AR di Koordinat GPS di Augmented Reality: 8 Langkah (dengan Gambar)
Menempatkan Objek AR di Koordinat GPS di Augmented Reality: 8 Langkah (dengan Gambar)

Video: Menempatkan Objek AR di Koordinat GPS di Augmented Reality: 8 Langkah (dengan Gambar)

Video: Menempatkan Objek AR di Koordinat GPS di Augmented Reality: 8 Langkah (dengan Gambar)
Video: AFRAME Tutorial 25 : Location Based AR | ARJS | Geolocation | WebGL Framework 2024, Desember
Anonim
Menempatkan Objek AR di Koordinat GPS di Augmented Reality
Menempatkan Objek AR di Koordinat GPS di Augmented Reality

Instruksi ini akan membahas pembuatan aplikasi seluler untuk menempatkan objek AR pada koordinat GPS dengan ARkit dan ARCore menggunakan Unity3D. Saya akan memandu Anda dalam menyiapkan proyek yang saya buat menggunakan Mapbox yang memungkinkan kita untuk menandai pesan di lokasi GPS tertentu dan menulisnya ke database GameSparks.

Semua perangkat lunak dan proyek yang akan kami gunakan di sini gratis.

Unduh Unity 3D di sini jika Anda belum memilikinya:

unity3d.com/

Langkah 1: Rintangan…

Lari gawang…
Lari gawang…

Jadi ini bukan aplikasi termudah untuk dibuat dengan keterbatasan GPS seluler dan kompas seluler saat ini.

Sejujurnya objek muncul di tempat yang seharusnya mungkin sekitar 50% dari waktu. Jadi hasilnya tidak terlalu bagus, tetapi semakin akurat semakin dekat Anda dengan objek.

Either way, saya pikir cara yang lebih baik untuk AR berbasis GPS pada saat ini adalah menggunakan peta seperti pokemon go dan ketika Anda mendekati suatu objek, kamera terbuka dan Anda hanya melihat objek itu tepat di depan Anda. Di masa depan saya ingin melakukan tutorial lengkap tentang implementasi yang lebih sederhana seperti itu.

Either way saya telah menggunakan Mapbox sebelumnya dan saya tahu mereka memiliki kelas konversi yang memiliki fungsi untuk mengubah koordinat GPS ke koordinat dunia Unity. Saya pikir saya bisa memasukkan beberapa koordinat GPS dan mereka akan muncul di tempat yang saya inginkan. Tidak berhasil.

Objek muncul dengan benar relatif satu sama lain tetapi mereka tidak pernah berada di tempat yang tepat. Jadi saya melakukan riset dan menemukan bahwa Kamera Unity saya perlu disejajarkan dengan utara yang sebenarnya agar objek muncul di tempat yang tepat.

Masalahnya adalah kompas di ponsel Anda tidak pernah benar-benar akurat.

Langkah 2: Kompas Bodoh

Kompas Bodoh
Kompas Bodoh
Kompas Bodoh
Kompas Bodoh

Masalah utama adalah ketika Anda menempatkan objek jauh dari kamera, jika ide ponsel Anda tentang utara yang sebenarnya tidak aktif bahkan beberapa derajat, objek di kejauhan akan tampak sangat jauh.

Saya hampir menyerah pada usaha ini tetapi seorang teman memberi tahu saya tentang proyek GitHub ini:

github.com/mapbox/mapbox-ar-unity

Ini adalah upaya untuk melakukan AR "skala dunia" dari Mapbox di mana objek ditambatkan ke koordinat GPS sehingga pengalaman Augmented Reality dapat bekerja di luar jarak jauh, bukan hanya di dalam ruangan kecil di rumah Anda.

Proyek mereka menggunakan delta Posisi AR dan delta Posisi GPS untuk menghitung sudut yang merupakan offset dari kamera AR ke utara yang sebenarnya. Jadi pada dasarnya ambil satu pembacaan GPS saat pengguna memulai aplikasi dan minta mereka berjalan dalam garis lurus dan lakukan pembacaan GPS lainnya. Kemudian dengan dua titik ini Anda dapat mengetahui arah mana orang itu berjalan (dengan asumsi kamera mereka menunjuk ke arah mereka berjalan). Mereka menemukan bahwa ini lebih akurat daripada menggunakan kompas di telepon.

Masalah lain yang mereka coba selesaikan adalah penyimpangan dengan ARkit. Pelacakan baik-baik saja di dalam ruangan kecil tetapi ketika Anda berjalan di luar jarak jauh, objek AR akhirnya melayang jauh dari tempat yang seharusnya.

Langkah 3: Akhirnya Solusi

Akhirnya Solusi!
Akhirnya Solusi!

Jadi proyek Mapbox ini menawarkan cara untuk mendapatkan arah hadap yang andal relatif terhadap utara yang sebenarnya sehingga yang tersisa hanyalah menempatkan objek di dunia.

Saya akhirnya memperluas contoh ini sedikit sehingga saya bisa menandai pesan teks di lokasi GPS tertentu dan kemudian menulis informasi itu ke database GameSparks. Itulah yang akan saya tunjukkan cara menggunakannya.

Satu-satunya masalah dengan proyek ini adalah Anda harus mendapatkan keselarasan yang baik sebelum dapat digunakan.

Yang saya maksud dengan alignment adalah karena Mapbox menggunakan delta posisi untuk menghitung heading, ketika Anda pertama kali membuka aplikasi dan Anda harus memastikan ground plane terdeteksi dan kemudian berjalan dalam garis lurus untuk sementara waktu hingga alignment yang tepat dihitung.

Dalam hal ini UX adalah rintangan lain tetapi dalam peningkatan proyek mereka memberikan contoh menempatkan kubus di depan pengguna untuk dilalui untuk memastikan keselarasan yang baik.

Jadi sekarang setelah Anda mengetahui batasan proyek ini, izinkan saya menunjukkan cara menggunakannya agar teman-teman bisa bermain-main. Anda akhirnya harus membuat akun mapbox dan akun gamesparks yang keduanya gratis. Saya menggunakan gamesparks agar saya dapat menyimpan koordinat GPS di suatu tempat karena selama pengujian Anda akan sering memulai ulang dan membangun kembali aplikasi.

Juga, ini harus bekerja dengan ARkit dan ARcore tetapi saya hanya memiliki iPhone saat ini sehingga hanya itu yang bisa saya uji.

Langkah 4: Biarkan Aplikasi Bekerja

Biarkan Aplikasi Bekerja!
Biarkan Aplikasi Bekerja!

Pertama-tama unduh proyek ini dari GitHub:

Simpan file ke desktop Anda dan buka di Unity.

Buka file, buat pengaturan, dan alihkan platform Anda ke Android atau iOS.

Sekarang buka Mapbox.com dan buat akun jika Anda belum memilikinya.

Ambil kunci API Anda dan kembali ke Unity, klik tab Mapbox di bagian atas, dan klik konfigurasikan. Tempelkan kunci API Anda di sana.

Sekarang buat akun di GameSparks.com dan klik tombol di kanan atas untuk membuat aplikasi baru.

Sebut saja apa pun yang Anda inginkan dan salin kunci API dan rahasia aplikasi Anda. Kembali ke Unity dan temukan tab GameSparks di bagian atas. Klik konfigurasikan dan tempel kredensial Anda di sana juga.

Langkah 5: Konfigurasikan GameSparks

Konfigurasikan GameSparks
Konfigurasikan GameSparks

Sekarang sebelum aplikasi bekerja, kita perlu mengkonfigurasi database kita.

GameSparks menggunakan noSQL jadi pertama-tama kita harus membuat koleksi dan menambahkan kejadian yang digunakan aplikasi kita untuk membaca, menulis, dan menghapus dari server.

Pertama buat koleksi baru di situs GameSparks dan beri nama apa pun yang Anda inginkan.

Sekarang kita perlu membuat 3 acara.

Hal pertama yang perlu dilakukan aplikasi adalah menulis objek pesan ke database.

Sebuah pesan memiliki garis lintang, garis bujur, dan kemudian teks pesan.

Jadi, buka configurator dan tambahkan acara baru. Buat kode pendek "SAVE_GEO_MESSAGE".

Masukkan apa pun yang Anda inginkan untuk nama dan deskripsi.

Tambahkan kode pendek untuk 3 atribut:

"LAT" "LON"

"TEKS"

Setel setiap tipe data ke string dan setel nilai default ke 0. Jadikan tipe agregasi default masing-masing menjadi "digunakan dalam skrip."

Langkah 6: Tambahkan Acara Terakhir…

Tambahkan Acara Terakhir…
Tambahkan Acara Terakhir…

Aplikasi juga perlu memuat semua pesan dari database dan membacanya ke Unity saat aplikasi dimulai sehingga kita dapat menempatkan pesan AR yang disimpan dalam database.

Buat acara lain dan beri nama "LOAD_MESSAGE"

Acara ini tidak memerlukan atribut apa pun. Sekali lagi masukkan apa pun yang Anda inginkan untuk nama dan deskripsi.

Lakukan hal yang sama untuk acara lain dan beri nama "REMOVE_MESSAGES"

Ini bahkan tidak membutuhkan atribut apa pun.

Sekarang hal terakhir yang perlu kita lakukan adalah menambahkan beberapa "kode cloud" atau kode sisi server yang dipanggil ketika setiap peristiwa dimulai dari aplikasi kita.

Langkah 7: Tambahkan Kode Cloud

Di GameSparks, buka konfigurator dan kode cloud.

Kita perlu menambahkan skrip ke setiap acara yang baru saja kita buat.

Dalam acara LOAD_MESSAGE tambahkan kode ini dan simpan:

var messageData = Spark.runtimeCollection("GeoMessage");

var kursor = messageData.find();

var allMessages = ;

while(kursor.hasNext()) {

var obj = kursor.berikutnya();

hapus(obj ["_id"]);

allMessages.push(obj);

}

Spark.setScriptData("all_Messages", allMessages); // kembalikan semua data

Dalam acara REMOVE_MESSAGES tambahkan kode ini:

var messageData = Spark.runtimeCollection("GeoMessage");

messageData.remove({});

Akhirnya di acara SAVE_MESSAGES tambahkan ini:

var geoMessageList = Spark.runtimeCollection("GeoMessage");

var messageLat = Spark.getData(). LAT;

var messageLon = Spark.getData(). LON;

var messageText = Spark.getData(). TEXT;

var pesan saat ini = {

"messLat": pesanLat,

"messLon": messageLon,

"messText": pesanTeks,

};

geoMessageList.insert(currentMessage);

Langkah 8: KITA SELESAI

KAMI SELESAI!
KAMI SELESAI!

Proyek ini menggunakan ID unik perangkat Anda untuk mengautentikasi dengan server GameSparks sehingga Anda sekarang dapat kembali ke Unity dan mengeklik putar, dan Anda akan melihat di konsol "perangkat diautentikasi…"

Sekarang buka file, build settings, dan klik build. Jika Anda belum pernah membuat aplikasi untuk Android atau iOS, Anda mungkin perlu menyiapkan akun pengembangan dengan Google atau Apple.

Setelah aplikasi ada di ponsel Anda, Anda harus terlebih dahulu memastikan ARKit atau ARCore mendeteksi pesawat darat. Sekarang klik tombol log di sudut kiri bawah. Berjalan maju beberapa langkah dan Anda akan melihat "penyelarasan yang dihitung" muncul dengan warna biru muda. Sekarang tombol UI akan muncul dan jika ada pesan yang dimuat di database Anda, mereka akan ditempatkan di dunia.

Untuk menandai pesan GPS AR baru di suatu tempat, berjalanlah ke lokasi yang Anda inginkan untuk pesan tersebut dan klik ikon pesan di kanan atas layar. Ketik pesan apa pun yang Anda inginkan dan klik tombol pin!

Direkomendasikan: