जियोस्पेशल पोज़ के साथ काम करना

इस्तेमाल किए जा सकने वाले XR डिवाइस
इन दिशा-निर्देशों से आपको इस तरह के एक्सआर डिवाइसों के लिए अनुभव तैयार करने में मदद मिलती है.
वायर वाले एक्सआर स्मार्ट ग्लास
ऑडियो और
डिसप्ले ग्लास

GeospatialPose, पृथ्वी के हिसाब से अंतरिक्ष में किसी जगह की जानकारी देता है. इसमें ये कॉम्पोनेंट शामिल होते हैं:

  • अक्षांश और देशांतर, जिन्हें WGS84 स्पेसिफ़िकेशन के मुताबिक डिग्री में बताया गया है.
  • ऊंचाई, जिसे डब्ल्यूजीएस84 एलिप्सॉइड से ऊपर मीटर में बताया जाता है या जो समुद्र तल से ऊपर मीटर के बराबर होती है.
  • ओरिएंटेशन, जो ईयूएस कोऑर्डिनेट सिस्टम में पोज़ की दिशा का अनुमान लगाता है. ईयूएस कोऑर्डिनेट सिस्टम में, X+ पूर्व की ओर, Y+ ऊपर की ओर, और Z+ दक्षिण की ओर इशारा करता है.

Geospatial API, डिवाइस के जियोस्पेशल पोज़ का ऐक्सेस देता है. साथ ही, जियोस्पेशल पोज़ और डिवाइस-लोकल पोज़ के बीच कन्वर्ज़न की सुविधा देता है.

ज़रूरी शर्तें

जियोस्पेशल पोज़ पाने और उन्हें बदलने के लिए, आपके ऐप्लिकेशन को जियोस्पेशल एपीआई का इस्तेमाल करने के लिए सेट अप करना होगा. जियोस्पेशल पोज़ सिर्फ़ तब मिल सकते हैं, जब Geospatial API का स्टेटस RUNNING हो.

डिवाइस के लोकल पोज़ को जियोस्पेशल पोज़ में बदलना

डिवाइस-लोकल Pose को GeospatialPose में बदला जा सकता है. उदाहरण के लिए, पृथ्वी के हिसाब से उपयोगकर्ता के डिवाइस की पोज़िशन का पता लगाने के लिए. इससे आपको ये काम करने में मदद मिल सकती है:

  • परसिस्टेंट एआर कॉन्टेंट बनाएं. इसमें उपयोगकर्ता की ओर से प्लेस किए गए वर्चुअल ऑब्जेक्ट को किसी ग्लोबल जगह पर सटीक तरीके से ऐंकर किया जाता है, ताकि उसे बाद में वापस लाया जा सके.
  • मैप पर उपयोगकर्ता की जगह की जानकारी को लगातार अपडेट करके, जगह के हिसाब से अनुभव ट्रिगर करें. इससे रीयल-टाइम नेविगेशन या जियो-फ़ेंसिंग वाले गेमप्ले की सुविधा चालू की जा सकती है.
  • उपयोगकर्ता की जगह की सटीक जानकारी का पता लगाना, ताकि जगह के हिसाब से ऐप्लिकेशन लॉजिक को ट्रिगर किया जा सके.

यहां दिए गए कोड सैंपल में, Geospatial.createGeospatialPoseFromPose() का इस्तेमाल करके, Pose को GeospatialPose में बदलने का तरीका बताया गया है.

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

जियोस्पेशल पोज़ को डिवाइस-लोकल पोज़ में बदलना

GeospatialPose को डिवाइस-लोकल Pose में भी बदला जा सकता है. यह ट्रांसफ़ॉर्मेशन, असल दुनिया के निर्देशांकों से तय की गई जानकारी लेता है. जैसे, किसी लैंडमार्क की जगह, नेविगेशन पाथ या लगातार दिखने वाला एआर कॉन्टेंट. इसके बाद, यह जानकारी को उपयोगकर्ता के डिवाइस के सटीक विज़ुअल स्पेस में बदल देता है.

यहां दिए गए कोड सैंपल से, जियोस्पेशल पोज़ को डिवाइस-लोकल पोज़ में बदलने के लिए, Geospatial.createPoseFromGeospatialPose() का इस्तेमाल करने का तरीका पता चलता है.

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