Dukungan perangkat dan session report
Karena perbedaan hardware dan performa perangkat, fungsi AR sering kali tidak dapat berjalan di semua perangkat. Karena itu, saat menggunakan fungsi AR, sangat penting untuk menilai dukungan perangkat saat ini secara akurat. Artikel ini menjelaskan bagaimana ketersediaan perangkat diekspresikan di Unity, serta cara memperoleh informasi dukungan perangkat dan ketersediaan session melalui session report (ARSession.Report).
Sebelum memulai
- Pelajari konsep dasar, komposisi, dan workflow session melalui pengantar ARSession
Dukungan perangkat, ketersediaan session, dan assembly
Perangkat yang didukung oleh setiap fungsi AR berbeda. Misalnya, motion tracking memiliki persyaratan tertentu terhadap komponen hardware dan biasanya memerlukan kalibrasi perangkat, sedangkan image tracking dapat berjalan pada hampir semua perangkat yang kameranya tersedia. Karena itu, untuk menentukan apakah sebuah aplikasi AR dapat berjalan pada perangkat tertentu, biasanya perlu diketahui fungsi AR apa yang sedang digunakan, atau dengan kata lain menilai apakah suatu session dapat berjalan pada perangkat tersebut.
Di Unity, proses penilaian di atas dilakukan pada tahap session assembly (Assemble()). Proses assembly akan menentukan status akhir sebelum session dimulai berdasarkan komponen yang ada dalam session dan dukungan perangkat saat ini.
Jika assembly berhasil, session akan masuk ke status Ready dan dapat terus dimulai serta dijalankan. Jika assembly gagal, session akan masuk ke status Broken, dan alasan kegagalan spesifik dapat ditanyakan melalui session report (ARSession.Report).
Session report
Properti ARSession.Report menyediakan laporan runtime session. Sebuah session report berisi field berikut:
| Properti | Deskripsi |
|---|---|
| Availability | Laporan ketersediaan lengkap |
| BrokenReason | Alasan session rusak, valid saat status session adalah Broken |
| Exception | Exception spesifik penyebab session rusak, valid saat status session adalah Broken |
Dalam session report, Anda dapat menggunakan Availability untuk menanyakan ketersediaan setiap komponen, atau menggunakan BrokenReason untuk menanyakan alasan detail kerusakan saat session rusak.
Contoh session report
Misalnya di Windows, jika session berisi ImageTrackerFrameFilter, CameraDeviceFrameSource, dan beberapa komponen frame source lain, proses assembly akan memeriksa ketersediaan setiap komponen dan menghasilkan laporan berikut:

Dapat dilihat bahwa meskipun Availability dari komponen ARCoreFrameSource adalah Unavailable, karena Availability dari ImageTrackerFrameFilter dan CameraDeviceFrameSource sama-sama Available, assembly keseluruhan session berhasil, dan session berhasil masuk ke status Ready.
Jika CameraDeviceFrameSource dihapus dari session, proses assembly akan menghasilkan laporan berikut:

Dapat dilihat bahwa jumlah daftar FrameSources berubah dari 9 menjadi 8. Meskipun Availability dari komponen ImageTrackerFrameFilter masih Available, karena tidak ada komponen frame source yang tersedia, assembly keseluruhan session gagal dan session masuk ke status Broken. Pada saat ini, nilai field BrokenReason dalam laporan adalah NoAvailabileFrameSource, yang berarti tidak ada frame source yang tersedia.
Selain proses assembly, session juga dapat rusak selama runtime, misalnya komponen yang sedang berjalan terhapus secara tidak sengaja. Pada saat itu, alasan kerusakan spesifik juga dapat ditanyakan melalui session report.
Pembaruan laporan
Session report berubah pada waktu berikut:
Tahap pertama assembly selesai
Pada saat ini, session report lengkap akan dibuat, termasuk laporan ketersediaan komponen. Bagian Availability dari session report ditentukan pada saat ini dan tidak akan berubah lagi. Pembaruan laporan ketersediaan komponen dapat diperoleh melalui event AssembleUpdate.
Jika session langsung dimulai setelah assembly, pembaruan session report juga dapat diperoleh melalui event StateChanged. Status session yang perlu diperhatikan meliputi: Ready dan Broken.Tahap kedua assembly selesai Pada saat ini, laporan ketersediaan komponen baru akan dibuat. Kecuali session direstart, session report tidak akan diperbarui. Pembaruan laporan ketersediaan komponen dapat diperoleh melalui event AssembleUpdate.
Saat session dimulai atau session rusak selama runtime
BrokenReason dan Exception dalam session report akan diperbarui. Pembaruan session report dapat diperoleh melalui event StateChanged. Status session yang perlu diperhatikan meliputi: Broken.
Isi laporan: alasan session rusak
BrokenReason menunjukkan alasan session rusak, termasuk situasi berikut:
| Alasan | Deskripsi |
|---|---|
| Uninitialized | Proses assembly: EasyAR Sense tidak berhasil diinisialisasi |
| LicenseInvalid | Proses assembly: verifikasi license EasyAR Sense gagal atau tidak berlaku untuk penggunaan saat ini |
| SessionObjectIncomplete | Proses assembly: object session tidak lengkap. Misalnya RendererFeature tidak dikonfigurasi dengan benar di URP |
| NoAvailabileFrameSource | Proses assembly: tidak ada frame source yang tersedia. Misalnya semua frame source tidak tersedia atau tidak ada frame source yang ditambahkan. Hanya pada konfigurasi session default, situasi ini menunjukkan dukungan perangkat untuk fungsi AR yang dipilih saat ini |
| FrameSourceIncomplete | Proses assembly: frame source tidak lengkap. Umumnya terjadi saat custom frame source tidak mengimplementasikan interface frame source dengan benar |
| FrameFilterNotAvailabile | Proses assembly: ada frame filter yang tidak tersedia. Situasi ini hanya ada pada beberapa opsi assembly. |
| StartFailed | Start gagal. Misalnya terjadi exception selama proses start |
| RunningFailed | Runtime gagal. Misalnya komponen yang sedang berjalan terhapus secara tidak sengaja, atau RendererFeature tidak dikonfigurasi dengan benar di URP. |
Isi laporan: informasi ketersediaan
Availability menyediakan informasi ketersediaan setiap komponen dalam session. Ini berisi field berikut:
| Field | Deskripsi |
|---|---|
| FrameFilters | Daftar ketersediaan frame filter yang diperiksa selama assembly |
| FrameSources | Daftar ketersediaan frame source yang diperiksa selama assembly |
| PendingDeviceList | Tugas download daftar perangkat yang belum selesai |
| DeviceList | Hasil download daftar perangkat |
Field PendingDeviceList dan DeviceList digunakan untuk menunjukkan status download daftar dukungan perangkat. Saat tahap pertama assembly selesai, jika dan hanya jika PendingDeviceList tidak kosong, assembly akan masuk ke tahap kedua. Kondisi ini dapat digunakan untuk menentukan apakah AssembleUpdate akan dieksekusi untuk kedua kalinya.