Table of Contents

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

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:

alt text

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:

alt text

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.

Langkah selanjutnya