GeospatialPose menjelaskan posisi di ruang relatif terhadap Bumi. Arsitektur ini terdiri dari komponen berikut:
- Lintang dan bujur, yang ditentukan dalam derajat seperti yang ditentukan oleh spesifikasi WGS84.
- Ketinggian, yang ditentukan dalam meter di atas elipsoid WGS84, atau kira-kira setara dengan meter di atas permukaan laut.
- Orientasi, yang memperkirakan arah pose dalam sistem koordinat EUS. Sistem koordinat EUS memiliki X+ yang mengarah ke timur, Y+ yang mengarah ke atas, dan Z+ yang mengarah ke selatan.
Geospatial API memberikan akses ke pose Geospasial perangkat dan menyediakan konversi antara pose Geospasial dan pose lokal perangkat.
Prasyarat
Untuk mendapatkan dan mengonversi pose Geospasial, aplikasi Anda harus disiapkan untuk menggunakan
Geospatial API. Pose geospasial hanya dapat diperoleh
saat Geospatial API memiliki status RUNNING.
Mengonversi pose lokal perangkat menjadi pose Geospasial
Pose lokal perangkat dapat dikonversi menjadi GeospatialPose, misalnya, untuk
menentukan posisi perangkat pengguna relatif terhadap Bumi. Cara ini dapat membantu
Anda:
- Membuat konten AR persisten, tempat objek virtual yang ditempatkan pengguna ditambatkan secara akurat ke lokasi global untuk diambil nanti.
- Memicu pengalaman berbasis lokasi dengan terus memperbarui posisi pengguna di peta untuk mengaktifkan navigasi real-time atau gameplay dengan pembatasan wilayah.
- Menentukan konteks dunia nyata yang tepat bagi pengguna untuk memicu logika aplikasi yang relevan dengan lokasi.
Contoh kode berikut menunjukkan cara mengonversi Pose menjadi
GeospatialPose menggunakan
Geospatial.createGeospatialPoseFromPose().
val devicePose = ArDevice.getInstance(session).state.value.devicePose // Convert the device Pose into a GeospatialPose. when (val result = geospatial.createGeospatialPoseFromPose(devicePose)) { is CreateGeospatialPoseFromPoseSuccess -> { val geoPose = result.pose val lat = geoPose.latitude val lon = geoPose.longitude val alt = geoPose.altitude // Orientation is in the EUS (East-Up-South) coordinate system. val orientation = geoPose.eastUpSouthQuaternion } is CreateGeospatialPoseFromPoseNotTracking -> { // Geospatial is not currently tracking. } else -> { // A newer exception was added, but your app is using an old version of the library } }
Mengonversi pose Geospasial menjadi pose lokal perangkat
Anda juga dapat mengonversi GeospatialPose menjadi Pose lokal perangkat. Transformasi
ini mengambil informasi yang ditentukan oleh koordinat dunia nyata, seperti
lokasi tempat terkenal, jalur navigasi, atau konten AR persisten, dan
mengonversinya menjadi ruang visual yang akurat di perangkat pengguna.
Contoh kode berikut menunjukkan cara menggunakan
Geospatial.createPoseFromGeospatialPose()
untuk mengonversi pose Geospasial menjadi pose lokal perangkat.
// Convert a GeospatialPose (lat/long/alt) back to a device-space Pose. when (val result = geospatial.createPoseFromGeospatialPose(geoPose)) { is CreatePoseFromGeospatialPoseSuccess -> { val devicePose: Pose = result.pose // devicePose is now ready to be used relative to the tracking origin. } is CreatePoseFromGeospatialPoseNotTracking -> { // Geospatial is not currently tracking. } is CreatePoseFromGeospatialPoseInternalError -> { // An internal error occurred. } else -> { // A newer exception was added, but your app is using an old version of the library } }