Pusat tracking motion AR Unity: XR Origin
XR Origin adalah konsep inti dari tracking motion di Unity. Dalam aplikasi AR modern, tracking motion semakin menjadi fitur yang wajib. Dengan tracking motion, aplikasi dapat mengetahui posisi dan orientasi pengguna di dunia nyata tanpa bantuan objek pengenal lain, sehingga menghadirkan pengalaman AR yang imersif. Melalui isi berikut, Anda akan memahami konsep dasar XR Origin, komponennya, siklus hidupnya, dan kapan XR Origin perlu digunakan.
Sebelum memulai
- Pelajari konsep dasar session melalui pengantar ARSession.
Apa itu XR Origin
Saat tracking motion diinisialisasi, akan dipilih satu titik referensi sebagai origin tracking. Titik referensi ini biasanya adalah lokasi perangkat ketika pengguna memulai aplikasi atau ketika layanan AR sistem mulai berjalan. Representasi titik ini di scene Unity adalah XR Origin. Dalam banyak kasus, posisi awal XR Origin di scene juga merupakan posisi awal kamera secara default.
Video ini menunjukkan scene AR sederhana yang hanya menjalankan tracking motion. Di kiri adalah tampilan
Hierarchy, di tengahScene, dan di kananGame. Video direkam di Unity editor pada modePlaymenggunakan data simulation run. Konten pada tampilanGamesama dengan yang dilihat pengguna di dunia nyata melalui ponsel.Terlihat bahwa pada video ini, XR Origin (bola biru) memiliki posisi yang tetap di scene, sedangkan kamera yang mewakili pengguna (ikon kamera) bergerak sesuai perpindahan pengguna di dunia nyata. Kerucut putih menampilkan lintasan posisi dan orientasi kamera selama periode sebelumnya agar lebih mudah memahami gerakan kamera. Kerucut putih ini dibuat di bawah node XR Origin, yang juga merupakan struktur objek yang umum pada scene seperti ini.
Dalam sistem tracking motion Unity, kamera biasanya bergerak mengikuti XR Origin. Walaupun kamera tidak selalu merupakan child node XR Origin, AR Session akan menghitung posisi kamera berdasarkan posisi XR Origin, sehingga konten yang dilihat pengguna tetap konsisten dengan dunia nyata.
Video ini menunjukkan scene yang sama, tetapi kali ini XR Origin (bola biru) dipindahkan saat runtime. Terlihat bahwa setelah XR Origin bergerak, kamera ikut bergerak mengikuti XR Origin, sedangkan konten pada tampilan
Gametidak berubah.
Dalam scene AR nyata, hubungan gerakan ini jauh lebih kompleks.
Perilaku XR Origin pada mode center yang berbeda
Di Unity, semua titik referensi pusat tracking AR disebut session center, dan aturan yang menentukan pusat ini selama session berjalan disebut center mode. Pada center mode yang berbeda, perilaku XR Origin juga berbeda:
Pada mode center SessionOrigin, XR Origin dapat dipindahkan sesuka hati.
Biasanya mode SessionOrigin digunakan pada scene yang hanya menjalankan tracking motion. Saat fitur lain juga berjalan, mode ini biasanya tidak digunakan.
Namun, saat memakai headset, jika vendor tidak mengimplementasikan titik referensi tracking motion dengan benar di Unity, maka Unity world center harus digunakan untuk memaksa mode SessionOrigin. Kondisi ini mengharuskan root content bergerak mengikuti fungsi AR, yang dapat memengaruhi hasil konten, tetapi sebelum vendor pihak ketiga melakukan perubahan, memang tidak ada cara lain.
Pada mode center lain (misalnya FirstTarget), XR Origin tidak dapat dipindahkan sesuka hati.
Biasanya mode FirstTarget digunakan pada scene non-motion-tracking atau scene yang menjalankan fitur AR lain bersama tracking motion.
Pada mode ini, posisi XR Origin ditentukan oleh fungsi AR, sehingga XR Origin tidak boleh dipindahkan sembarangan.
Untuk detail tentang center mode dan cara bergerak objek dalam scene, lihat center mode.
Bentuk dan komposisi XR Origin
EasyAR dapat menggunakan dua bentuk XR Origin yang berbeda:
- XR Origin yang disediakan EasyAR
- XR Origin yang disediakan Unity XR framework
XR Origin (EasyAR)
Struktur XR Origin yang umum adalah sebagai berikut:

Root node XR Origin adalah GameObject kosong, dan dapat memiliki satu atau beberapa child node XR Origin Child. XR Origin Child berisi komponen XROriginChildController, yang digunakan untuk mewakili logika kontrol XR Origin.
Saat session berjalan, jika struktur XR Origin di scene tidak benar, XR Origin dan satu XR Origin Child akan dibuat otomatis. Selama runtime, XR Origin Child akan dikunci pada posisi dan orientasi yang sama dengan XR Origin.
Objek yang dihasilkan oleh session, seperti point cloud dari sparse spatial mapping atau mesh dari dense spatial mapping, akan dibuat di bawah node XR Origin Child.
Video ini menunjukkan efek saat dense spatial mapping berjalan bersama tracking motion pada scene yang sama. Terlihat bahwa mesh yang dihasilkan dibuat di bawah node XR Origin Child.
Catatan: untuk memudahkan pemahaman, video ini menonaktifkan pembuatan depth map, sehingga isi tampilan
Scenepada video berbeda dari isi runtime yang sebenarnya. Efek yang terlihat pada tampilanGamesama seperti saat transparansi mesh dimatikan.
[Opsional] XR Origin (Unity XR)
Jika diperlukan, Anda dapat memilih memakai komponen XR Origin yang disediakan Unity XR framework.
Saat memakai XR Origin dari Unity XR framework, struktur umumnya sebagai berikut:

Pada scene headset, struktur umum adalah sebagai berikut:

Root node XR Origin adalah GameObject yang dibuat dan dikelola oleh Unity XR framework, dan dapat memiliki satu atau beberapa child node XR Origin Child. XR Origin Child berisi komponen XROriginChildController, yang digunakan untuk mewakili logika kontrol XR Origin.
Saat session berjalan, jika struktur XR Origin Child di scene tidak benar, XR Origin Child akan dibuat otomatis. Selama runtime, XR Origin Child akan dikunci pada posisi dan orientasi yang sama dengan XR Origin.
XR Origin yang disediakan Unity XR framework terutama mendukung dua situasi berikut:
- Anda sudah menggunakan AR Foundation di project dan ingin bekerja bersama EasyAR atau beralih di antara keduanya berdasarkan dukungan perangkat.
- SDK headset yang Anda gunakan memakai komponen XR Origin yang disediakan Unity XR framework.
Catatan
Saat paket inti Unity XR com.unity.xr.core-utils belum diimpor ke project, jika kamera di scene berada pada hierarki yang sama dengan XR Origin yang disediakan Unity XR framework (Camera dan parent node bernama Camera Offset), session akan menganggap struktur itu dibuat oleh Unity XR framework dan menggunakannya. Hal ini dilakukan agar scene tetap kompatibel semaksimal mungkin, yaitu scene yang dibuat dengan AR Foundation akan tetap berjalan walaupun AR Foundation tidak diimpor ke project, sementara sisa fungsi AR tetap normal. Kecuali fitur yang hanya disediakan AR Foundation, ini bahkan tidak memengaruhi fungsi AR keseluruhan maupun kompatibilitas perangkat.
Sebagian besar scene contoh EasyAR memakai cara ini agar tetap bisa berjalan tanpa AR Foundation dan tetap dapat menunjukkan kemampuan kolaborasi dengan AR Foundation jika AR Foundation tersedia.
Dalam definisi AR Foundation, XR Origin adalah pusat tracking spasial di XR scene. Namun perlu dicatat bahwa dalam konsep AR Foundation, tracking motion dianggap sebagai fungsi wajib, dan tracking di XR scene yang dijelaskannya adalah tracking motion.
Dalam sistem EasyAR, tracking motion adalah fungsi opsional, sehingga XR Origin juga opsional. XR Origin hanya dibuat dan digunakan ketika fungsi tracking motion diaktifkan.
Siklus hidup XR Origin
Siklus hidup XR Origin bergantung pada session. Saat session dimulai, XR Origin akan dipilih atau dibuat (jika struktur XR Origin di scene tidak benar). Saat session dihentikan, XR Origin akan tetap berada di tempatnya hingga dipakai oleh session berikutnya atau dihapus secara manual.
Langkah berikutnya
Membuat
- Coba membuat XR Origin di scene
Mengontrol runtime
- Pelajari strategi kontrol Active untuk XR Origin