ARCore for Jetpack XR की मदद से, अपने ऐप्लिकेशन में डेप्थ की जानकारी वापस पाना

एक्सआर की सुविधा वाले डिवाइस
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
एक्सआर हेडसेट
वायर्ड एक्सआर ग्लास

आपका ऐप्लिकेशन, ARCore for Jetpack XR की मदद से डेप्थ की जानकारी पा सकता है. इससे यह पता चलता है कि डिवाइस के आस-पास मौजूद चीज़ें, डिवाइस से कितनी दूरी पर हैं.

Jetpack XR के लिए ARCore सेशन बनाना

ARCore for Jetpack XR Session की मदद से, डेप्थ की जानकारी पाना. अगर आपको Jetpack Compose for XR का इस्तेमाल करके, स्पेशल यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाना है, तो Jetpack Compose for XR से सेशन ऐक्सेस करें. अगर Jetpack SceneCore लाइब्रेरी से स्पेशलाइज़्ड एंटिटी का इस्तेमाल किया जा रहा है, तो Jetpack XR Runtime से सेशन ऐक्सेस करें.

सेशन कॉन्फ़िगर करना

एक्सआर सेशन में, डेप्थ मैप पाने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती. डेप्थ मैप वापस पाने की सुविधा चालू करने के लिए, सेशन कॉन्फ़िगर करें और DepthEstimationMode सेट करें:

val newConfig = session.config.copy(
    depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    is SessionConfigureConfigurationNotSupported ->
        TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

DepthEstimationMode की ये वैल्यू उपलब्ध हैं:

  • DISABLED: सीन की डेप्थ के बारे में कोई जानकारी नहीं दी गई है.
  • RAW_ONLY: डेप्थ का अनुमान लगाने की सुविधा चालू है. इसमें रॉ डेप्थ और कॉन्फ़िडेंस वैल्यू शामिल हैं.
  • SMOOTH_ONLY: डेप्थ का अनुमान लगाने की सुविधा चालू है. इसमें डेप्थ और कॉन्फ़िडेंस की वैल्यू को स्मूथ किया गया है.
  • SMOOTH_AND_RAW: डेप्थ एस्टिमेशन की सुविधा, रॉ और स्मूथ डेप्थ के साथ-साथ कॉन्फ़िडेंस वैल्यू के साथ चालू होती है.

रॉ डेप्थ मैप से, डेप्थ का अनुमान ज़्यादा सटीक तरीके से लगाया जा सकता है. हालांकि, ऐसा हो सकता है कि रॉ डेप्थ इमेज में, कैमरा इमेज के सभी पिक्सल के लिए डेप्थ का अनुमान शामिल न हो. इसके उलट, स्मूथ डेप्थ मैप हर पिक्सल के लिए अनुमानित डेप्थ की जानकारी देते हैं. हालांकि, डेप्थ के अनुमानों को स्मूथ और इंटरपोलेट करने की वजह से, हर पिक्सल के लिए डेप्थ का डेटा कम सटीक हो सकता है.

डेप्थ डेटा पाना

किसी कैमरे के लिए डेप्थ डेटा पाने के लिए, DepthMap का इस्तेमाल करें:

val depthMap = DepthMap.left(session) ?: return

अलग-अलग डिवाइसों में अलग-अलग सुविधाएं होती हैं. स्टीरियो कैमरे वाले डिवाइस, left और right कैमरों के लिए नॉन-नल डेप्थ मैप दिखाते हैं. इसी तरह, एक कैमरे वाले डिवाइस, mono का इस्तेमाल करके नॉन-नल डेप्थ मैप दिखाते हैं.

डेप्थ वैल्यू का हिसाब लगाना

डेप्थ मैप से, डेप्थ और कॉन्फ़िडेंस वैल्यू पाई जा सकती हैं:

val depthMap = DepthMap.left(session) ?: return

इस्तेमाल की गई कॉन्फ़िगरेशन सेटिंग के आधार पर, smoothDepthMap या rawDepthMap का इस्तेमाल करके, उससे जुड़ा डेप्थ मैप ऐक्सेस करें. इन मैप में मौजूद मेज़रमेंट को मीटर में दिखाया गया है. smoothConfidenceMap और rawConfidenceMap का इस्तेमाल करके भी, कॉन्फ़िडेंस वैल्यू ऐक्सेस की जा सकती हैं. ये वैल्यू 0 से 255 तक होती हैं. इनमें 255 का मतलब है कि मॉडल को सबसे ज़्यादा भरोसा है.

डीबग या विज़ुअलाइज़ेशन के लिए डेप्थ मैप रेंडर करने के लिए, ARCore टेस्ट ऐप्लिकेशन का डेप्थ सेक्शन देखें.