Verifikasi bring-up ekstensi headset
Hal terpenting sekaligus paling menantang agar EasyAR dapat bekerja di perangkat adalah memastikan kebenaran data input. Saat EasyAR pertama kali dijalankan di perangkat baru, lebih dari 90% masalah disebabkan oleh data yang salah.
Jika memungkinkan, disarankan untuk memverifikasi kebenaran data secara langsung menggunakan perangkat dan antarmukanya dengan metode pengujian sebelum memperkenalkan EasyAR. Artikel ini menjelaskan pendekatan berbasis pengalaman untuk memverifikasi data dengan fitur EasyAR. Proses ini dapat membantu memahami external-input-frame, tetapi karena EasyAR sendiri juga memiliki error, menggunakan sistem yang saling terhubung ini untuk memverifikasi kebenaran data bukanlah pilihan terbaik.
Sebelum mulai
- Selesaikan pengembangan Mengaktifkan dukungan headset untuk EasyAR.
- Baca Quickstart untuk mempelajari cara menggunakan EasyAR Sense Unity Plugin.
- Pelajari cara menggunakan contoh headset.
- Pahami konfigurasi proyek Android.
Menjalankan contoh fungsi dasar
Saat pertama kali memverifikasi EasyAR di perangkat, pastikan untuk menjalankan fitur-fitur ini secara berurutan. Jangan tergesa-gesa mencoba Mega, karena Mega memiliki toleransi kesalahan yang dapat menyembunyikan masalah saat dijalankan singkat atau dalam satu skenario dunia nyata saja.
Amati informasi session yang ditampilkan, pastikan tidak ada kejadian tak terduga, dan pastikan frame count terus bertambah.
Jalankan
Image, yaitu fitur Pelacakan Gambar, lalu bandingkan hasilnya dengan perangkat ponsel (disarankan iPhone sebagai acuan). Perhatikan status tracking dan tampilan target overlay.Tanpa motion fusion yang diaktifkan, pelacakan gambar akan terasa memiliki jeda yang jelas. Ini memang sesuai harapan. Pastikan proses gerak berjalan benar dan posisi sejajar saat perangkat berhenti.
Jalankan
Dense, yaitu fitur Pemetaan Spasial Padat, lalu bandingkan hasilnya dengan perangkat ponsel (disarankan iPhone sebagai acuan). Perhatikan posisi mesh, kecepatan pembuatan, dan kualitasnya.Jika frame rate data input rendah, kecepatan pembuatan mesh akan melambat, tetapi kualitasnya tidak akan turun secara signifikan.
Fitur ini mungkin tidak dapat berjalan pada sebagian perangkat Android, dan kualitas mesh juga akan bergantung pada perangkat.
Penting
Input extension yang digunakan oleh paket ekstensi headset diimplementasikan melalui custom camera.
Saat menggunakan produk uji coba pada kamera kustom atau headset (license Personal, license XR uji coba, atau layanan Mega uji coba, dll.), EasyAR Sense akan berhenti merespons 100 detik setelah setiap kali dimulai (pengguna Mega dapat menyesuaikan durasi ini melalui EasyAR Business setelah disetujui). Versi berbayar EasyAR Sense dan layanan berbayar EasyAR Mega tidak memiliki batasan ini.
Jika Image dan Dense bekerja sama baiknya atau lebih baik daripada di ponsel, maka sebagian besar fitur EasyAR akan berfungsi normal di perangkat. Anda bisa mulai menguji Mega.
Memecahkan kondisi abnormal saat berjalan: pemecahan masalah
Jika hasilnya tidak dapat direproduksi sama seperti di ponsel, berikut adalah proses pemecahan masalah yang lebih rinci untuk membantu menemukan akar penyebabnya. Disarankan untuk selalu memperhatikan output log sistem.
Langkah nol: pahami error sistem milik headset
Masih ingat kebutuhan motion tracking dan tampilan yang dijelaskan di Menyiapkan perangkat untuk AR/MR?
Penting
Error motion tracking/VIO akan selalu memengaruhi stabilitas algoritme EasyAR dengan cara yang berbeda-beda.
Penting
Error sistem tampilan dapat menyebabkan objek virtual dan objek nyata gagal sejajar sempurna.
Dalam beberapa situasi dengan error yang besar, objek virtual dapat terlihat melayang di atas atau di bawah objek nyata, lalu tampak terus bergeser. Fenomena ini dapat diamati pada Pico 4E, bahkan saat EasyAR tidak digunakan dan hanya VST bawaannya yang diaktifkan.
Langkah 1: Lihat status running session
Status session yang ditampilkan di UI messages memerlukan fungsi atau data berikut agar normal:
Availabilitydari ExternalFrameSourceVirtual cameradari ExternalFrameSource
Jika informasi status session tidak terlihat, coba ubah opsi menjadi Log lalu baca status session dan nama frame source yang digunakan di log sistem.
Coba hapus semua frame source lain di bawah node ARSession lalu lihat apakah ada perubahan.
Langkah 2: Pastikan jumlah frame kamera yang diterima EasyAR
Fungsi atau data yang wajib normal:
- Jalur
camera frame datadari ExternalFrameSource pada level kode Unity (tidak termasuk kebenaran data dan jalur ke layer native)
Nilai ini seharusnya terus bertambah seiring waktu, jika tidak maka peringatan akan muncul setelah beberapa detik.
Jika nilai ini tidak bertambah, hal tersebut harus diselesaikan terlebih dahulu.
Langkah 3: Rekam EIF di perangkat, lalu putar ulang di Unity Editor
Fungsi atau data yang wajib normal:
- Jalur input
camera frame datake layer native melalui ExternalFrameSource (tidak termasuk kebenaran data)raw camera image datadi dalamcamera frame datatimestampdi dalamcamera frame data(tidak termasuk titik waktu dan sinkronisasi data)
Klik EIF untuk mulai merekam, lalu klik lagi untuk menghentikan.
Kiat
Rekaman harus dihentikan dengan benar agar file EIF bisa diindeks secara acak.
Saat memutar ulang data EIF di Unity Editor, sebaiknya gunakan scene EasyAR yang bersih atau contoh EasyAR agar terhindar dari konfigurasi yang salah di scene.
Anda dapat melihat pemutaran ulang camera frame data di Unity Editor. Data gambar tidak identik byte-per-byte karena seluruh proses menggunakan kompresi dan dekompresi yang bersifat lossy.
EasyAR menggunakan parameter distorsi dalam perhitungan, tetapi tidak melakukan undistorsi pada gambar saat ditampilkan. Jadi jika data ini diinputkan, maka saat file EIF diputar ulang di Unity, data tanpa undistorsi akan terlihat. Ini sesuai harapan.
Kiat
Sesuaikan rasio jendela game Unity dengan input, jika tidak data akan terpotong saat ditampilkan.
Jika pemutaran data terlalu cepat atau terlalu lambat, periksa input timestamp.
Catatan
Banyak hal dapat dilakukan dengan EIF, Anda bisa menjalankan pelacakan gambar dan pemetaan spasial padat menggunakan EIF di Unity Editor. Perhatikan bahwa efek tampilan bisa berbeda saat dijalankan di perangkat sebenarnya.
Langkah 4: Jalankan pelacakan gambar dengan EIF
Fungsi atau data yang wajib normal:
raw camera image datadicamera frame dataintrinsicsdicamera frame data(akurasi data tidak bisa sepenuhnya dijamin karena algoritme memiliki toleransi terhadap error)
Untuk menjalankan contoh pelacakan gambar ImageTracking_Targets di Unity Editor menggunakan EIF, Anda perlu merekam EIF yang berisi gambar yang dapat dilacak.
Catatan
Pelacakan gambar mengharuskan target pelacakan menempati proporsi tertentu dari seluruh gambar. Jika gambar tidak bisa dilacak, coba dekatkan kepala ke gambar.
Jika pelacakan terus gagal atau objek virtual tampil jauh dari posisi target di gambar, kemungkinan besar ada masalah pada intrinsics.
Jika data gambar memiliki distorsi, Anda mungkin melihat objek virtual tidak menutupi target pelacakan secara sempurna di gambar. Ini sesuai harapan. Fenomena ini akan lebih terlihat saat target pelacakan berada di tepi gambar.
Langkah 5: Jalankan pelacakan gambar di perangkat
Fungsi atau data yang wajib normal:
- Sistem tampilan milik perangkat itu sendiri
raw camera image datadicamera frame dataintrinsicsdicamera frame data(kebenaran data tidak sepenuhnya dijamin, karena algoritme masih toleran terhadap sebagian error)extrinsicsdicamera frame data- Kesesuaian koordinat
device poseantaracamera frame datadanrendering frame data- Selisih waktu
device poseantaracamera frame datadanrendering frame data
Catatan
Pelacakan gambar mengharuskan target pelacakan menempati proporsi tertentu dari seluruh gambar. Jika gambar tidak bisa dilacak, coba dekatkan kepala ke gambar.
Pelacakan gambar mengharuskan panjang sisi horizontal gambar sesuai dengan ukuran objek nyata di dunia fisik. Pada contoh, perlu melacak gambar yang lebarnya memenuhi panjang sisi panjang kertas A4 yang diletakkan horizontal. Jadi jangan melacak gambar yang ditampilkan di layar komputer, kecuali Anda menggunakan penggaris dan menyesuaikan lebar horizontal gambar ke ukuran A4.
Jika saat menggunakan EIF pelacakan gambar sangat sempurna tetapi di perangkat hasilnya berbeda, hal ini harus diselesaikan sebelum melanjutkan pengujian lain. Menyelesaikan masalah pada langkah berikutnya jauh lebih sulit.
Jika objek virtual tampak melayang jauh dari objek nyata, dan itu terjadi bahkan saat pengguna diam, kemungkinan besar intrinsics atau extrinsics salah, atau device pose di camera frame data dan rendering frame data tidak berada pada sistem koordinat yang sama, atau sistem tampilan menghasilkan error ini.
Jika objek virtual terus bergerak saat kepala digerakkan dan terasa seperti ada jeda, kemungkinan besar device pose tidak sehat. Ini sering terjadi dalam beberapa situasi berikut (meski kemungkinan masalah lain tetap ada):
- Data waktu
device posedanraw camera image datatidak tersinkronisasi. - Pose yang sama digunakan di
camera frame datadanrendering frame data.
Langkah 6: Gunakan EIF dan jalankan pemetaan spasial padat di perangkat
Fungsi atau data yang wajib normal:
- Sistem tampilan milik perangkat itu sendiri
raw camera image datadicamera frame dataintrinsicsdicamera frame data(akurasi data tidak sepenuhnya dijamin, karena algoritme memiliki toleransi terhadap error)extrinsicsdicamera frame datadevice posedicamera frame data
Jika pembuatan mesh sangat lambat dan/atau rekonstruksi lantai terlihat bergelombang, kemungkinan besar ada masalah pada device pose. Bisa juga pose memiliki sistem koordinat yang salah atau timestamp pose tidak sesuai.
Kiat
Jika frame rate data input rendah, kecepatan pembuatan mesh juga akan menurun, tetapi kualitasnya tidak akan turun secara signifikan. Ini adalah perilaku yang diharapkan.
Biasanya tidak mudah membedakan posisi mesh yang sangat presisi, jadi ketidakakuratan sistem tampilan mungkin tidak terlihat saat menggunakan pemetaan spasial padat.
Menjalankan contoh Mega
Baca bagian berikut untuk memahami cara menggunakan Mega di Unity. Jika Anda belum mengaktifkan layanan Mega, Anda perlu menghubungi tim bisnis EasyAR untuk mendapatkan izin uji coba.
- Pengenalan EasyAR Mega
- Apakah Fungsi Lokalisasi Saya Sudah Siap? untuk memastikan library lokalisasi telah dibuat dengan benar dan peta telah ditambahkan.
- Mulai cepat menggunakan contoh Unity EasyAR Mega
Lalu jalankan Mega di perangkat dan bandingkan hasilnya dengan di ponsel (disarankan menggunakan iPhone sebagai acuan). Perhatikan:
- Apakah posisi tampilan objek sudah benar
- Apakah posisi dan ukuran objek jauh (10M dan seterusnya) sudah benar
- Apakah posisi dan ukuran objek di luar pusat pandangan sudah benar
- Apakah posisi dan ukuran objek sudah benar saat memutar kepala
Memecahkan kondisi abnormal saat berjalan
Fungsi atau data yang wajib normal:
- Sistem tampilan milik perangkat itu sendiri
- Semua data di
camera frame datadanrendering frame data
Setelah memverifikasi dua fitur pelacakan gambar dan pemetaan spasial padat, secara teori EasyAR Mega seharusnya sudah didukung. Jika hasil pada headset jauh lebih buruk daripada di ponsel, perhatikan hal berikut:
- Fokus pada data pose dan timestamp di
camera frame datadanrendering frame data - Amati output sistem motion tracking/VIO. Panda di bawah
XR Originbisa menjadi referensi yang baik
Selain itu, sistem tampilan milik perangkat juga harus mendapat perhatian khusus, terutama untuk rendering objek di jarak jauh, di luar pusat pandangan, dan saat kepala berputar. Skenario seperti ini sering terlewat saat pengujian mandiri perangkat, padahal masalahnya biasanya memang berasal dari sistem tampilan perangkat. Anda perlu menjelaskan:
Masalah ini dan dampak yang mungkin timbul kepada EasyAR, dan harapan performa yang masuk akal kepada pengembang
Penting
Pengguna akan sangat memperhatikan masalah tampilan ini, dan banyak perangkat memang tidak dapat memberikan hasil rendering yang sempurna di lingkungan spasial yang luas. EasyAR tidak dapat memperbaiki masalah tampilan yang berasal dari perangkat itu sendiri. Hal ini memerlukan peningkatan bertahap dari produsen perangkat. Sementara itu, pengguna juga perlu memahami batasan ini.
Langkah berikutnya
Topik terkait
Contoh yang dapat dijalankan di ponsel:
- Contoh pelacakan gambar
ImageTracking_Targets, yang menjelaskan perilaku hasil yang diharapkan dari fitur pelacakan gambar - Contoh pemetaan spasial padat
SpatialMap_Dense_BallGame, yang menjelaskan perilaku hasil yang diharapkan dari fitur pemetaan spasial padat - Contoh motion fusion
ImageTracking_MotionFusion, yang menjelaskan perilaku hasil yang diharapkan dari fitur motion fusion - Contoh Mega
MegaBlock_Basic, yang menjelaskan perilaku hasil yang diharapkan dari fitur Mega