आपका ऐप्लिकेशन, Jetpack XR के लिए ARCore की मदद से डेप्थ की जानकारी हासिल कर सकता है. इससे यह पता लगाया जा सकता है कि डिवाइस के आस-पास मौजूद ऑब्जेक्ट, उससे कितनी दूरी पर हैं.
Jetpack XR सेशन के लिए ARCore बनाना
Jetpack XR के लिए ARCore की मदद से, डेप्थ की जानकारी पाएं
Session. अगर आपको Jetpack Compose for XR का इस्तेमाल करके, स्पेशल यूआई को बेहतर बनाना है, तो Jetpack Compose for XR के सेशन को ऐक्सेस करें. अगर Jetpack SceneCore लाइब्रेरी से स्पेशलाइज़्ड इकाइयों के साथ काम किया जा रहा है, तो Jetpack XR रनटाइम से सेशन को ऐक्सेस करें.
सेशन को कॉन्फ़िगर करना
एक्सआर सेशन में, डेप्थ मैप को वापस पाने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती. डेप्थ मैप को वापस पाने की सुविधा चालू करने के लिए, सेशन को कॉन्फ़िगर करें और DepthEstimationMode सेट करें:
val newConfig = Config.Builder(session.config) .setDepthEstimation(DepthEstimationMode.SMOOTH_ONLY) .build() 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)
डेप्थ डेटा को वापस पाना
किसी कैमरे के लिए डेप्थ डेटा पाने के लिए, Depth का इस्तेमाल करें:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
डेप्थ वैल्यू कैलकुलेट करना
नतीजे के तौर पर मिले डेप्थ मैप से, डेप्थ और कॉन्फ़िडेंस वैल्यू हासिल की जा सकती हैं:
if (hasStereoDepth) { val depthMap = Depth.left(session) }
इस्तेमाल की गई कॉन्फ़िगरेशन सेटिंग के आधार पर, smoothDepthMap या rawDepthMap का इस्तेमाल करके, उससे जुड़े डेप्थ मैप को ऐक्सेस करें. इन मैप में मौजूद मेज़रमेंट, मीटर में दिखाए जाते हैं. smoothConfidenceMap और rawConfidenceMap का इस्तेमाल करके भी, कॉन्फ़िडेंस वैल्यू को ऐक्सेस किया जा सकता है. ये वैल्यू 0 से 255 के बीच होती हैं. इनमें 255 सबसे ज़्यादा कॉन्फ़िडेंस को दिखाता है.
डीबग करने या विज़ुअलाइज़ेशन के मकसद से डेप्थ मैप रेंडर करने के लिए, ARCore टेस्ट ऐप्लिकेशन का डेप्थ पार्ट देखें.