1. Sebelum memulai
ARCore adalah framework Google untuk membangun pengalaman augmented reality (AR) di smartphone. Scene Semantics dan Geospatial Depth API membantu pengalaman AR Anda memahami lingkungan di sekitar pengguna Anda.
Scene Semantics API menggunakan model machine learning (ML) untuk menganalisis gambar kamera dan memberikan gambar piksel berlabel. Ini dapat membedakan antara 11 label luar ruangan yang berbeda.
Geospatial Depth API menggabungkan informasi kedalaman dari gerakan dan sensor hardware apa pun yang aktif, seperti waktu penerbangan, dengan data Streetscape Geometry API. Ini meningkatkan kesalahan dalam pengamatan kedalaman hingga 65 meter.
Dalam codelab ini, Anda mem-build aplikasi AR yang memvisualisasikan hasil Scene Semantics dan Geospatial Depth API.
Prasyarat
- Pengetahuan dasar tentang AR
Yang akan Anda pelajari
- Cara mengaktifkan Scene Semantics API.
- Cara mendapatkan dan memvisualisasikan gambar semantik.
- Cara mendapatkan dan memvisualisasikan gambar semantic-confidence.
- Cara menentukan persentase piksel yang sesuai dengan label tertentu.
- Cara menyiapkan project Google Cloud yang dapat menggunakan ARCore Geospatial API.
- Cara mengaktifkan Geospatial Depth API.
- Cara memvisualisasikan kedalaman gambar.
Yang Anda butuhkan
- Perangkat Android yang didukung ARCore yang terhubung dengan kabel USB ke mesin pengembangan dan dikonfigurasi dengan proses debug USB.
- Layanan Google Play untuk AR versi 1.37 atau yang lebih baru yang diinstal di perangkat pengembangan Android.
- Android Studio yang diinstal dan dikonfigurasi untuk membangun aplikasi Android.
2. Menyiapkan lingkungan Anda
Untuk membantu Anda mulai menggunakan Geospatial API, kami menyediakan project awal yang mencakup dasar-dasar project ARCore dan beberapa fungsi bantuan.
Untuk menyiapkan proyek awal, ikuti langkah-langkah berikut:
- Buka Android Studio dan lakukan salah satu tindakan berikut:
- Jika sudah ada project yang terbuka, klik File > New > Project from version control.
- Jika jendela Welcome to Android Studio ditampilkan, klik Get from VCS.
- Pilih Git dan masukkan
https://github.com/google-ar/codelab-scene-semantics-geospatial-depth.git
untuk mengimpor project.
3. Memvisualisasikan data Scene Semantics API
Mengaktifkan Scene Semantics API
Scene Semantics API dinonaktifkan secara default untuk menghemat daya pemrosesan.
Untuk mengaktifkan Scene Semantics API, ikuti langkah-langkah berikut:
- Dalam file
CodelabActivity.kt
, temukan baris berikut:// TODO: Enable the Scene Semantics API.
- Setelah baris tersebut, jika perangkat Anda mendukungnya, aktifkan Scene Semantics API di konfigurasi sesi:
if (session.isSemanticModeSupported(Config.SemanticMode.ENABLED)) { semanticMode = Config.SemanticMode.ENABLED }
Mendapatkan dan memvisualisasikan gambar semantik
Gambar semantik adalah hasil dari model ML ARCore yang menetapkan Enum SemanticLabel
ke setiap piksel dalam feed kamera.
Untuk mendapatkan gambar semantik dan menampilkannya di layar, ikuti langkah-langkah berikut:
- Dalam file
CodelabRenderer.kt
, temukan baris berikut:// TODO: Obtain the semantic image for this frame.
- Setelah baris tersebut, dapatkan gambar semantik:
Gambar semantik digunakan di kelasframe.acquireSemanticImage().use { image -> semanticRenderer.updateCameraSemanticsTexture(image) activity.view.semanticLabelAtCenter = getLabelAt(image, image.width/2, image.height/2) }
SemanticRenderer
untuk ditampilkan di layar. Anda memperbarui variabelsemanticLabelAtCenter
untuk menampilkan label semantik di tengah layar pada tampilan aplikasi. - Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantik berubah saat Anda melihat tipe objek yang berbeda.
- Ketuk Settings untuk mengaktifkan gambar overlay semantic-confidence.
Mendapatkan dan memvisualisasikan gambar semantic-confidence
Gambar semantic-confidence memberikan indikasi seberapa percaya diri ARCore dalam label semantik pada piksel yang cocok.
Untuk mendapatkan gambar semantik dan menampilkannya di layar, ikuti langkah-langkah berikut:
- Dalam file
CodelabRenderer.kt
, temukan baris berikut:// TODO: Obtain the confidence image for this frame.
- Setelah baris ini, dapatkan gambar semantik:
Gambar semantic-confidence digunakan di kelasframe.acquireSemanticConfidenceImage().use { image -> semanticRenderer.updateConfidenceSemanticsTexture(image) activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2) }
SemanticRenderer
untuk ditampilkan di layar. Anda memperbarui variabelconfidenceAtCenter
untuk menampilkan label semantik di tengah layar pada tampilan aplikasi. - Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantic-confidence berubah saat Anda melihat tipe objek yang berbeda.
- Ketuk Settings untuk mengaktifkan gambar overlay semantic-confidence.
Menentukan prevalensi label
Prevalensi label adalah persentase gambar semantik yang sama dengan label tertentu. Misalnya, jika 26% gambar memiliki nilai SemanticLabel.SKY
, maka nilai prevalensi untuk nilai SemanticLabel.SKY
adalah 0.26f
.
Untuk mendapatkan prevalensi label dan menampilkannya di layar, ikuti langkah-langkah berikut:
- Dalam file
CodelabRenderer.kt
, temukan baris berikut:// TODO: Obtain the prevalence of the selected label for this frame.
- Setelah baris tersebut, dapatkan prevalensi untuk label yang dipilih:
frame.acquireSemanticConfidenceImage().use { image -> semanticRenderer.updateConfidenceSemanticsTexture(image) activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2) }
- Jalankan aplikasi Anda, dan arahkan kamera ke berbagai objek di luar ruangan. Tampilan label semantic-confidence berubah saat Anda melihat tipe objek yang berbeda.
- Ketuk Settings untuk mengaktifkan gambar overlay semantic-confidence.
4. Memvisualisasikan data Geospatial Depth API
Geospatial Depth API meningkatkan pembacaan kedalaman saat Geospatial dan Streetscape Geometry API diaktifkan. Untuk menggunakan Geospatial Depth API dengan Kotlin dan Android Studio, Anda memerlukan project Google Cloud.
Menyiapkan project Google Cloud
ARCore Geospatial API terhubung dengan Google Cloud untuk menyediakan informasi lokasi dari Sistem Pemosisi Visual (VPS) Google di area-area yang dicakup oleh Google Street View.
Untuk menggunakan server ini di project Anda, ikuti langkah-langkah berikut:
- Buat project di Google Cloud.
- Di kolom Project name, masukkan nama yang sesuai, misalnya
ARCore Geospatial API project
, lalu pilih sebuah lokasi. - Klik Create.
- Di Konsol Google Cloud di halaman pemilih project, klik Create Project.
- Klik link berikut guna melihat ARCore API untuk project ini, lalu klik Enable:
- Buat kunci API untuk project Anda:
- Di bagian APIs & services, pilih Credentials.
- Klik Create credentials dan pilih API key.
- Catat kunci ini karena Anda akan memerlukannya nanti.
Anda telah membuat project Google Cloud dengan otorisasi kunci API, dan sekarang Anda siap menggunakan Geospatial API dalam contoh project.
Mengintegrasikan kunci API dengan project Android Studio
Untuk mengaitkan kunci API dari Google Cloud dengan project Anda, ikuti langkah-langkah berikut:
- Di Android Studio, klik app > src dan klik dua kali
AndroidManifest.xml
. - Temukan entri
meta-data
berikut:<meta-data android:name="com.google.android.ar.API_KEY" android:value="API_KEY" />
- Ganti placeholder
API_KEY
dengan kunci API yang telah dibuat di project Google Cloud Anda. Nilai yang tersimpan dicom.google.android.ar.API_KEY
akan memberikan otorisasi kepada aplikasi ini untuk menggunakan Geospatial API.
Memverifikasi project
- Untuk memverifikasi project, jalankan aplikasi Anda di perangkat pengembangan. Anda akan melihat tampilan kamera dan informasi debug geospasial di bagian atas layar.
Mengaktifkan konfigurasi yang diperlukan
Geospatial Depth API memerlukan tiga setelan untuk diaktifkan di konfigurasi sesi aplikasi Anda.
Untuk mengaktifkannya, ikuti langkah-langkah berikut:
- Dalam file
CodelabRenderer.kt
, temukan baris berikut:// TODO: Enable the Geospatial API, the Streetscape Geometry API, and the Depth API.
- Pada baris berikutnya, tambahkan kode berikut:
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. geospatialMode = Config.GeospatialMode.ENABLED streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED depthMode = Config.DepthMode.AUTOMATIC }
Memvisualisasikan informasi depth
- Dalam file
CodelabRenderer.kt
, temukan baris berikut:// TODO: Obtain depth information and display it.
- Pada baris berikutnya, tambahkan kode berikut:
try { frame.acquireDepthImage16Bits().use { image -> backgroundRenderer.updateCameraDepthTexture(depthImage) } } catch (e: NotYetAvailableException) { // No depth information is available. }
- Jalankan aplikasi dan kunjungi sebuah gedung di area Anda.
- Setelah lokasi Geospasial dilengkapi, ketuk Settings dan aktifkan visualisasi geospatial-depth.
- Lihat bangunan dalam AR, dan bandingkan dengan informasi kedalaman tanpa kedalaman geospasial.
5. Kesimpulan
Selamat! Anda telah membangun aplikasi AR yang memvisualisasikan semantik adegan dan kedalaman geospasial.