Isi kandungan:

Meletakkan Objek AR di Koordinat GPS dalam Kenaikan Augmented: 8 Langkah (dengan Gambar)
Meletakkan Objek AR di Koordinat GPS dalam Kenaikan Augmented: 8 Langkah (dengan Gambar)

Video: Meletakkan Objek AR di Koordinat GPS dalam Kenaikan Augmented: 8 Langkah (dengan Gambar)

Video: Meletakkan Objek AR di Koordinat GPS dalam Kenaikan Augmented: 8 Langkah (dengan Gambar)
Video: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Julai
Anonim
Meletakkan Objek AR di Koordinat GPS dalam Augmented Reality
Meletakkan Objek AR di Koordinat GPS dalam Augmented Reality

Pengajaran ini akan membuat aplikasi mudah alih untuk meletakkan objek AR pada koordinat GPS dengan ARkit dan ARCore menggunakan Unity3D. Saya akan memandu anda untuk membuat projek yang saya buat menggunakan Mapbox yang membolehkan kami menandai mesej di lokasi GPS tertentu dan menulisnya ke pangkalan data GameSparks.

Semua perisian dan projek yang akan kami gunakan di sini adalah percuma.

Muat turun Unity 3D di sini jika anda belum memilikinya:

unity3d.com/

Langkah 1: Rintangan…

Rintangan…
Rintangan…

Oleh itu, ini bukan aplikasi termudah untuk dibuat dengan had semasa GPS mudah alih dan kompas mudah alih.

Sejujurnya objek muncul di tempat yang sepatutnya sekitar 50% masa. Jadi hasilnya tidak bagus, tetapi hasilnya menjadi lebih tepat apabila anda semakin dekat dengan objek.

Walau apa pun, saya rasa cara yang lebih baik untuk AR berdasarkan GPS pada ketika ini adalah menggunakan peta seperti yang dilakukan oleh pokemon dan ketika anda menghampiri objek, kamera akan terbuka dan anda hanya melihat objek itu di hadapan anda. Pada masa akan datang saya ingin membuat tutorial lengkap mengenai pelaksanaan yang lebih mudah seperti itu.

Sama ada cara saya menggunakan Mapbox sebelum ini dan saya tahu mereka mempunyai kelas penukaran yang mempunyai fungsi untuk menukar koordinat GPS ke koordinat dunia Unity. Saya fikir saya hanya dapat memasukkan beberapa koordinat GPS dan mereka akan muncul di tempat yang saya mahukan. Tidak berjaya.

Benda-benda itu kelihatan saling berkaitan dengan betul tetapi tidak pernah berada di tempat yang betul. Oleh itu, saya melakukan penyelidikan dan mendapati bahawa Kamera Perpaduan saya perlu diselaraskan dengan utara yang benar agar objek dapat muncul di tempat yang betul.

Masalahnya ialah kompas di telefon anda tidak pernah tepat.

Langkah 2: Kompas Bodoh

Kompas bodoh
Kompas bodoh
Kompas bodoh
Kompas bodoh

Masalah utama adalah ketika anda meletakkan objek jauh dari kamera, jika idea telefon anda tentang utara benar-benar mati walaupun beberapa darjah, objek di kejauhan akan muncul sangat jauh.

Saya hampir menyerah dalam usaha ini tetapi seorang rakan memberitahu saya mengenai projek GitHub ini:

github.com/mapbox/mapbox-ar-unity

Ini adalah usaha untuk melakukan AR "skala dunia" dari Mapbox di mana objek berlabuh ke koordinat GPS sehingga pengalaman Augmented Reality dapat berfungsi di luar jarak jauh dan bukan hanya di dalam sebuah ruangan kecil di rumah anda.

Projek mereka menggunakan delta Posisi AR dan delta Posisi GPS untuk mengira sudut yang merupakan ofset dari kamera AR ke utara sebenarnya. Oleh itu, ambil satu bacaan GPS semasa pengguna memulakan aplikasi dan minta mereka berjalan dalam garis lurus dan membaca GPS yang lain. Kemudian dengan dua titik ini anda dapat mengetahui arah mana orang itu berjalan (dengan anggapan kamera mereka menunjuk ke arah yang mereka jalani). Mereka mendapati bahawa ini lebih tepat daripada menggunakan kompas di telefon.

Masalah lain yang mereka cuba selesaikan adalah drift dengan ARkit. Penjejakan adalah baik di dalam sebuah bilik kecil tetapi ketika anda di luar berjalan jauh, objek AR akhirnya melayang jauh dari tempat yang sepatutnya.

Langkah 3: Akhirnya Penyelesaian

Akhirnya Penyelesaian!
Akhirnya Penyelesaian!

Oleh itu, projek Mapbox ini menawarkan cara untuk mendapatkan arah menghadap yang boleh dipercayai berbanding utara yang benar sehingga yang tinggal hanyalah meletakkan objek di dunia.

Saya akhirnya memberikan contoh ini sedikit sehingga saya dapat menandai mesej teks di lokasi GPS tertentu dan kemudian menulis maklumat tersebut ke pangkalan data GameSparks. Itulah yang akan saya tunjukkan kepada anda bagaimana menggunakan.

Satu-satunya masalah dengan projek ini ialah anda mesti mendapatkan penjajaran yang baik sebelum dapat digunakan.

Apa yang saya maksudkan dengan penjajaran ialah kerana Mapbox menggunakan delta kedudukan untuk mengira tajuk, ketika pertama kali membuka aplikasi dan anda harus memastikan satah tanah dikesan dan kemudian berjalan dalam garis lurus sebentar sehingga penjajaran yang tepat dikira.

Dalam pengertian ini, UX adalah rintangan lain tetapi dalam penambahbaikan projek, mereka memberikan contoh meletakkan kubus di depan pengguna untuk dilalui untuk memastikan penjajaran yang baik.

Oleh itu, setelah anda mengetahui batasan projek ini, izinkan saya menunjukkan kepada anda bagaimana menggunakannya supaya lelaki boleh bermain-main. Anda akhirnya perlu membuat akaun kotak peta dan akaun permainan permainan yang kedua-duanya percuma. Saya menggunakan taman permainan supaya saya dapat menyimpan koordinat GPS di suatu tempat kerana semasa menguji anda akan memulakan semula dan membina semula aplikasi dengan kerap.

Juga, ini mesti berfungsi dengan ARkit dan ARcore tetapi saya hanya mempunyai iPhone pada masa ini sehingga hanya itu yang dapat saya uji.

Langkah 4: Mari Dapatkan Aplikasi Berfungsi

Mari Dapatkan Aplikasi Berfungsi!
Mari Dapatkan Aplikasi Berfungsi!

Perkara pertama memuat turun projek ini dari GitHub:

Simpan fail ke desktop anda dan buka di Unity.

Pergi ke fail, bina tetapan, dan ubah platform anda ke Android atau IOS.

Sekarang pergi ke Mapbox.com dan buat akaun jika anda belum memilikinya.

Ambil kunci API anda dan kembali ke Unity, klik tab Mapbox di bahagian atas, dan klik konfigurasikan. Tampal kunci API anda di sana.

Sekarang buat akaun di GameSparks.com dan klik butang di kanan atas untuk membuat aplikasi baru.

Sebut saja apa sahaja yang anda mahukan dan salin kunci API dan rahsia aplikasi anda. Kembali ke Unity dan cari tab GameSparks di bahagian atas. Klik pada konfigurasi dan tampal kelayakan anda di sana juga.

Langkah 5: Konfigurasikan GameSparks

Konfigurasikan GameSparks
Konfigurasikan GameSparks

Sekarang sebelum aplikasi berfungsi, kita perlu mengkonfigurasi pangkalan data kita.

GameSparks menggunakan noSQL jadi pertama-tama kita perlu membuat koleksi dan menambahkan peristiwa yang digunakan aplikasi kita untuk membaca, menulis, dan menghapus dari pelayan.

Mula-mula buat koleksi baru di laman web GameSparks dan namakan apa sahaja yang anda mahukan.

Sekarang kita perlu membuat 3 acara.

Perkara pertama yang perlu dilakukan aplikasi adalah menulis objek mesej ke pangkalan data.

Mesej mempunyai garis lintang, garis bujur, dan kemudian teks mesej.

Oleh itu, pergi ke konfigurator dan tambahkan acara baru. Buat kod pendek "SAVE_GEO_MESSAGE".

Masukkan apa sahaja yang anda mahukan untuk nama dan keterangan.

Tambahkan kod pendek untuk 3 atribut:

"LAT" "LON"

"TEKS"

Tetapkan setiap jenis data ke string dan tetapkan nilai lalai ke 0. Jadikan jenis agregasi lalai masing-masing menjadi "digunakan dalam skrip."

Langkah 6: Tambahkan Acara Akhir …

Tambahkan Acara Akhir …
Tambahkan Acara Akhir …

Aplikasi ini juga perlu memuatkan semua pesan dari pangkalan data dan membacanya ke dalam Unity ketika aplikasi dimulakan sehingga kita dapat meletakkan pesan AR yang tersimpan di dalam pangkalan data.

Buat acara lain dan panggil "LOAD_MESSAGE"

Acara ini tidak memerlukan atribut. Sekali lagi meletakkan apa sahaja yang anda mahukan untuk nama dan keterangan.

Lakukan perkara yang sama untuk acara lain dan namakan "REMOVE_MESSAGES"

Ini juga tidak memerlukan atribut.

Sekarang perkara terakhir yang perlu kita lakukan adalah menambahkan beberapa "kod awan" atau kod sisi pelayan yang dipanggil ketika setiap acara dimulakan dari aplikasi kita.

Langkah 7: Tambahkan Kod Awan

Dalam GameSparks pergi ke konfigurasi dan kod awan.

Kita perlu menambahkan skrip untuk setiap acara yang baru kita buat.

Dalam acara LOAD_MESSAGE, tambahkan kod ini dan simpan:

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

kursor var = messageData.find ();

var allMessages = ;

sementara (kursor.hasNext ()) {

var obj = kursor.next ();

padam (obj ["_id"]);

allMessages.push (obj);

}

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

Dalam acara REMOVE_MESSAGES tambahkan kod ini:

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

messageData.remove ({});

Akhirnya dalam acara SAVE_MESSAGES tambahkan ini:

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

var messageLat = Spark.getData (). LAT;

var messageLon = Spark.getData (). LON;

var messageText = Spark.getData (). TEKS;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

Langkah 8: KAMI SELESAI

KITA SUDAH SELESAI!
KITA SUDAH SELESAI!

Projek ini menggunakan ID unik peranti anda untuk mengesahkan dengan pelayan GameSparks sehingga kini anda dapat kembali ke Unity dan klik main, dan anda akan melihat di konsol "peranti disahkan …"

Sekarang pergi ke fail, tetapan build, dan klik build. Sekiranya anda tidak pernah membuat aplikasi untuk Android atau IOS, anda mungkin perlu menyediakan akaun pengembangan dengan Google atau Apple.

Setelah aplikasi berada di telefon anda, anda perlu memastikan terlebih dahulu bahawa ARKit atau ARCore mengesan pesawat darat. Sekarang klik butang log di sudut kiri bawah. Berjalan ke hadapan beberapa langkah dan anda akan melihat "penjajaran terkomputeran" muncul dengan warna biru muda. Kini butang UI akan muncul dan jika ada mesej yang dimuatkan dalam pangkalan data anda, ia akan ditempatkan di dunia.

Untuk menandai mesej AR GPS baru, pergi ke lokasi yang anda inginkan dan klik ikon mesej di sebelah kanan atas skrin. Taipkan mesej apa sahaja yang anda mahukan dan klik butang pin!

Disyorkan: