Table of Contents

Mengontrol proses pelacakan Mega Go

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

Sebelum memulai

Alur kerja tracker

Alur kerja tracker adalah sebagai berikut:

flowchart LR
  subgraph startup_graph[Startup]
    direction TB
    sstart((Startup session))
    create[Pembuatan native]
    load(Muat target)
    verify[Verifikasi trial]
    init_g[[Inisialisasi]]
  end
  
  subgraph init_graph[Inisialisasi]
    direction TB
    init_{Inisialisasi 6DoF berhasil<br>atau non-6DoF}
    init[[Proses inisialisasi tracking lokal]]
    detecting[[Deteksi]]
    tracking_g[[Tracking]]
  end

  subgraph tracking_graph[Tracking]
    direction TB
    tracking[[Tracking berkelanjutan]]
  end

  subgraph stopping_graph[Berhenti]
    direction TB
    unload(Unload target)
    dispose[Penghancuran native]
    sstop([Session berhenti])
  end

  sstart --> create --> load --> verify --> init_g
  init --> init_ --> |Yes| detecting --> tracking_g
  unload --> dispose --> sstop
  init_ --> |No| init

  startup_graph --> init_graph
  init_graph --> tracking_graph
  tracking_graph --> stopping_graph

Proses ini secara garis besar dibagi menjadi beberapa tahap:

  • Memulai:
    • Setelah session dimulai, tracker pada lapisan native akan dibuat.
    • Setelah Start() pada target, target akan dimuat ke tracker yang sesuai.
    • Untuk data percobaan, perlu memvalidasi kelayakan percobaan secara online; hanya setelah validasi berhasil akan masuk ke tahap berikutnya.
  • Inisialisasi:
    • Saat menggunakan frame source 6DoF, proses inisialisasi pelacakan lokal akan dimulai.
      • Inisialisasi pelacakan lokal dapat memerlukan waktu; bergantung pada kompleksitas scene dan kemampuan perangkat, dan biasanya juga terkait dengan algoritma yang digunakan lapisan bawah frame source.
    • Saat menggunakan frame source non-6DoF, tahap inisialisasi pelacakan lokal dilewati dan langsung mulai mendeteksi.
    • Proses deteksi juga dapat memerlukan waktu, tergantung pada seberapa mudah scene dilokalisasi dan kualitas pengambilan serta pemetaan data.
    • Dengan konfigurasi default, konten pada tahap ini tidak akan ditampilkan; perilaku ini dapat dikendalikan melalui opsi komponen ActiveController.
  • Pelacakan:
    • Tracker akan terus melacak block saat ini.
    • Dengan konfigurasi default, hanya konten di bawah node target yang sedang dalam status pelacakan (TargetController.IsTracked == true) yang akan ditampilkan; perilaku ini dapat dikendalikan melalui opsi komponen ActiveController.
  • Berhenti:
    • Setelah session berhenti, target akan dilepas dan tracker pada lapisan native akan dihancurkan.

Menyesuaikan tingkat dukungan perangkat

Properti MegaGoTrackerFrameFilter.MinInputFrameLevel dari MegaGoTrackerFrameFilter digunakan untuk menentukan tingkat perangkat minimum yang didukung Mega.

alt text

Mega Go dapat berjalan pada hampir semua jenis frame source, tetapi setiap frame source memberikan pengaruh berbeda pada hasil pelacakan.

Secara default, Mega memilih frame source dengan tingkat tertinggi yang didukung perangkat untuk pelacakan. Session yang kompatibel dengan Mega Go dalam konfigurasi default sudah dikonfigurasi dengan frame source yang mendukung 6DoF dan 5DoF.

Agar Mega mendukung frame source pada tingkat tertentu saat runtime, dua syarat harus dipenuhi:

Sebagai contoh, untuk mendukung pelacakan 3DoF pada session default, perlu:

Sebagai contoh lain, untuk menghapus dukungan pelacakan 5DoF dari session default, perlu:

Jika tidak ada frame source yang memenuhi syarat tersedia, assembly session akan gagal.

Memahami status sistem saat ini

Dengan konfigurasi session default, pesan UI akan ditampilkan di layar dan berisi informasi status Mega Go.

Status tracker akan ditampilkan di samping Mega Go: , misalnya Tracking atau VerifyingTrial. Selama proses deteksi dan pelacakan, pembaruan lokalisasi juga akan ditampilkan di bawahnya.

alt text

Status pelacakan block yang sedang dimuat akan ditampilkan di bawah Mega Go: , dalam format Block (<trackingStatus>): <name> (<id>). <name> adalah nama block dan <id> adalah ID block. trackingStatus bisa berupa Tracking atau NotTracking, yang masing-masing menunjukkan apakah block saat ini sedang dilacak.

alt text

Properti MegaGoTrackerFrameFilter.Status dapat digunakan untuk memperoleh status saat ini guna memahami cara kerja tracker. Saat muncul status error, status error dapat diperoleh melalui MegaGoTrackerFrameFilter.Error dan ditangani sesuai kebutuhan.

Kode berikut menunjukkan cara menggunakan properti tersebut serta cara menangani status abnormal umum yang perlu diperhatikan aplikasi:

void HandleTrackerStatus()
{
    if (tracker.Status == MegaGoTrackerStatus.Error)
    {
        if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
        {
            // validasi lokal gagal; sebaiknya periksa apakah data sudah kedaluwarsa atau tidak valid (data uji menjadi tidak valid setelah versi uji diubah menjadi versi resmi).
        }
        else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
        {
            // validasi lokal gagal; sebaiknya periksa apakah file target lengkap.
        }
        else
        {
            // error lainnya.
        }
    }
    else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
    {
        // target uji sedang divalidasi. Jika validasi tidak selesai dalam waktu lama, sebaiknya periksa koneksi jaringan.
    }
    else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
    {
        // input VIO sedang diinisialisasi. Jika inisialisasi tidak selesai dalam waktu lama, sebaiknya minta pengguna mengoptimalkan cara penggunaan.
        // misalnya: "coba arahkan kamera serong ke depan, lalu gerakkan perangkat lebar ke kiri dan kanan sebanyak 5 kali."
    }
}

Gunakan event MegaGoTrackerFrameFilter.LocalizationRespond untuk mendapatkan pembaruan lokalisasi.

Menjeda dan melanjutkan

Atur MegaGoTrackerFrameFilter.enabled ke false untuk menjeda pelacakan.

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

Topik terkait