Table of Contents

Mengontrol proses pelacakan Mega

Artikel ini menjelaskan cara mengontrol berbagai fungsi dan parameter dalam proses pelacakan Mega untuk memenuhi kebutuhan berbagai skenario aplikasi.

Sebelum memulai

Menyesuaikan level dukungan perangkat

Properti MegaTrackerFrameFilter.MegaTrackerFrameFilter.MinInputFrameLevel digunakan untuk menetapkan level perangkat minimum yang didukung oleh Mega.

alt text

Mega dapat berjalan di hampir semua jenis sumber data frame, tetapi sumber data frame yang berbeda memiliki dampak berbeda pada efek pelacakan.

Secara default, Mega akan memilih sumber data frame dengan level tertinggi yang didukung perangkat untuk pelacakan. Session yang mendukung Mega dengan konfigurasi default telah dikonfigurasi untuk mendukung sumber data frame 6DoF dan 5DoF.

Untuk mendukung sumber data frame pada level tertentu saat Mega berjalan, diperlukan dua kondisi:

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

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

Jika tidak ada sumber data frame yang memenuhi syarat, perakitan session 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 session, opsi Block Root Source harus tetap External (default).

alt text

Pada saat yang sama, perlu ditentukan Block Root sebagai objek MegaBlocks dalam adegan.

alt text

Mengubah opsi Block Root Source dapat menentukan cara sumber block lain, seperti saat mengimpor data ema, biasanya memilih opsi Internal atau Mixed.

Dalam skrip, Anda dapat mengubah BlockHolder.BlockRootSource 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 beberapa block, disarankan untuk hanya menempatkan satu block dalam satu perpustakaan pelokalan.

Kiat

Secara prinsip, Mega akan menghitung posisi perangkat di semua block, bukan memilih block yang dilihat perangkat dari perpustakaan pelokalan. Penggunaan yang tidak dipertimbangkan dengan matang dapat menyebabkan penurunan kinerja karena kebingungan data, dll.

Pilih objek Mega Tracker di bawah session, ubah opsi Multi Block untuk mengaktifkan atau menonaktifkan fungsi pelacakan multi-block.

alt text

Dalam skrip, Anda dapat mengubah BlockHolder.MultiBlock untuk mencapai efek yang sama.

Peringatan

Secara umum, hanya satu block yang dapat ada secara bersamaan dalam satu perpustakaan pelokalan.

Mengubah konfigurasi multi-target akan memengaruhi efek pelacakan, dan umumnya tidak disarankan untuk diubah. Harap gunakan di bawah bimbingan dukungan teknis EasyAR.

Jika konfigurasi ini diubah selama eksekusi aplikasi, pastikan untuk menyebutkan hal ini saat melaporkan masalah ke EasyAR.

Memahami status sistem saat ini

Dalam konfigurasi session default, pesan UI akan ditampilkan di layar, yang berisi informasi tentang status pelacakan Mega.

Saat pelokalan berhasil, Mega Block akan berisi teks status Found serta nama dan ID block yang sedang dilacak:

alt text

Saat pelokalan gagal, Mega Block akan berisi teks status NotFound:

alt text

Kiat

NotFound adalah status normal, dan sering muncul selama keseluruhan proses kerja Mega. Saat status ini muncul, pelacakan masih berlanjut. Biasanya dalam pengembangan aplikasi tidak diperlukan penanganan khusus untuk status NotFound.

Menggunakan peristiwa MegaTrackerFrameFilter.LocalizationRespond dapat memperoleh status pelokalan saat ini, sehingga memahami apakah sistem saat ini telah menemukan target pelacakan.

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, secara acak pengguna akhir akan gagal dilokalisasi (penurunan kualitas pelacakan secara 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, dapat dipertimbangkan untuk menambah waktu tunggu permintaan.

Catatan

Tidak dapat memperoleh pose yang dikembalikan oleh pelokalan melalui peristiwa ini.

Faktanya, pose yang dikembalikan oleh pelokalan tidak diperlukan dalam pengembangan aplikasi. EasyAR akan menghitung pose yang lebih akurat melalui algoritma lokal setelah pelokalan dikembalikan dan mengembalikannya untuk digunakan oleh pengembang, dan pose ini telah tercermin dalam transform block. Dapat merujuk ke mendapatkan hasil operasi session.

Jeda dan lanjutkan

Fungsi pelacakan dan pelokalan Mega dapat dijeda dan dilanjutkan secara terpisah.

Jeda pelacakan

Setel MegaTrackerFrameFilter.enabled ke false untuk menjeda pelacakan.

Secara default, setelah pelacakan dijeda, semua konten di bawah node block akan disembunyikan.

Jeda pelokalan

Setel MegaTrackerFrameFilter.EnableLocalization ke false untuk menjeda pelokalan.

Peringatan

Menjeda pelokalan akan memengaruhi efek pelacakan, dan umumnya tidak disarankan untuk diubah. Harap gunakan di bawah bimbingan dukungan teknis EasyAR.

Jika pelokalan dijeda selama eksekusi aplikasi, pastikan untuk menyebutkan hal ini saat melaporkan masalah ke EasyAR.

Kontrol layanan dan permintaan

Perilaku permintaan layanan dapat dikontrol dengan mengubah parameter komponen MegaTrackerFrameFilter.

Interval permintaan dan waktu tunggu

Pilih objek Mega Tracker di bawah session, ubah opsi di bawah Request Time Parameters untuk menyesuaikan interval permintaan layanan dan waktu tunggu.

alt text

Dalam skrip, Anda dapat mengubah MegaTrackerFrameFilter.RequestTimeParameters untuk mencapai efek yang sama.

Peringatan

Mengubah interval permintaan akan memengaruhi efek pelacakan, dan umumnya tidak disarankan untuk diubah. Harap gunakan di bawah bimbingan dukungan teknis EasyAR.

Jika interval permintaan diubah selama eksekusi aplikasi, pastikan untuk menyebutkan hal ini saat melaporkan masalah ke EasyAR.

Beralih perpustakaan pelokalan

Gunakan MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) untuk beralih perpustakaan pelokalan saat runtime. Saat menggunakan antarmuka ini, gambar kamera dan session tidak akan terputus.

Topik terkait