Table of Contents

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

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:

alt text

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:

alt text

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.

Langkah berikutnya