सबस्पेस मॉडिफ़ायर के बारे में जानकारी

इस्तेमाल किए जा सकने वाले XR डिवाइस
इन दिशा-निर्देशों से आपको इस तरह के एक्सआर डिवाइसों के लिए अनुभव तैयार करने में मदद मिलती है.
एक्सआर हेडसेट
वायर वाले एक्सआर स्मार्ट ग्लास

SubspaceModifier, Subspace में कंपोज़ेबल के लिए, Compose मॉडिफ़ायर की तरह होता है. SubspaceModifier की मदद से, 3D स्पेस में कंपोज़ेबल में बदलाव किया जा सकता है. इससे आपको 3D लेआउट नोड की पोज़िशन तय करने, उन्हें घुमाने, और उनमें व्यवहार जोड़ने में मदद मिलती है.

लेआउट

डिफ़ॉल्ट रूप से, Subspace को ऐप्लिकेशन देखने के लिए सुझाई गई जगह से सीमित किया जाता है. इन सीमाओं का इस्तेमाल, आपके सबस्पेस कॉम्पोनेंट के लेआउट को मेज़र करते समय किया जाता है. यह 2D Compose लेआउट में सीमाओं की तरह ही होता है.

बाउंड भरें

fillMaxSize, fillMaxWidth, fillMaxHeight, और fillMaxDepth मॉडिफ़ायर, कॉन्टेंट को उसके पैरंट के बाउंड को (कुछ हद तक) भरने में मदद करते हैं. फ़िल मॉडिफ़ायर का इस्तेमाल करने से, आपके ऐप्लिकेशन को कॉन्टेंट का लेआउट बनाने में मदद मिलती है. यह लेआउट, एक्सआर डिवाइस के डिसप्ले की विशेषताओं से अलग होता है.

साइज़ और ज़रूरी साइज़ सेट करना

size, width, height, और depth मॉडिफ़ायर, कॉन्टेंट के लिए पसंदीदा साइज़ तय करते हैं. कॉन्टेंट का सटीक साइज़ बताने के लिए, requiredSize, requiredWidth, requiredHeight, और requiredDepth का इस्तेमाल करें. इन यूनिट को dp में बताना ज़रूरी है; मीटर को डीपी में बदलने के लिए, Meter.toDp() का इस्तेमाल करें.

कंपोज़ेबल की पोज़िशन तय करना

offset

offset मॉडिफ़ायर, कंपोज़ेबल को 3D स्पेस में x, y, और z ऐक्सिस के साथ मूव करता है. इन यूनिट को dp में तय करना ज़रूरी है; मीटर से डीपी में बदलने के लिए, Meter.toDp() का इस्तेमाल करें.

rotate

rotate मॉडिफ़ायर, दिए गए कंपोज़ेबल को स्पेस में घुमाता है. आपके पास रोटेशन की दिशा और डिग्री को अलग-अलग तरीकों से तय करने का विकल्प होता है:

  • पिच, यॉ, और रोल का इस्तेमाल करके, x, y, और z ऐक्सिस के आस-पास रोटेशन को तय किया जाता है,
  • axisAngle का इस्तेमाल करके, जो कि रोटेशन के ऐक्सिस को दिखाने वाला Vector3 है. साथ ही, यह भी तय किया जा सकता है कि इसे कितने डिग्री घुमाना है,
  • Quaternion का इस्तेमाल करके, जो रोटेशन को दिखाता है.

rotateToLookAtUser

rotateToLookAtUser मॉडिफ़ायर, कॉन्टेंट को लगातार घुमाता रहता है, ताकि वह हर समय उपयोगकर्ता के सामने रहे. इस मॉडिफ़ायर का इस्तेमाल करके, "बिलबोर्ड" इफ़ेक्ट भी हासिल किया जा सकता है. इसमें कॉन्टेंट, Y-ऐक्सिस पर उपयोगकर्ता की तरफ़ घूमता है. हालांकि, यह सीधा रहता है और गुरुत्वाकर्षण के साथ अलाइन रहता है. इसके लिए, rotateToLookAtUser मॉडिफ़ायर को gravityAligned मॉडिफ़ायर के साथ जोड़ें.

कंपोज़ेबल को मूव करना और उनका साइज़ बदलना

उपयोगकर्ताओं को 3D स्पेस में ऑब्जेक्ट की पोज़िशन और साइज़ में सीधे तौर पर बदलाव करने की सुविधा दें.

एलिमेंट को दूसरी जगह भेजना

जब movable मॉडिफ़ायर मौजूद और चालू होता है, तब खींचने और छोड़ने लायक यूज़र इंटरफ़ेस (यूआई) कंट्रोल दिखाए जाते हैं. इनकी मदद से, उपयोगकर्ता एलिमेंट को 3D स्पेस में मूव कर सकता है. movable मॉडिफ़ायर को पूरे Subspace, स्पेशल लेआउट कॉम्पोनेंट (जैसे, SpatialRow और SpatialColumn), और अलग-अलग कॉम्पोनेंट (जैसे, SpatialPanel और SpatialGltfModel) पर लागू किया जा सकता है.

इस मूवमेंट के बारे में, movePolicy में बताया गया है:

  • MovePolicy.Default (या MovePolicy.system()): सिस्टम, मूवमेंट को पूरी तरह से मैनेज करता है. साथ ही, उपयोगकर्ता के इनपुट के आधार पर, नए पोज़ और स्केल का अपने-आप हिसाब लगाता है और उसे लागू करता है.
  • MovePolicy.custom(): सिस्टम, इनपुट के आधार पर टारगेट Pose का हिसाब लगाता है. हालांकि, यह उससे जुड़े एलिमेंट पर अपने-आप लागू नहीं होता. यह आपके ऐप्लिकेशन में मूवमेंट को सीमित करने या कस्टम मूवमेंट बनाने के लिए उपयोगी है.
  • MovePolicy.anchor(): इससे उपयोगकर्ता, मूव किए जा सकने वाले एलिमेंट को रीयल-वर्ल्ड प्लेन पर स्नैप और ऐंकर कर सकता है.

ऐंकर कंपोज़ेबल

इधर-उधर ले जाए जा सकने वाले सबस्पेस कंपोज़ेबल को असल दुनिया की जगहों पर ऐंकर करने के लिए, movable मॉडिफ़ायर में MovePolicy.anchor() पास करें. इस नीति की मदद से, उपयोगकर्ता SpatialPanel और SpatialGltfModel जैसे एलिमेंट को टेबल, दीवारों या फ़र्श जैसी फ़िज़िकल जगहों पर स्नैप कर सकते हैं.

इन पैरामीटर का इस्तेमाल करके, यह फ़िल्टर किया जा सकता है कि कोई एलिमेंट, पहचाने गए किन प्लेन पर स्नैप कर सकता है. अगर इन्हें खाली छोड़ दिया जाता है, तो एलिमेंट, पहचाने गए किसी भी प्लेन पर ऐंकर कर सकता है:

  • anchorPlaneOrientations: PlaneOrientation वैल्यू का सेट (Horizontal, Vertical या Any).
  • anchorPlaneSemantics: PlaneSemantic वैल्यू का सेट (Wall, Floor, Ceiling, Table या Any).

एलिमेंट का साइज़ बदलना

resizable() मॉडिफ़ायर के मौजूद और चालू होने पर, यूज़र इंटरफ़ेस (यूआई) कंट्रोल दिखेंगे. इनकी मदद से, उपयोगकर्ता 3D स्पेस में एलिमेंट का साइज़ बदल सकता है. साइज़ में बदलाव करने का तरीका, resizePolicy से तय होता है:

  • ResizePolicy.default(): सिस्टम, साइज़ बदलने के जेस्चर को अपने-आप मैनेज करता है और कॉन्टेंट पर नए डाइमेंशन लागू करता है.
  • ResizePolicy.custom(): सिस्टम, SpatialResizeEvent उपलब्ध कराता है. साथ ही, बदले गए साइज़ के नतीजे को, उससे जुड़े एलिमेंट पर अपने-आप लागू नहीं करता.

कंपोज़ेबल का लुक बदलना

alpha

alpha मॉडिफ़ायर, एलिमेंट और उसके चाइल्ड एलिमेंट की ओपैसिटी सेट करता है. इसमें 0f का मतलब पूरी तरह पारदर्शी और 1.0f का मतलब पूरी तरह अपारदर्शी है.

scale

scale मॉडिफ़ायर, कंपोज़ेबल के कॉन्टेंट को हॉरिज़ॉन्टल, वर्टिकल, और डेप्थ ऐक्सिस के हिसाब से स्केल करता है.

जांच और सुलभता

semantics

semantics मॉडिफ़ायर, लेआउट नोड में सिमैंटिक जोड़ता है. इसका इस्तेमाल, टेस्टिंग और सुलभता के लिए किया जाता है. Jetpack Compose में सिमैंटिक्स और SemanticsModifier देखें.

testTag

testTag मॉडिफ़ायर, SemanticsPropertyReceiver.testTag का शॉर्टहैंड है. इसकी मदद से, टेस्ट फ़्रेमवर्क को टेस्ट में एलिमेंट ढूंढने में मदद मिलती है.