Pelajari cara menggunakan Cloud Anchor di aplikasi Anda sendiri.
Prasyarat
Pastikan Anda memahami konsep dasar AR dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.
Jika Anda baru menggunakan Cloud Anchor:
- Pastikan Anda memahami cara kerja anchor dan Cloud Anchor.
- Baca panduan memulai Cloud Anchors untuk mengetahui persyaratan sistem, penyiapan, dan petunjuk penginstalan.
Mengaktifkan ARCore API
Sebelum menggunakan Cloud Anchors di aplikasi, Anda harus mengaktifkan ARCore API terlebih dahulu di aplikasi Anda.
Mengaktifkan kemampuan Cloud Anchor dalam konfigurasi sesi
Setelah fungsi Cloud Anchors diaktifkan di aplikasi Anda, aktifkan kemampuan Cloud Anchors di konfigurasi sesi AR aplikasi Anda agar dapat berkomunikasi dengan ARCore API:
Java
Config config = new Config(session); config.setCloudAnchorMode(Config.CloudAnchorMode.ENABLED); session.configure(config);
Kotlin
val config = Config(session) config.cloudAnchorMode = Config.CloudAnchorMode.ENABLED session.configure(config)
Menghosting Cloud Anchor
Hosting dimulai dengan panggilan ke 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:
- Panggil
hostCloudAnchorAsync()
. - Tunggu callback, atau terus periksa status Future hingga selesai.
- Periksa status hasil untuk menentukan apakah operasi berhasil, atau menafsirkan kode error jika gagal.
- Bagikan hasil ID Cloud Anchor kepada klien lain, lalu gunakan untuk me-resolve Cloud Anchor dengan
resolveCloudAnchorAsync()
Memeriksa kualitas pemetaan titik fitur
Session.FeatureMapQuality
menunjukkan kualitas titik fitur yang dilihat oleh ARCore dalam beberapa detik sebelumnya dari pose kamera tertentu. Cloud Anchors yang dihosting menggunakan fitur berkualitas lebih tinggi umumnya dapat diselesaikan dengan lebih akurat. Gunakan Session.estimateFeatureMapQualityForHosting()
untuk mendapatkan estimasi kualitas peta fitur untuk pose kamera tertentu.
Nilai | Deskripsi |
---|---|
INSUFFICIENT |
Kualitas titik fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya termasuk rendah. Status ini menunjukkan bahwa ARCore kemungkinan akan lebih sulit me-resolve Cloud Anchor. Dorong pengguna untuk memindahkan perangkat sehingga posisi Cloud Anchor yang diinginkan yang ingin mereka host dapat dilihat dari berbagai sudut. |
SUFFICIENT |
Kualitas titik fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya mungkin cukup bagi ARCore untuk berhasil me-resolve Cloud Anchor, meskipun akurasi pose yang di-resolve kemungkinan akan berkurang. Dorong pengguna untuk memindahkan perangkat agar posisi Cloud Anchor yang diinginkan yang ingin dihosting dapat dilihat dari berbagai sudut. |
GOOD |
Kualitas titik fitur yang diidentifikasi dari pose dalam beberapa detik sebelumnya mungkin cukup bagi ARCore untuk berhasil me-resolve Cloud Anchor dengan tingkat akurasi yang tinggi. |
Me-resolve anchor yang dihosting sebelumnya
Panggil resolveCloudAnchorAsync()
untuk me-resolve Cloud Anchor yang dihosting. ARCore API secara berkala membandingkan fitur visual dari tampilan dengan peta fitur 3D anchor untuk menentukan posisi dan orientasi pengguna relatif terhadap 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 dilakukan dalam satu waktu.
Membatalkan operasi atau menghapus Cloud Anchor
Panggil cancel()
untuk membatalkan operasi Cloud Anchor yang tertunda.
Panggil detach()
untuk menghapus Cloud Anchor yang sudah diselesaikan dari aplikasi.
Memeriksa status hasil operasi Cloud Anchor
Gunakan Anchor.CloudAnchorState untuk memeriksa status hasil operasi hosting atau penyelesaian, termasuk error.
Nilai | Deskripsi |
---|---|
ERROR_CLOUD_ID_NOT_FOUND |
Penyelesaian gagal karena ARCore API tidak dapat menemukan ID Cloud Anchor yang diberikan. |
ERROR_HOSTING_DATASET_PROCESSING_FAILED |
Hosting gagal karena server tidak berhasil memproses set data untuk anchor yang diberikan. Coba lagi setelah perangkat mengumpulkan lebih banyak data dari lingkungan. |
ERROR_HOSTING_SERVICE_UNAVAILABLE |
ARCore API tidak dapat dijangkau. Ini dapat terjadi karena beberapa alasan. Perangkat mungkin dalam mode pesawat atau tidak memiliki koneksi Internet yang berfungsi. Waktu permintaan yang dikirim ke server mungkin telah habis tanpa respons. Mungkin ada koneksi jaringan yang buruk, ketidaktersediaan DNS, masalah firewall, atau hal lainnya yang mungkin memengaruhi kemampuan perangkat untuk terhubung ke ARCore API. |
ERROR_INTERNAL |
Tugas hosting atau penyelesaian untuk anchor ini selesai dengan error internal. Aplikasi tidak boleh mencoba memulihkan dari error ini. |
ERROR_NOT_AUTHORIZED |
Otorisasi yang diberikan oleh aplikasi tidak valid. Lihat Memecahkan masalah terkait otorisasi ARCore API. |
ERROR_RESOLVING_SDK_VERSION_TOO_NEW |
Cloud Anchor tidak dapat diselesaikan karena versi SDK yang digunakan untuk me-resolve anchor lebih baru dari, dan tidak kompatibel dengan, versi yang digunakan untuk menghostingnya. |
ERROR_RESOLVING_SDK_VERSION_TOO_OLD |
Cloud Anchor tidak dapat diselesaikan karena versi SDK yang digunakan untuk me-resolve anchor lebih lama dari, dan tidak kompatibel dengan, versi yang digunakan untuk menghostingnya. |
ERROR_RESOURCE_EXHAUSTED |
Aplikasi telah menghabiskan kuota permintaan yang dialokasikan untuk project Google Cloud tertentu. Anda harus meminta kuota tambahan untuk ARCore API untuk project Anda dari Konsol Google Developers. |
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 | project |
Permintaan host Anchor | 30 | menit | Alamat IP dan project |
Anchor permintaan resolve | 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.). Tindakan ini memberi pelacakan waktu untuk stabil.
- Saat memilih lokasi untuk menghosting anchor, coba temukan 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.
Tetap arahkan kamera ke pusat minat dan gerakkan perangkat di sekitar pusat minat untuk memetakan lingkungan dari berbagai sudut, dengan mempertahankan jarak fisik yang kira-kira sama saat Anda melakukannya. Tindakan ini akan membantu menangkap lebih banyak data visual dan membuat resolusi lebih andal.
Pastikan ada pencahayaan yang cukup di lingkungan nyata saat menghosting dan me-resolve Cloud Anchors.
Kebijakan penghentian layanan
- Aplikasi yang di-build dengan ARCore SDK 1.12.0 atau yang lebih tinggi tercakup dalam kebijakan penghentian Cloud Anchor API.
- Aplikasi yang dibuat dengan ARCore SDK 1.11.0 atau yang lebih lama tidak dapat menghosting atau me-resolve Cloud Anchor karena SDK menggunakan ARCore API lama yang tidak digunakan lagi.
Langkah selanjutnya
- Membuat aplikasi Cloud Anchors dengan codelab Cloud Anchors ARCore dengan codelab persisten.
- Pelajari cara menghosting dan menyelesaikan Cloud Anchors melalui dua aplikasi contoh dalam panduan memulai Cloud Anchors.
- Kelola Cloud Anchors di luar aplikasi ARCore Anda menggunakan Cloud Anchors Management API.
- Lihat dokumentasi referensi Android untuk mengetahui cara lain menggunakan ARCore di aplikasi Anda.