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

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

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

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

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

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

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

val newConfig = session.config.copy(
    depthEstimation = DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

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

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

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

डेप्थ मैप की सुविधाओं की जांच करना

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

यह देखने के लिए कि डिवाइस पर कौनसे डेप्थ मैप काम करते हैं, XrDevice.isRenderingModeSupported का इस्तेमाल करें:

val xrDevice = XrDevice.getCurrentDevice(context)
val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO)
val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)

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

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

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

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

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

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

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

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