Menggabungkan Plane Tracking dan Motion Tracking
Artikel ini menjelaskan cara menggabungkan plane image tracking dengan motion tracking perangkat untuk meningkatkan stabilitas tracking dan pengalaman pengguna dalam skenario kompleks.
Prinsip Dasar
Motion Fusion menggabungkan data pose dari plane image tracking dan motion tracking perangkat untuk estimasi pose yang lebih robust.
Sinkronisasi dan Saling Melengkapi Data
- Visual tracking: Menghitung pose frame saat ini (posisi + rotasi) melalui pencocokan feature point gambar, tetapi mudah terpengaruh oleh oklusi, blur, atau gerakan cepat.
- Motion tracking: Menggunakan output sensor IMU frekuensi tinggi dan output gambar visual untuk memperoleh data gerakan perangkat, tetapi dapat memiliki kesalahan drift kumulatif.
- Motion Fusion:
- Menyelaraskan sistem koordinat pose visual tracking dan pose motion tracking perangkat.
- Saat target image terlihat jelas dan bergerak stabil: visual tracking menjadi utama dan pose-nya terus dikirim ke modul fusion untuk mengurangi drift kumulatif.
- Saat target image hilang, terlalu kecil di layar, atau bergerak cepat: visual tracking gagal dan motion tracking menjadi utama.
Poin Teknis Utama
- Penyelarasan timestamp: Menyelaraskan timestamp frame visual dengan data motion tracking untuk menghindari jitter akibat latensi.
- Penyelarasan sistem koordinat: Menyelaraskan sistem koordinat berdasarkan lintasan visual tracking dan lintasan motion tracking.
- Relocalization: saat image muncul kembali, visual tracking mengambil alih dan mengoreksi error kumulatif.
Skenario yang Berlaku dan Batasan
Motion Fusion tidak cocok untuk semua skenario. Motion Fusion tidak berlaku dalam salah satu kondisi berikut:
- Perangkat target tidak mendukung fitur motion tracking seperti ARCore/ARKit. Untuk daftar dukungan perangkat detail, lihat Dukungan Perangkat Motion Tracking.
- Target image/plane object bersifat dinamis, misalnya kartu yang dipegang.
Di luar skenario tersebut, Motion Fusion meningkatkan pengalaman plane image tracking.
- Gerakan cepat: Pengguna menggerakkan perangkat genggam dengan cepat, motion blur dapat menyebabkan visual tracking gagal.
- Target menghilang: konten virtual tetap dapat ditampilkan walau target keluar dari tampilan atau tertutup.
- Jauh dari target: tracking tetap stabil saat target image menjadi kecil di layar.
- Kondisi cahaya rendah: Performa visual tracking menurun dan pengalaman perlu dipertahankan.
Efek dan Hasil yang Diharapkan
Jika skenario sesuai, Motion Fusion lebih stabil dan halus daripada plane image tracking saja.
Hasil Ideal
- Tracking lebih stabil: Objek virtual tidak jitter atau melompat.
- Transisi halus: Saat visual tracking gagal, perubahan fused pose tetap kontinu dan alami.
- Tahan gangguan: saat target image hilang/tertutup atau perangkat bergerak cepat, objek virtual tetap mengikuti gerakan perangkat.
Kasus Tidak Ideal dan Penanganannya
| Fenomena | Penyebab | Persepsi pengguna | Solusi |
|---|---|---|---|
| Awalnya belum efektif | Motion tracking memerlukan waktu untuk inisialisasi | Konten menghilang pada tahap awal | Berikan prompt UI yang sesuai dan pastikan inisialisasi motion tracking sistem selesai |
| Drift jelas | Kesalahan sistem terakumulasi dan lama tanpa koreksi visual | Objek virtual menyimpang dari posisi awal | Arahkan pengguna untuk memperpendek waktu oklusi, atau tambahkan prompt relokalisasi visual |
| Performa menurun | Dua fitur berjalan bersamaan dalam waktu lama | Frame rate turun dan gambar tersendat | Ini normal; Motion Fusion dapat dinonaktifkan melalui API |
Metode Verifikasi Hasil yang Diharapkan
Uji dengan perangkat yang didukung di scene nyata:
- Arahkan ke image dan pastikan objek virtual stabil.
- Tutup image dengan tangan selama 2 detik sambil menggerakkan perangkat, lalu amati apakah objek virtual bergerak halus.
- Lepaskan tangan dan pastikan objek virtual cepat kembali ke posisi benar tanpa lompatan.
Ringkasan dan Praktik Terbaik
Motion Fusion meningkatkan robustness plane image tracking, tetapi memerlukan dukungan hardware dan performa cukup.
Referensi API untuk mengaktifkan/menonaktifkan Motion Fusion secara real time:
- Native: setResultPostProcessing
- Unity: EnableMotionFusion