Tentang codelab ini
1. Sebelum memulai
ARCore adalah framework Google untuk membangun pengalaman augmented reality (AR) di smartphone. Geospatial Streetscape Geometry dan API anchor atap membuat pengalaman AR dapat memahami aneka gedung di sekitar pengguna Anda.
Dalam codelab ini, Anda akan membangun aplikasi AR yang memvisualisasikan streetscape geometry di area Anda dan memungkinkan Anda mendekorasi sisi-sisinya. Selanjutnya, Anda akan menggunakan anchor atap untuk menambahkan dekorasi ke atap gedung di sekitar Anda.
Prasyarat
- Pengetahuan dasar tentang AR
- Pengetahuan dasar tentang ARCore Geospatial API
Yang akan Anda pelajari
- Cara menyiapkan project Google Cloud yang dapat menggunakan ARCore Geospatial API.
- Cara memperoleh streetscape geometry dari Geospatial API.
- Cara memvisualisasikan gedung dan medan yang diperoleh dari streetscape geometry.
- Cara melakukan penghitungan dasar atas poligon yang diperoleh.
- Cara menjalankan hit-test atas geometri.
- Cara menggunakan anchor atap untuk menyematkan konten ke bagian atas gedung.
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
Untuk menggunakan Geospatial API dengan Kotlin dan Android Studio, Anda memerlukan project Google Cloud dan project awal kami.
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.
Menyiapkan Android Studio
Untuk membantu Anda mulai menggunakan Geospatial API, kami menyediakan project awal yang mencakup dasar-dasar project ARCore yang terintegrasi dengan Geospatial API.
Untuk menyiapkan Android Studio, 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-streetscape-geometry-rooftop-anchors.git
untuk mengimpor 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. Anda juga akan melihat tombol dan kontrol yang sepertinya tidak memiliki fungsi. Anda harus memprogram fungsi tersebut ke dalam project melalui codelab ini.
3. Memvisualisasikan data streetscape-geometry
Setelah mengonfirmasi bahwa Geospatial API dapat berjalan di perangkat Anda, dapatkan streetscape geometry dari Geospatial API.
Mengaktifkan streetscape geometry
- Dalam file
StreetscapeGeometryActivity.kt
, temukan baris berikut:// TODO: Enable Streetscape Geometry.
- Setelah baris ini, aktifkan mode streetscape-geometry:
Setelah Geospatial API dan mode streetscape-geometry diaktifkan, aplikasi Anda dapat menerima informasi streetscape-geometry di sekitar pengguna.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
Memperoleh streetscape geometry
- Dalam file
StreetscapeGeometryActivity.kt
, temukan baris berikut:// TODO: Obtain Streetscape Geometry.
- Setelah baris ini, peroleh streetscape geometry dengan mendapatkan semua objek
Trackable
dan memfilternya berdasarkanStreetscapeGeometry
: Anda akan menggunakan geometri ini dalam visualisasi sederhana yang disediakan dalam contoh project. Visualisasi ini menampilkan setiap poligon gedung atau medan dalam warna berbeda.val streetscapeGeometry = session.getAllTrackables(StreetscapeGeometry::class.java)
- Pada baris berikutnya, tambahkan kode berikut:
streetscapeGeometryRenderer.render(render, streetscapeGeometry)
- Jalankan aplikasi dan kunjungi sebuah gedung di area Anda.
- Setelah lokasi Geospasial dilengkapi, ketuk
Settings dan aktifkan visualisasi streetscape-geometry.
- Lihat sebuah gedung sebagai AR. Setiap segmen gedung memiliki warna berbeda, serta Enum
Quality
danType
dari geometri paling tengah ditampilkan.
4. Menjalankan hit-test dengan data streetscape-geometry
Setelah dapat melihat streetscape geometry, sekarang Anda dapat menggunakan hit-test untuk mendekorasi gedung. Hit-test mencari titik potong antara geometri virtual dan sebuah sinar. Anda menggunakan hit-test untuk menemukan geometri di mana pengguna melakukan ketukan.
Menjalankan hit-test
Di bagian ini, Anda akan menempatkan bintang di fasad gedung saat pengguna mengetuk geometri gedung tersebut. Anda melakukannya dengan hit-test dari perspektif pengguna di dunia nyata, dan mencatat objek AR mana saja yang ditemuinya ketika keluar. Selanjutnya, Anda menggunakan informasi ini untuk memeriksa apakah pengguna tersebut mengetuk poligon gedung atau tidak.
- Dalam file
StreetscapeCodelabRenderer.kt
, temukan baris berikut:// TODO: Create an anchor for a star, and add it to the starAnchors object.
- Setelah baris ini, tambahkan kode berikut:
Kode ini menggunakan koordinat pusat untuk menemukan sebuah streetscape geometry yaitu sebuah gedung. Anda akan menggunakan hasil ini untuk menambahkan dekorasi.val centerHits = frame.hitTest(centerCoords[0], centerCoords[1])
val hit = centerHits.firstOrNull {
val trackable = it.trackable
trackable is StreetscapeGeometry && trackable.type == StreetscapeGeometry.Type.BUILDING
} ?: return
Menambahkan dekorasi bintang setelah ketukan
- Dalam file
StreetscapeCodelabRenderer.kt
, temukan baris berikut:// TODO: Create an anchor for a star, and add it to the starAnchors object.
- Setelah baris ini, tambahkan kode berikut:
Classval transformedPose = ObjectPlacementHelper.createStarPose(hit.hitPose)
val anchor = hit.trackable.createAnchor(transformedPose)
starAnchors.add(anchor)ObjectPlacementHelper
menentukan lokasi yang tepat untuk menempatkan bintang Anda dengan melihat pose hit. ObjekstarAnchors
digunakan untuk merender bintang dalam tampilan AR.
Mencobanya
- Jalankan aplikasi dan kunjungi sebuah gedung di area Anda.
- Setelah lokasi geospasial dilengkapi, arahkan kamera Anda ke gedung dan ketuk layar. Anda akan melihat sebuah bintang muncul di atas gedung itu di tengah-tengah layar.
5. Menggunakan data anchor atap
Terakhir, Anda akan menggunakan anchor atap untuk menambahkan dekorasi ke bagian atas gedung. Anchor atap membantu Anda menyematkan anchor AR ke bagian atas gedung beserta informasi garis lintang dan bujur. Anda menggunakan anchor ini untuk menyematkan balon ke gedung di sekitar pengguna.
Menambahkan perilaku ke mode balon
Project ini memiliki dua mode penempatan aset: mode bunga matahari yang telah Anda gunakan dan mode balon.
Untuk memprogram perilaku mode balon, ikuti langkah-langkah berikut:
- Dalam file
StreetscapeCodelabRenderer.kt
, temukan baris berikut:// TODO: Create an anchor for a balloon and add it to the balloonAnchors object.
- Gunakan pose hit untuk membuat titik yang ideal bagi balon Anda:
val transformedPose = ObjectPlacementHelper.createBalloonPose(hit.hitPose)
- Konversi variabel
transformedPose
menjadi pose geospasial:val earth = session?.earth ?: return
val geospatialPose = earth.getGeospatialPose(transformedPose) - Buat anchor atap dengan garis lintang dan bujur yang telah ditransformasi:
earth.resolveAnchorOnRooftopAsync(
geospatialPose.latitude, geospatialPose.longitude,
0.0,
transformedPose.qx(), transformedPose.qy(), transformedPose.qz(), transformedPose.qw()
) { anchor, state ->
if (!state.isError) {
balloonAnchors.add(anchor)
}
}
Mencobanya
- Jalankan aplikasi dan kunjungi sebuah gedung di area Anda.
- Setelah lokasi geospasial dilengkapi, beralihlah ke mode balon dan ketuk sebuah gedung. Anda akan melihat sebuah balon ditampilkan di atas atap gedung tersebut.
6. Kesimpulan
Selamat! Anda telah membangun aplikasi AR yang memvisualisasikan streetscape geometry di area Anda dan memungkinkan Anda mendekorasi sisi-sisinya dengan bintang. Anda juga telah menggunakan anchor atap untuk menambahkan balon ke atap gedung di sekitar Anda.