Dukungan perangkat dan laporan sesi
Karena perbedaan perangkat keras dan kinerja perangkat, fitur AR seringkali tidak dapat berjalan di semua perangkat. Oleh karena itu, sangat penting untuk secara akurat menentukan dukungan perangkat saat ini saat menggunakan fitur AR. Artikel ini menjelaskan bagaimana ketersediaan perangkat diungkapkan di Unity, serta cara mendapatkan informasi tentang dukungan perangkat dan ketersediaan sesi melalui laporan sesi (ARSession.Report).
Sebelum memulai
- Pahami konsep dasar, komponen, dan alur kerja sesi melalui Pengenalan ARSession
Dukungan perangkat, ketersediaan sesi, dan perakitan
Setiap fitur AR dapat mendukung perangkat yang berbeda. Misalnya, pelacakan gerak memiliki persyaratan tertentu untuk komponen perangkat keras dan biasanya memerlukan kalibrasi perangkat, sedangkan fitur pelacakan gambar dapat berjalan di hampir semua perangkat dengan kamera yang berfungsi. Jadi, untuk menentukan apakah aplikasi AR dapat berjalan di suatu perangkat, biasanya perlu diketahui fitur AR apa yang digunakan saat ini, atau dengan kata lain, menentukan apakah suatu sesi dapat berjalan di perangkat tersebut.
Di Unity, proses penentuan tersebut dilakukan pada tahap perakitan sesi (Assemble()). Proses perakitan akan menentukan status akhir sesi sebelum dimulai, berdasarkan komponen yang termasuk dalam sesi dan dukungan perangkat saat ini.
Jika perakitan berhasil, sesi akan memasuki status Ready, dan dapat dilanjutkan untuk dimulai dan dijalankan; jika perakitan gagal, sesi akan memasuki status Broken, dan alasan kegagalan spesifik dapat ditanyakan melalui laporan sesi (ARSession.Report).
Laporan sesi
Properti ARSession.Report menyediakan laporan operasi sesi. Satu laporan sesi berisi bidang-bidang berikut:
| Properti | Deskripsi |
|---|---|
| Availability | Laporan ketersediaan lengkap |
| BrokenReason | Alasan kerusakan sesi, berlaku saat status sesi adalah Broken |
| Exception | Pengecualian spesifik kerusakan sesi, berlaku saat status sesi adalah Broken |
Dalam laporan sesi, ketersediaan setiap komponen dapat ditanyakan melalui Availability, atau alasan kerusakan rinci dapat ditanyakan saat sesi rusak melalui BrokenReason.
Contoh laporan sesi
Misalnya, di Windows, jika sesi berisi ImageTrackerFrameFilter, CameraDeviceFrameSource, serta beberapa komponen frame source lainnya, maka proses perakitan akan memeriksa ketersediaan setiap komponen dan menghasilkan laporan seperti ini:

Terlihat pada gambar meskipun Availability komponen ARCoreFrameSource adalah Unavailable, namun karena Availability ImageTrackerFrameFilter dan CameraDeviceFrameSource adalah Available, maka seluruh perakitan sesi berhasil, dan sesi berhasil memasuki status Ready.
Jika kita menghapus CameraDeviceFrameSource dari sesi, maka proses perakitan akan menghasilkan laporan seperti ini:

Terlihat jumlah daftar FrameSources berubah dari 9 menjadi 8, dan meskipun Availability komponen ImageTrackerFrameFilter masih Available, namun karena tidak ada komponen frame source yang tersedia, maka seluruh perakitan sesi gagal, dan sesi memasuki status Broken. Saat ini, nilai bidang BrokenReason dalam laporan adalah NoAvailabileFrameSource, yang menunjukkan tidak ada frame source yang tersedia.
Selain proses perakitan, sesi yang sedang berjalan juga dapat mengalami kerusakan, misalnya komponen yang sedang berjalan dihapus secara tidak sengaja, dll. Saat itu, alasan kerusakan spesifik juga dapat ditanyakan melalui laporan sesi.
Pembaruan laporan
Laporan sesi akan berubah pada titik waktu berikut:
Tahap pertama perakitan selesai
Saat ini, laporan sesi lengkap akan dihasilkan, termasuk laporan ketersediaan komponen. Bagian Availability laporan sesi akan ditentukan pada saat ini dan tidak berubah lagi.
Pembaruan laporan ketersediaan komponen dapat diperoleh melalui peristiwa AssembleUpdate.
Jika sesi langsung dimulai setelah perakitan, pembaruan laporan sesi juga dapat diperoleh melalui peristiwa StateChanged. Status sesi yang perlu diperhatikan termasuk: Ready dan Broken.Tahap kedua perakitan selesai
Saat ini, laporan ketersediaan komponen baru akan dihasilkan. Kecuali sesi dimulai ulang, laporan sesi tidak akan diperbarui.
Pembaruan laporan ketersediaan komponen dapat diperoleh melalui peristiwa AssembleUpdate.Saat sesi dimulai atau selama berjalan dan sesi rusak
BrokenReason dan Exception laporan sesi akan diperbarui.
Pembaruan laporan sesi dapat diperoleh melalui peristiwa StateChanged. Status sesi yang perlu diperhatikan adalah: Broken.
Isi laporan: alasan kerusakan sesi
BrokenReason menunjukkan alasan kerusakan sesi, dengan situasi berikut:
| Alasan | Deskripsi |
|---|---|
| Uninitialized | Proses perakitan, EasyAR Sense tidak berhasil diinisialisasi |
| LicenseInvalid | Proses perakitan, verifikasi lisensi EasyAR Sense gagal atau tidak berlaku untuk penggunaan saat ini |
| SessionObjectIncomplete | Proses perakitan, objek sesi tidak lengkap. Misalnya, RendererFeature tidak dikonfigurasi dengan benar di URP |
| NoAvailabileFrameSource | Proses perakitan, tidak ada frame source yang tersedia. Misalnya semua frame source tidak tersedia atau tidak ada frame source yang ditambahkan. Hanya dan hanya dalam konfigurasi sesi default, situasi ini menunjukkan dukungan untuk fitur AR yang dipilih perangkat saat ini |
| FrameSourceIncomplete | Proses perakitan, frame source tidak lengkap. Umumnya terjadi saat frame source kustom tidak mengimplementasikan antarmuka frame source dengan benar |
| FrameFilterNotAvailabile | Proses perakitan, terdapat frame filter yang tidak tersedia. Situasi ini hanya ada di beberapa opsi perakitan. |
| StartFailed | Gagal memulai. Misalnya terjadi pengecualian selama proses memulai |
| RunningFailed | Gagal berjalan. Misalnya komponen yang sedang berjalan dihapus secara tidak sengaja, atau RendererFeature tidak dikonfigurasi dengan benar di URP, dll. |
Isi laporan: informasi ketersediaan
Availability menyediakan informasi ketersediaan setiap komponen dalam sesi. Ini berisi bidang-bidang berikut:
| Bidang | Deskripsi |
|---|---|
| FrameFilters | Daftar ketersediaan frame filter yang diperiksa selama proses perakitan |
| FrameSources | Daftar ketersediaan frame source yang diperiksa selama proses perakitan |
| PendingDeviceList | Tugas unduhan daftar perangkat yang belum selesai |
| DeviceList | Hasil unduhan daftar perangkat |
Bidang PendingDeviceList dan DeviceList digunakan untuk menunjukkan status unduhan daftar dukungan perangkat. Saat tahap pertama perakitan selesai, jika dan hanya jika PendingDeviceList tidak kosong, perakitan akan memasuki tahap kedua. Kondisi ini dapat digunakan untuk menentukan apakah AssembleUpdate akan dieksekusi untuk kedua kalinya.