Jetpack XR के लिए ARCore, उपयोगकर्ता के आस-पास मौजूद सपाट सतहों का पता लगा सकता है. साथ ही, उनके बारे में जानकारी दे सकता है. जैसे, उनकी पोज़िशन, साइज़, और ओरिएंटेशन. इससे आपके ऐप्लिकेशन को टेबल जैसे प्लैटफ़ॉर्म ढूंढने में मदद मिल सकती है, ताकि उन पर ऑब्जेक्ट डाले जा सकें.
Jetpack XR के लिए ARCore सेशन बनाना
Jetpack XR सेशन के लिए ARCore की मदद से, प्लेन की जानकारी ऐक्सेस करना. Session
पाने के लिए, सेशन के लाइफ़साइकल को समझना देखें.
सेशन कॉन्फ़िगर करना
XR सेशन में, फ़्लाइट के प्लैटफ़ॉर्म का पता लगाने की सुविधा डिफ़ॉल्ट रूप से चालू नहीं होती. फ़्लाइट ट्रैकिंग की सुविधा चालू करने के लिए, सेशन को कॉन्फ़िगर करें:
val newConfig = session.config.copy( planeTracking = Config.PlaneTrackingMode.HorizontalAndVertical, ) when (val result = session.configure(newConfig)) { is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) is SessionConfigurePermissionsNotGranted -> TODO(/* The required permissions in result.permissions have not been granted. */) is SessionConfigureSuccess -> TODO(/* Success! */) }
आस-पास मौजूद हवाई जहाज़ों की स्थिति देखना
Jetpack XR के लिए ARCore, प्लेन की स्थिति दिखाने वाले StateFlow
के ज़रिए प्लेन की स्थिति दिखाता है. किसी सेशन में प्लेन की सदस्यता लेने पर, प्लेन जोड़े जाने, अपडेट होने या हटाए जाने पर, आपके ऐप्लिकेशन को सूचना दी जाती है.
Plane.subscribe(session).collect { planes -> // Planes have changed; update plane rendering }
प्लेन में ये प्रॉपर्टी होती हैं:
label
: किसी दिए गएPlane
की सेमैटिक जानकारी. यहWall
,Floor
,Ceiling
याTable
हो सकता है.centerPose
: पहचाने गए हवाई जहाज़ के बीच के हिस्से की पोज़िशन.extents
: मीटर में, पहचाने गए प्लेन के डाइमेंशन.vertices
: प्लेन के आस-पास के उत्तल पॉलीगॉन के वर्टिक्स की सूची.
हवाई जहाज़ों के लिए हिट-टेस्ट करना
हिट-टेस्ट, सेशन के ज़रिए ट्रैक किए गए ऑब्जेक्ट के साथ रे के इंटरसेक्शन का हिसाब लगाने का एक तरीका है. हिट-टेस्ट का एक सामान्य इस्तेमाल यह है कि किसी टेबल पर कर्सर ले जाकर, उस जगह पर कोई ऑब्जेक्ट डाला जाए. हिट-टेस्ट करने पर, हिट किए गए ऑब्जेक्ट की सूची मिलती है. दूसरे शब्दों में, हिट-टेस्ट पहले ऑब्जेक्ट पर हिट होने के बाद नहीं रुकता. हालांकि, अक्सर आपकी दिलचस्पी किसी खास टाइप के पहले ऑब्जेक्ट हिट में ही होती है.
हिट-टेस्ट करने के लिए, Interaction.hitTest()
के साथ
Ray
का इस्तेमाल करें:
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 }