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

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

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

ARCore for Jetpack XR सेशन के ज़रिए, हेड पोज़ की जानकारी पाना. Session पाने के लिए, सेशन के लाइफ़साइकल को समझना लेख पढ़ें.

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

एक्सआर सेशन में, डेप्थ मैप पाने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती. डेप्थ मैप वापस पाने की सुविधा चालू करने के लिए, सेशन कॉन्फ़िगर करें और 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 टेस्ट ऐप्लिकेशन का डेप्थ सेक्शन देखें.