अपने ऐप्लिकेशन में सबस्पेस जोड़ना

सबस्पेस, आपके ऐप्लिकेशन में मौजूद 3D स्पेस का एक सेक्शन होता है. इसमें 3D मॉडल डाले जा सकते हैं, 3D लेआउट बनाए जा सकते हैं, और 2D कॉन्टेंट में डीपथ जोड़ी जा सकती है. सबस्पेस सिर्फ़ तब रेंडर होता है, जब स्पेसलाइज़ेशन की सुविधा चालू हो. होम स्पेस या नॉन-एक्सआर डिवाइसों पर, उस सबस्पेस में मौजूद किसी भी कोड को अनदेखा किया जाता है.

3D मॉडल डालने के लिए, @SubspaceComposable जैसे कि Volume और SpatialPanel का इस्तेमाल किया जा सकता है. Orbiter या SpatialDialog जैसे कुछ XR कॉम्पोनेंट, स्टैंडर्ड 2D कॉम्पोज़ेबल होते हैं. इनका इस्तेमाल, 2D यूज़र इंटरफ़ेस (यूआई) की हैरारकी में कहीं भी किया जा सकता है. हालांकि, SubspaceComposable को आपके ऐप्लिकेशन के सबस्पेस में ही इस्तेमाल किया जाना चाहिए. इसके लिए, आपको Subspace composable का इस्तेमाल करना होगा.

किसी भी दूसरे कॉम्पोज़ेबल की तरह, Subspace को सीधे अपने 2D यूज़र इंटरफ़ेस (यूआई) की हैरारकी में कॉल किया जा सकता है. हालांकि, यह जानना ज़रूरी है कि हैरारकी में Subspace को कहां से शुरू किया जाता है.

सबस्पेस की हैरारकी के बारे में जानकारी

टॉप-लेवल सबस्पेस, आपके ऐप्लिकेशन से शुरू होने वाला सबसे बाहरी सबस्पेस होता है. इस सबस्पेस की सीमाएं अनलिमिटेड होती हैं. आम तौर पर, इसमें आपके ऐप्लिकेशन का स्पेस लेआउट और SpatialPanel रखा जाता है.

हालांकि, अगर टॉप-लेवल सबस्पेस में मौजूद पैनल में, 2D यूज़र इंटरफ़ेस (यूआई) की हैरारकी में किसी दूसरे सबस्पेस को नेस्ट किया जाता है, तो नेस्ट किया गया सबस्पेस अलग तरह से काम करता है.

नेस्ट किए गए सबस्पेस, टॉप-लेवल Subspace से दो मुख्य बातों में अलग होते हैं:

  • ये उस 2D लेआउट में काम करते हैं जिसमें इन्हें चालू किया जाता है. इसका मतलब है कि सबस्पेस की ऊंचाई और चौड़ाई, उसके 2D पैरंट लेआउट की ऊंचाई और चौड़ाई के हिसाब से तय होगी.
  • ये उस इकाई के चाइल्ड के तौर पर काम करते हैं जिसमें इन्हें शुरू किया जाता है. इसका मतलब है कि अगर SpatialPanel के अंदर नेस्ट किए गए Subspace कॉम्पोज़ेबल को कॉल किया जाता है, तो वह सबस्पेस उस SpatialPanel का चाइल्ड होगा जिसमें उसे कॉल किया गया है.

नेस्ट किए गए सबस्पेस के इन व्यवहारों की मदद से, ये काम किए जा सकते हैं:

  • पैरंट इकाई के साथ चाइल्ड इकाई को मूव करना
  • ऑफ़सेट का इस्तेमाल करके, बच्चे की जगह की जानकारी में बदलाव करना SubspaceModifier
  • 3D ऑब्जेक्ट को दिखाना, जो आपके 2D यूज़र इंटरफ़ेस (यूआई) के ऊपर होवर करता है और 2D लेआउट में सही जगह की ऊंचाई और चौड़ाई से मेल खाता है

अपने ऐप्लिकेशन में सबस्पेस जोड़ना

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

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
        // This is a top-level subspace
        Subspace {
            SpatialPanel {
                MyComposable()
            }
        }
    }
}
@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}
@Composable
private fun PrimaryPane() {
      ...
    // This is a nested subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in a top-level Subspace
    Subspace {
        ObjectInAVolume(show3DObject)
    }
      ...
}