Panduan developer Cloud Anchors untuk Unity (AR Foundation)

Pelajari cara menggunakan Cloud Anchors di aplikasi Anda sendiri.

Prasyarat

Pastikan Anda memahami konsep AR dasar dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.

Jika baru menggunakan Cloud Anchors, pastikan Anda memahami cara kerja anchor dan Cloud Anchor.

Mengaktifkan ARCore API

Sebelum menggunakan Cloud Anchors di aplikasi, Anda harus mengaktifkan ARCore API terlebih dahulu di aplikasi.

Mengaktifkan kemampuan Cloud Anchor dalam konfigurasi sesi

Setelah fungsi Cloud Anchors diaktifkan di aplikasi Anda, aktifkan kemampuan Cloud Anchors dalam konfigurasi sesi AR aplikasi agar dapat berkomunikasi dengan ARCore API:

Menghosting Cloud Anchor

Hosting dimulai dengan panggilan ke ARAnchorManager.HostCloudAnchorAsync(). ARCore akan mengupload data visual, pose perangkat, dan pose anchor ke ARCore API. API kemudian memproses informasi ini untuk membuat peta fitur 3D, yang pada akhirnya menampilkan ID Cloud Anchor unik untuk anchor ke perangkat.

Anda juga dapat memperpanjang masa pakai anchor yang dihosting menggunakan ARCore Cloud Anchor Management API.

Aplikasi Anda harus mengikuti langkah-langkah berikut untuk menyelesaikan hosting Cloud Anchor:

  1. Panggil ARAnchorManager.HostCloudAnchorAsync().
  2. Mulai coroutine untuk menunggu hingga Promise memberikan hasil. Lihat Coroutine di Unity untuk informasi tambahan.
  3. Periksa status hasil untuk menentukan apakah operasi berhasil, atau interpretasikan kode error jika gagal.
  4. Bagikan ID Cloud Anchor hasil kepada klien lain, dan gunakan untuk me-resolve Cloud Anchor dengan ARAnchorManagerExtensions.ResolveCloudAnchorAsync().

Memeriksa kualitas pemetaan titik fitur

ARCoreExtensions.FeatureMapQuality menunjukkan kualitas titik fitur yang dilihat oleh ARCore dalam beberapa detik sebelumnya dari pose kamera tertentu. Cloud Anchor yang dihosting menggunakan fitur berkualitas lebih tinggi umumnya diselesaikan dengan lebih akurat. Gunakan ARAnchorManagerExtensions.EstimateFeatureMapQualityForHosting() untuk mendapatkan estimasi kualitas peta fitur untuk pose kamera tertentu.

Nilai Deskripsi
Insufficient Kualitas poin fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya rendah. Status ini menunjukkan bahwa ARCore kemungkinan akan lebih kesulitan dalam me-resolve Cloud Anchor. Dorong pengguna untuk memindahkan perangkat sehingga posisi Cloud Anchor yang ingin mereka hosting dapat dilihat dari berbagai sudut.
Sufficient Kualitas poin fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya kemungkinan cukup bagi ARCore untuk berhasil menyelesaikan Cloud Anchor, meskipun akurasi pose yang di-resolve kemungkinan akan berkurang. Dorong pengguna untuk memindahkan perangkat sehingga posisi Cloud Anchor yang ingin mereka hosting dapat dilihat dari berbagai sudut.
Good Kualitas poin fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya kemungkinan sudah cukup bagi ARCore untuk berhasil menyelesaikan Cloud Anchor dengan tingkat akurasi yang tinggi.

Menyelesaikan anchor yang sebelumnya dihosting

Panggil ARAnchorManagerExtensions.ResolveCloudAnchorAsync() untuk me-resolve Cloud Anchor yang dihosting. ARCore API secara berkala membandingkan fitur visual dari scene terhadap peta fitur 3D anchor untuk menunjukkan posisi dan orientasi pengguna terkait anchor. Jika menemukan kecocokan, API akan menampilkan pose Cloud Anchor yang dihosting.

Anda dapat memulai penyelesaian untuk beberapa Cloud Anchor secara berurutan. Hingga 40 operasi Cloud Anchor serentak dapat ada dalam satu waktu.

Membatalkan operasi atau menghapus Cloud Anchor

ARCloudAnchor.OnDestroy() otomatis dipanggil saat komponen ARCloudAnchor dihapus dari objek game yang memuatnya. Tindakan ini akan melepaskan dan melepaskan objek Cloud Anchor native yang mendasarinya.

Memeriksa status hasil operasi Cloud Anchor

Gunakan CloudAnchorState untuk memeriksa status hasil operasi hosting atau penyelesaian, termasuk error.

Nilai Deskripsi
ErrorResolvingCloudIdNotFound Pemecahan masalah gagal karena ARCore API tidak dapat menemukan ID Cloud Anchor yang diberikan.
ErrorHostingDatasetProcessingFailed Hosting gagal karena server tidak berhasil memproses set data untuk anchor yang ditentukan. Coba lagi setelah perangkat mengumpulkan lebih banyak data dari lingkungan.
ErrorHostingServiceUnavailable ARCore API tidak dapat dijangkau. Ini dapat terjadi karena beberapa alasan. Perangkat mungkin dalam mode pesawat atau mungkin tidak memiliki koneksi Internet yang berfungsi. Permintaan yang dikirim ke server mungkin kehabisan waktu tanpa respons. Mungkin ada koneksi jaringan yang buruk, DNS tidak tersedia, masalah firewall, atau hal lainnya yang dapat memengaruhi kemampuan perangkat untuk terhubung ke ARCore API.
ErrorInternal Tugas hosting atau penyelesaian untuk anchor ini selesai dengan error internal. Aplikasi tidak boleh mencoba memulihkan dari error ini.
ErrorNotAuthorized Aplikasi tidak dapat berkomunikasi dengan ARCore API karena otorisasi tidak valid. Lihat Setelan Project > XR > Ekstensi ARCore untuk mengetahui strategi otorisasi yang valid.
ErrorResolvingPackageTooNew Cloud Anchor tidak dapat di-resolve karena paket ARCore Extensions yang digunakan untuk me-resolve Cloud Anchor lebih baru dari, dan tidak kompatibel dengan, versi yang digunakan untuk menghostingnya.
ErrorResolvingPackageTooOld Cloud Anchor tidak dapat di-resolve karena paket ARCore Extensions yang digunakan untuk me-resolve Cloud Anchor lebih lama dari, dan tidak kompatibel dengan, versi yang digunakan untuk menghostingnya.
ErrorResourceExhausted Aplikasi telah menghabiskan kuota permintaan yang dialokasikan untuk project Google Cloud yang ditentukan. Anda harus meminta kuota tambahan untuk ARCore API untuk project Anda dari Google Developers Console.
Success Tugas hosting atau penyelesaian untuk anchor ini berhasil diselesaikan.

Kuota API untuk permintaan host dan penyelesaian

ARCore API memiliki kuota berikut untuk bandwidth permintaan:

Jenis kuota Maksimum Durasi Berlaku untuk
Jumlah anchor tak terbatas T/A rencana
Permintaan host anchor 30 menit Alamat IP dan project
Permintaan resolve anchor 300 menit Alamat IP dan project

Praktik terbaik untuk pengalaman pengguna yang baik

Minta pengguna untuk melakukan hal berikut guna memastikan pengalaman pengguna yang baik di aplikasi Anda:

  • Tunggu beberapa detik setelah sesi dimulai sebelum mencoba menghosting anchor (dengan menempatkan objek, dll.). Hal ini memberi waktu agar pelacakan stabil.
  • Saat memilih lokasi untuk menghosting anchor, coba cari area dengan fitur visual yang mudah dibedakan satu sama lain. Untuk hasil terbaik, hindari permukaan reflektif atau permukaan yang tidak memiliki fitur visual, seperti dinding putih kosong.
  • Terus melatih kamera pada pusat minat dan gerakkan perangkat di sekitar pusat minat untuk memetakan lingkungan dari berbagai sudut, dengan mempertahankan jarak fisik yang kira-kira sama dengan yang Anda lakukan. Hal ini akan membantu mengambil lebih banyak data visual dan membuat penyelesaian lebih andal.

  • Pastikan ada pencahayaan yang cukup di lingkungan nyata saat menghosting dan menyelesaikan Cloud Anchors.

Kebijakan penghentian layanan

  • Aplikasi yang dibangun dengan ARCore SDK 1.12.0 atau yang lebih tinggi tercakup dalam kebijakan penghentian penggunaan Cloud Anchor API.
  • Aplikasi yang dibuat dengan ARCore SDK 1.11.0 atau yang lebih rendah tidak dapat menghosting atau me-resolve Cloud Anchor karena penggunaan SDK atas ARCore API lama yang tidak digunakan lagi.

Langkah selanjutnya