Jetpack XR के लिए ARCore की मदद से, आपका ऐप्लिकेशन किसी डिवाइस की पोज़िशन का पता लगा सकता है. जैसे, डिवाइस का ओरिएंटेशन (पिच, यॉ, रोल) और दुनिया के ओरिजन के हिसाब से डिवाइस की पोज़िशन (X, Y, Z).
इस जानकारी का इस्तेमाल, वास्तविक दुनिया में डिजिटल कॉन्टेंट दिखाने के लिए किया जाता है. इसके अलावा, डिवाइस के पोज़ को जियोस्पेशल पोज़ में बदलकर, जगह की जानकारी देने वाला डेटा जनरेट किया जाता है.
किसी सेशन को ऐक्सेस करना
Jetpack XR Runtime Session की मदद से, डिवाइस के पोज़ की जानकारी ऐक्सेस करें. आपके ऐप्लिकेशन को यह जानकारी बनानी होगी.
सेशन कॉन्फ़िगर करना
XR सेशन में, डिवाइस के पोज़ की जानकारी डिफ़ॉल्ट रूप से चालू नहीं होती है. अपने ऐप्लिकेशन को डिवाइस की पोज़िशन की जानकारी पाने की अनुमति देने के लिए, सेशन को कॉन्फ़िगर करें और HeadTrackingMode.LAST_KNOWN मोड सेट करें:
// Define the configuration object to enable tracking device pose.
val newConfig = session.config.copy(
headTrackingMode = Config.HeadTrackingMode.LAST_KNOWN
)
// Apply the configuration to the session.
try {
when (val configResult = session.configure(newConfig)) {
is SessionConfigureSuccess -> {
// The session is now configured to track the device's pose.
}
else -> {
// Catch-all for other configuration errors returned using the result class.
}
}
} catch (e: UnsupportedOperationException) {
// Handle configuration failure. For example, if the specific mode is not supported on the current device or API version.
}
सभी XR डिवाइसों पर HeadTrackingMode.LAST_KNOWN मोड काम नहीं करता. अगर Session.configure() कमांड काम करती है, तो इसका मतलब है कि डिवाइस पर यह मोड काम करता है.
डिवाइस की पोज़िशन की जानकारी पाना
सेशन कॉन्फ़िगर हो जाने के बाद, ArDevice ऑब्जेक्ट का इस्तेमाल करके, एआर कोऑर्डिनेट सिस्टम में डिवाइस की पोज़िशन की जानकारी पाई जा सकती है:
// Get the ArDevice instance
val arDevice = ArDevice.getInstance(session)
// Collect the state to process the device pose
arDevice.state.collect { state ->
// processDevicePose gets called automatically when a new pose is available.
processDevicePose(state.devicePose)
}
// Or, get the current device Pose from the AR Device's state.
// This is the device's position and orientation relative to the tracking origin.
val devicePose = ArDevice.getInstance(session).state.value.devicePose
डिवाइस के पोज़ के ट्रांसलेशन और रोटेशन की जानकारी पाना
डिवाइस Pose, ट्रैकिंग की शुरुआत की जगह के हिसाब से डिवाइस की पोज़िशन (अनुवाद) और ओरिएंटेशन (रोटेशन) को दिखाता है. अपने ऐप्लिकेशन में इस जानकारी का इस्तेमाल करके, ऐप्लिकेशन के अनुभव को बेहतर बनाएं:
जगह की सटीक जानकारी के हिसाब से नेविगेशन के निर्देश देना: जगह की जानकारी के डेटा का इस्तेमाल करके, किसी उपयोगकर्ता को अपनी जगह की जानकारी दी जा सकती है. साथ ही, उसे डिजिटल कॉन्टेंट की मदद से अपने आस-पास की जगहों पर नेविगेट करने में मदद की जा सकती है.
दुनिया के साथ इंटरमीडिएट अलाइनमेंट: इस पोज़ का इस्तेमाल Geospatial API करता है, ताकि असल दुनिया में जगह की जानकारी का हिसाब लगाया जा सके.
fun processDevicePose(pose: Pose) {
// Extract Translation and Rotation
val translation = pose.translation // Vector3(x, y, z)
val rotation = pose.rotation // Quaternion (x, y, z, w)
TODO(/* Use the translation and rotation in your app. */)
}
डिवाइस के पोज़ को जियोस्पेशल पोज़ में बदलना
डिवाइस की पोज़िशन मिलने के बाद, उससे जियोस्पेशल पोज़िशन की जानकारी पाई जा सकती है. जियोस्पेशियल पोज़ में बदलने से, एआर कॉन्टेंट को कुछ समय के लिए अलग से इस्तेमाल करने के बजाय, हमेशा के लिए सभी के साथ शेयर किया जा सकता है. साथ ही, इसे रीयल वर्ल्ड में कॉन्टेक्स्ट के हिसाब से इस्तेमाल किया जा सकता है.
हमारे Geospatial API के दस्तावेज़ में, डिवाइस के पोज़ को जियोस्पेशल पोज़ में बदलने का तरीका जानें.