Menggunakan pose Geospasial

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Kacamata XR Berkabel
Kacamata Pintar dengan Layar
& Audio

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
    }
}