Jetpack XR के लिए ARCore, उपयोगकर्ता के आस-पास की समतल सतहों का पता लगा सकता है. साथ ही, उनके बारे में जानकारी दे सकता है. जैसे, उनकी पोज़िशन, साइज़, और ओरिएंटेशन. इससे आपके ऐप्लिकेशन को टेबल जैसी जगहों का पता लगाने में मदद मिल सकती है, ताकि उन पर ऑब्जेक्ट रखे जा सकें.
किसी सेशन को ऐक्सेस करना
ARCore for Jetpack XR Session की मदद से, प्लेन की जानकारी ऐक्सेस करें. अगर आपको XR के लिए Jetpack Compose का इस्तेमाल करके, स्पेशल यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाना है, तो XR के लिए Jetpack Compose से सेशन ऐक्सेस करें. अगर Jetpack SceneCore लाइब्रेरी से स्पैशलाइज़्ड एंटिटी का इस्तेमाल किया जा रहा है, तो Jetpack XR Runtime से सेशन ऐक्सेस करें.
सेशन कॉन्फ़िगर करना
XR सेशन में, प्लेन का पता लगाने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती है. प्लेन ट्रैकिंग चालू करने के लिए, सेशन कॉन्फ़िगर करें और PlaneTrackingMode.HORIZONTAL_AND_VERTICAL मोड सेट करें:
val newConfig = session.config.copy( planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
पहचाने गए हवाई जहाज़ों की स्थिति की जानकारी पाना
Jetpack XR के लिए ARCore, StateFlow के ज़रिए प्लैन की स्थिति की जानकारी देता है. यह प्लैन की स्थिति की जानकारी देता है. किसी सेशन में मौजूद प्लेन की सदस्यता लेने पर, आपके ऐप्लिकेशन को सूचना मिलती है. यह सूचना तब मिलती है, जब प्लेन जोड़े जाते हैं, अपडेट किए जाते हैं या हटाए जाते हैं.
Plane.subscribe(session).collect { planes -> // Planes have changed; update plane rendering }
किसी प्लेन में ये प्रॉपर्टी होती हैं:
label: यह दिए गएPlaneका सिमैंटिक ब्यौरा होता है. यहWALL,FLOOR,CEILINGयाTABLEहो सकता है.centerPose: यह कैमरे के फ़्रेम में पहचाने गए प्लेन के बीच की पोज़िशन होती है.extents: यह पैरामीटर, मीटर में मेज़र किए गए, पहचाने गए प्लेन के डाइमेंशन दिखाता है.vertices: यह कॉन्वेक्स पॉलीगॉन के वर्टेक्स की सूची होती है, जो प्लेन के आस-पास होती है.
हवाई जहाज़ों के ख़िलाफ़ हिट-टेस्ट करना
हिट-टेस्ट, सेशन से ट्रैक किए गए ऑब्जेक्ट के साथ किसी किरण के इंटरसेक्शन का हिसाब लगाने का एक तरीका है. हिट-टेस्ट का इस्तेमाल आम तौर पर, किसी टेबल की ओर इशारा करने और उस जगह पर कोई ऑब्जेक्ट रखने के लिए किया जाता है. हिट-टेस्ट करने पर, हिट ऑब्जेक्ट की सूची मिलती है. दूसरे शब्दों में, हिट-टेस्ट पहले ऑब्जेक्ट पर नहीं रुकता. हालांकि, ऐसा हो सकता है कि आपको किसी दिए गए टाइप के सिर्फ़ पहले ऑब्जेक्ट हिट में दिलचस्पी हो.
हिट-टेस्ट करने के लिए, Ray के साथ Interaction.hitTest() का इस्तेमाल करें:
val results = androidx.xr.arcore.hitTest(session, ray) // When interested in the first Table hit: val tableHit = results.firstOrNull { val trackable = it.trackable trackable is Plane && trackable.state.value.label == Plane.Label.TABLE }