Panduan penggunaan multi-map dan praktik terbaik
Dalam pengembangan aplikasi Mega, apakah beberapa map (Block) sebaiknya ditambahkan ke satu localization library adalah pertanyaan umum. Penggunaan multi-map yang salah tidak hanya tidak meningkatkan kemampuan aplikasi, tetapi juga dapat menyebabkan penurunan performa dan lompatan positioning.
Panduan ini akan membantu Anda memahami dan menggunakan fungsi multi-map dengan benar serta menghindari kesalahpahaman umum.
Mengapa perlu menghindari menambahkan beberapa map?
Prinsip inti: jangan menambahkan beberapa map untuk "memperluas cakupan".
Dalam sebagian besar kasus, satu localization library sebaiknya hanya menambahkan satu Mega Block map untuk satu lokasi. Berikut adalah beberapa penggunaan salah yang umum dan harus dihindari:
Skenario salah A: multi-area
- Ide: membuat map terpisah untuk "Area A", "Area B", dan "Area C" yang saling terhubung dalam sebuah objek wisata, lalu menambahkan ketiga map tersebut sekaligus ke library dalam aplikasi, berharap pengguna dapat berpindah dengan mulus saat bergerak di area tersebut.
- Masalah: ketiga map yang dibuat dengan cara ini tidak memiliki hubungan matematis dalam koordinat spasial dan saling independen. Karena sistem koordinat masing-masing tidak konsisten, seamless switching saat bergerak tidak dapat dilakukan, sehingga positioning jump terjadi di batas area.
- Solusi: untuk skenario seperti ini, cara terbaik adalah mengumpulkan "Area A", "Area B", dan "Area C" sesuai metode pengumpulan data ruang sangat besar, dan memastikan area-area tersebut memiliki overlap yang cukup. Lakukan map construction sesuai tugas fusion jangkauan sangat besar. Pada saat ini akan dihasilkan single Block map dengan sistem koordinat terpadu yang mencakup semua area tersebut, dan map ini dapat ditambahkan ke localization library.
Skenario salah B: multi-lokasi
- Ide: membuat map untuk sebuah mal di satu lokasi, lalu membuat map lain untuk mal bernama sama di lokasi lain, berharap keduanya dapat digunakan dalam satu aplikasi.
- Masalah: ini akan sangat memperlambat kecepatan positioning. Saat positioning, perangkat harus membandingkan semua data map dalam library secara bersamaan, sehingga beban komputasi meningkat tajam dan waktu initialization menjadi lebih lama. Pengguna pada satu waktu hanya dapat berada di satu mal, sehingga memuat map mal lain merupakan pemborosan resource. Saat request untuk satu mal besar, waktu respons request mal lain juga akan melambat.
- Solusi: buat localization library berbeda untuk mal di lokasi berbeda, dan setiap library hanya menambahkan satu map. Dalam aplikasi, akses secara dinamis localization library yang sesuai berdasarkan lokasi pengguna saat ini.
Skenario salah C: lintas waktu
- Ide: untuk lokasi yang sama, lakukan pengumpulan dan map construction pada siang hari, lalu lakukan juga pada malam hari, kemudian tambahkan map siang dan malam ke library, berharap pengguna memperoleh pengalaman konsisten pada waktu berbeda di lokasi yang sama.
- Masalah: skenario ini mirip dengan skenario salah A; hubungan posisi spasial antara hasil map construction terpisah tidak dapat dijamin.
- Solusi: gabungkan data siang dan malam untuk fusion map construction sesuai tugas fusion jangkauan sangat besar. Tambahkan single Block map akhir yang dihasilkan ke localization library.
Skenario salah D: lintas versi
- Ide: untuk lokasi yang sama, map versi A sudah dibuat dan digunakan, lalu selama operasi dibuat map versi B yang lebih baru dan ditambahkan ke localization library asli, berharap map baru dapat digunakan tanpa menerbitkan ulang aplikasi.
- Masalah: karena keduanya adalah map versi berbeda untuk lokasi yang sama, hasil positioning dapat melompat di antara dua versi data berbeda.
- Solusi: upgrade map construction versi lama sesuai lossless full update, sehingga versi data map diperbarui sambil menjaga sistem koordinat tetap tidak berubah. Setelah map yang diperbarui ditambahkan, pastikan menghapus map versi lama dari localization library.
Skenario salah E: supplementary update
- Ide: untuk lokasi yang sama, map versi A sudah dibuat dan digunakan. Selama operasi berikutnya, karena area lokal berubah atau area kecil perlu dikumpulkan tambahan, dibuat map baru B dan ditambahkan ke localization library asli, berharap map baru dapat digunakan tanpa menerbitkan ulang aplikasi.
- Masalah: map area kecil B yang baru dikumpulkan tidak memiliki korelasi koordinat spasial dengan map asli A, dan pengalaman di antara data lama dan baru akan mengalami positioning jump.
- Solusi: lakukan supplementary update pada map construction versi lama, sehingga area kecil yang baru dikumpulkan tetap mempertahankan sistem koordinat yang sama dengan map lama. Setelah map yang diperbarui ditambahkan, pastikan menghapus map versi lama dari localization library.
Ringkasan: mencoba menyusun beberapa map kecil menjadi satu dunia besar tidak cocok untuk map presisi tinggi Mega. Filosofi desain Mega adalah representasi 3D presisi tinggi yang kontinu secara spasial, terpadu dalam koordinat, dan konsisten dalam ruang-waktu.
Skenario yang benar-benar membutuhkan multi-map
Jadi, kapan sebenarnya perlu menambahkan beberapa map (Block) dalam satu library? Skenario utamanya adalah "parallel tasks" atau "multi-space selection", bukan "spatial stitching".
Skenario 1: multi-space selection
- Deskripsi: aplikasi Anda melayani beberapa area yang benar-benar berbeda di lokasi yang sama. Namun karena batasan struktur bangunan atau masalah dalam praktik pengumpulan, area-area ini tidak dapat sepenuhnya terhubung dalam data, dan pengguna mungkin perlu memilih area tempat mereka berada terlebih dahulu. Misalnya, lantai berbeda di rumah sakit besar.
- Implementasi: setelah pengguna memilih area, gunakan prior information ini untuk mengaktifkan secara dinamis single map yang sesuai dengan lokasi tersebut. Pada saat yang sama, tetap hanya ada satu map dalam localization library yang ikut dihitung. Saat pengguna berpindah ke area baru, pilihan area perlu dikonfirmasi ulang.
Skenario 2: parallel tasks
- Deskripsi: aplikasi Anda perlu memproses dua atau lebih tugas object tracking yang independen dan sudah diketahui secara bersamaan, dan objek-objek ini berada di lokasi yang sama tetapi tidak saling terkait serta memiliki perbedaan fitur yang besar. Misalnya, beberapa benda pameran di museum.
- Implementasi: dalam skenario lanjutan seperti ini, Anda dapat membuat map independen untuk setiap objek, lalu menambahkan "object map" ini ke satu localization library. Namun perlu diperhatikan bahwa performa positioning saat ini bergantung pada jumlah objek yang ditambahkan ke localization library. Jika jumlah objek sangat besar, Anda mungkin perlu menyeimbangkan performa positioning dan jumlah localization library, misalnya dengan mengelompokkan objek dan membuat beberapa localization library untuk ditambahkan secara terpisah.
Perilaku rendering saat menggunakan multi-map
Perlu diperhatikan bahwa saat menggunakan multi-map positioning, perilaku 3D rendering berbeda pada platform dan versi berbeda.
Rekomendasi praktik terbaik
Jika Anda memang termasuk dalam skenario yang dijelaskan pada skenario yang benar-benar membutuhkan multi-map, atau harus menggunakan multi-map, ikuti prinsip berikut:
- Aktifkan sesuai kebutuhan: ketika pengguna membuat pilihan atau memasuki area tertentu, berikan prior information yang sesuai saat mengirim positioning request, dan hanya muat konten 3D yang sesuai.
- Switching dinamis: sediakan UI yang jelas agar pengguna memilih scene. Sebelum memuat konten 3D yang sesuai dengan map baru, unload konten 3D yang sesuai dengan map lama terlebih dahulu untuk membebaskan memory.
- State management: kelola map yang sedang aktif secara eksplisit dalam kode, dan listen ke Block ID dalam hasil positioning untuk membedakan feedback positioning dari map berbeda.
- Performance monitoring: saat menggunakan multi-map, perhatikan secara ketat penggunaan memory perangkat, positioning latency, dan konsumsi daya untuk memastikan aplikasi berjalan lancar pada target device.
Singkatnya, untuk sebagian besar aplikasi, berpegang pada prinsip "satu scene, satu map" adalah pilihan terbaik untuk menjamin performa dan stabilitas Mega positioning.