Jetpack XR के लिए ARCore, उपयोगकर्ता के आस-पास की समतल सतहों का पता लगा सकता है. साथ ही, उनके बारे में जानकारी दे सकता है. जैसे, उनकी पोज़िशन, साइज़, और ओरिएंटेशन. इससे आपके ऐप्लिकेशन को टेबल जैसी जगहों का पता लगाने में मदद मिल सकती है, ताकि ऑब्जेक्ट को उन पर रखा जा सके.
Jetpack XR के लिए ARCore सेशन बनाना
Jetpack XR सेशन के लिए ARCore की मदद से, विमान की जानकारी ऐक्सेस करें. Session
पाने के लिए, सेशन के लाइफ़साइकल के बारे में जानें लेख पढ़ें.
सेशन कॉन्फ़िगर करना
XR सेशन पर, प्लेन डिटेक्शन की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती है. प्लेन ट्रैकिंग चालू करने के लिए, सेशन कॉन्फ़िगर करें और PlaneTrackingMode.HORIZONTAL_AND_VERTICAL
मोड सेट करें:
val newConfig = session.config.copy( planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigureSuccess -> TODO(/* Success! */) else -> TODO(/* A different unhandled exception was thrown. */) }
पहचाने गए हवाई जहाज़ों की स्थिति की जानकारी पाना
Jetpack XR के लिए ARCore, StateFlow
के ज़रिए प्लैन की स्थिति की जानकारी देता है. यह 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 }