Table of Contents

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.

alt text

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:

Misalnya, untuk mendukung pelacakan 3DoF dalam sesi default, diperlukan:

Contoh lain, untuk menghapus dukungan pelacakan 5DoF dalam sesi default, diperlukan:

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).

alt text

Secara bersamaan, perlu ditentukan Block Root sebagai objek MegaBlocks di scene.

alt text

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.

alt text

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:

alt text

Saat lokalisasi gagal, mega block akan berisi teks status NotFound:

alt text

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.

alt text

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