Mengontrol proses pelacakan mega
Artikel ini memperkenalkan cara mengontrol berbagai fungsi dan parameter dalam proses pelacakan mega untuk memenuhi kebutuhan berbagai skenario aplikasi.
Sebelum memulai
Menyesuaikan level dukungan perangkat
Properti MegaTrackerFrameFilter.MinInputFrameLevel dari MegaTrackerFrameFilter digunakan untuk menentukan level perangkat minimum yang didukung oleh mega.
![]()
Mega dapat berjalan di hampir semua jenis sumber frame data, tetapi sumber frame data yang berbeda memiliki efek yang berbeda pada hasil pelacakan.
Secara default, mega akan memilih sumber frame data dengan level tertinggi yang didukung perangkat untuk pelacakan. Sesi yang mendukung mega dengan konfigurasi default telah dikonfigurasi dengan sumber frame data yang mendukung 6DoF dan 5DoF.
Untuk mendukung sumber frame data dengan level tertentu saat mega berjalan, diperlukan dua kondisi:
- Sumber frame data yang dibutuhkan ada dalam grup sumber frame data yang dapat dipilih di sesi.
- MegaTrackerFrameFilter.MinInputFrameLevel lebih besar atau sama dengan level CameraTransformType dari sumber frame data yang dibutuhkan.
Misalnya, untuk mendukung pelacakan 3DoF dalam sesi default, diperlukan:
- Menambahkan ThreeDofCameraDeviceFrameSource ke grup sumber frame data sesi.
- Mengubah MegaTrackerFrameFilter.MinInputFrameLevel menjadi ThreeDof.
Contoh lain, untuk menghapus dukungan pelacakan 5DoF dalam sesi default, diperlukan:
- Menghapus InertialCameraDeviceFrameSource dari grup sumber frame data sesi.
- Mengubah MegaTrackerFrameFilter.MinInputFrameLevel menjadi SixDof (bahkan jika tidak diubah, karena tidak ada sumber frame data 5DoF, 5DoF tidak akan digunakan).
Jika tidak ada sumber frame data yang memenuhi syarat, perakitan sesi akan gagal.
Manajemen target pelacakan
Saat menggunakan mega, perlu ditentukan target yang digunakan oleh MegaTrackerFrameFilter, yaitu block.
Kontrol sumber block
Dalam kebanyakan kasus, disarankan untuk mempertahankan konfigurasi default, yaitu mengimpor block menggunakan mega studio di editor.
Pilih objek Mega Tracker di bawah sesi, opsi Block Root Source harus tetap External (default).
![]()
Secara bersamaan, perlu ditentukan Block Root sebagai objek MegaBlocks di scene.
![]()
Mengubah opsi Block Root Source dapat menentukan cara sumber block lain, misalnya saat mengimpor data menggunakan ema, biasanya memilih opsi Internal atau Mixed.
Dalam skrip, BlockHolder.BlockRootSource dapat dimodifikasi untuk mencapai efek yang sama.
Kontrol pelacakan multi-target
Dalam sebagian besar skenario penggunaan mega, tidak perlu menggunakan multi-target. Sebelum menguasai cara menghindari pengaruh timbal balik antar block, disarankan untuk hanya menempatkan satu block dalam satu perpustakaan lokalisasi.
Kiat
Secara prinsip, mega akan menghitung posisi perangkat di semua block, bukan memilih block yang dilihat perangkat dari perpustakaan lokalisasi. Penggunaan yang tidak dipertimbangkan dengan matang dapat menyebabkan penurunan kinerja karena kebingungan data, dll.
Pilih objek Mega Tracker di bawah sesi, ubah opsi Multi Block untuk mengaktifkan atau menonaktifkan fungsi pelacakan multi-target.
![]()
Dalam skrip, BlockHolder.MultiBlock dapat dimodifikasi untuk mencapai efek yang sama.
Peringatan
Secara umum, hanya boleh ada satu block dalam satu perpustakaan lokalisasi.
Mengubah konfigurasi multi-target akan memengaruhi efek pelacakan, umumnya tidak disarankan untuk dimodifikasi. Harap gunakan di bawah bimbingan dukungan teknis easyar.
Jika konfigurasi ini diubah selama eksekusi aplikasi, harap pastikan untuk menyebutkan hal ini saat melaporkan masalah ke easyar.
Memahami status sistem saat ini
Dalam konfigurasi sesi default, pesan ui akan ditampilkan di layar, yang berisi informasi tentang status pelacakan mega.
Saat lokalisasi berhasil, mega block akan berisi teks status Found serta nama dan id block yang sedang dilacak:
![]()
Saat lokalisasi gagal, mega block akan berisi teks status NotFound:
![]()
Kiat
NotFound adalah status normal, status ini sering muncul selama keseluruhan proses kerja mega, dan pelacakan masih berlanjut saat status ini muncul. Biasanya dalam pengembangan aplikasi tidak diperlukan penanganan khusus untuk status NotFound.
Menggunakan peristiwa MegaTrackerFrameFilter.LocalizationRespond dapat memperoleh status lokalisasi saat ini, sehingga memahami apakah sistem telah menemukan target pelacakan saat ini.
Kode berikut menunjukkan cara menggunakan peristiwa ini, serta metode penanganan status tidak biasa yang umumnya perlu diperhatikan oleh aplikasi:
private void Awake()
{
megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
var status = response.Status;
wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
if (wakingUpCount >= 5)
{
// Layanan sedang bangun, perlu membuat pengguna akhir menunggu
}
if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
{
// Batas qps terlampaui, beberapa pengguna akhir akan gagal dilokalisasi secara acak (penurunan kualitas pelacakan keseluruhan)
// Saat ini umumnya perlu membayar untuk meningkatkan batas atas qps guna memastikan kualitas pelacakan di bawah volume pengguna saat ini
}
if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
{
// Token kedaluwarsa, ini hanya akan muncul saat menggunakan antarmuka token untuk mengakses layanan
// Mendekati masalah ini memerlukan aplikasi untuk meminta token dari backend-nya sendiri, dan memanggil MegaTrackerFrameFilter.UpdateToken untuk memperbarui
}
}
Jika aplikasi sering mengalami status MegaTrackerLocalizationStatus.RequestTimeout, biasanya menunjukkan bahwa kondisi jaringan perangkat yang terhubung ke layanan buruk, disarankan untuk mengoptimalkan lingkungan jaringan untuk meningkatkan kualitas pelacakan. Dalam skenario di mana kondisi jaringan tidak dapat diperbaiki, pertimbangkan untuk menambah waktu tunggu permintaan.
Catatan
Tidak dapat memperoleh pose yang dikembalikan oleh lokalisasi melalui peristiwa ini.
Faktanya, pose yang dikembalikan oleh lokalisasi tidak diperlukan dalam pengembangan aplikasi, easyar akan menghitung pose yang lebih akurat melalui algoritma lokal setelah lokalisasi kembali dan mengembalikannya untuk digunakan pengembang, dan pose ini telah tercermin dalam transform block, dapat merujuk ke mendapatkan hasil operasi sesi.
Jeda dan lanjutkan
Fungsi pelacakan dan lokalisasi mega dapat dijeda dan dilanjutkan secara terpisah.
Menjeda pelacakan
Setel MegaTrackerFrameFilter.enabled ke false untuk menjeda pelacakan.
Secara default, setelah pelacakan dijeda, semua konten di bawah node block akan disembunyikan.
Menjeda lokalisasi
Setel MegaTrackerFrameFilter.EnableLocalization ke false untuk menjeda lokalisasi.
Peringatan
Menjeda lokalisasi akan memengaruhi efek pelacakan, umumnya tidak disarankan untuk dimodifikasi. Harap gunakan di bawah bimbingan dukungan teknis easyar.
Jika lokalisasi dijeda selama eksekusi aplikasi, harap pastikan untuk menyebutkan hal ini saat melaporkan masalah ke easyar.
Kontrol layanan dan permintaan
Perilaku permintaan layanan dapat dikontrol dengan memodifikasi parameter komponen MegaTrackerFrameFilter.
Interval permintaan dan waktu tunggu
Pilih objek Mega Tracker di bawah sesi, ubah opsi di bawah Request Time Parameters untuk menyesuaikan interval permintaan layanan dan waktu tunggu.
![]()
Dalam skrip, MegaTrackerFrameFilter.RequestTimeParameters dapat dimodifikasi untuk mencapai efek yang sama.
Peringatan
Mengubah interval permintaan akan memengaruhi efek pelacakan, umumnya tidak disarankan untuk dimodifikasi. Harap gunakan di bawah bimbingan dukungan teknis easyar.
Jika interval permintaan diubah selama eksekusi aplikasi, harap pastikan untuk menyebutkan hal ini saat melaporkan masalah ke easyar.
Beralih perpustakaan lokalisasi
Gunakan MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) untuk beralih perpustakaan lokalisasi saat runtime. Saat menggunakan antarmuka ini, gambar kamera dan sesi tidak akan terputus.
Topik terkait
- Praktik terbaik sesi ar untuk mega memperkenalkan cara membuat dan mengonfigurasi sesi ar yang cocok untuk mega
- Menambahkan target pelacakan mega memperkenalkan cara menambahkan block target pelacakan mega dan cara memuat model block di editor unity untuk membantu pengembangan
- Menambahkan sekelompok sumber frame data memperkenalkan cara memodifikasi grup sumber frame data sesi
- Mendapatkan hasil operasi sesi memperkenalkan cara mendapatkan hasil pelacakan komponen sesi
- Pesan ui memperkenalkan cara menggunakan pesan ui untuk menampilkan status sesi