{ } { }
Jetpack SceneCore
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
12 फ़रवरी, 2025 | - | - | - | 1.0.0-alpha02 |
डिपेंडेंसी का एलान करना
XR SceneCore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha01" // Required for Java implementation "com.google.guava:listenableFuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01") // Required for Java implementation("com.google.guava:listenableFuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. किसी मौजूदा समस्या पर अपना वोट जोड़ने के लिए, स्टार बटन पर क्लिक करें.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
संस्करण 1.0
वर्शन 1.0.0-alpha02
12 फ़रवरी, 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02
और androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02
रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये कमिट शामिल हैं.
1.0.0-alpha02 से पहले बनाए गए ऐप्लिकेशन पर असर डालने वाला अहम बदलाव
- फ़ैक्ट्री मेथड को
Session
क्लास से हटाकर, हर टाइप के लिए एक साथ काम करने वाले मेथड में ले जाया गया है:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)
को मिटा दिया गया है औरActivityPanelEntity.create(Session, Dimensions, String, Pose)
से बदल दिया गया हैSession.createAnchorEntity(Anchor)
को मिटा दिया गया है औरAnchorEntity.create(Session, Anchor)
से बदल दिया गया हैSession.createAnchorEntity(Dimensions, Int, Int, Duration)
को मिटा दिया गया है औरAnchorEntity.create(Session, Dimensions, Int, Int, Duration)
से बदल दिया गया हैSession.createEntity(String, Pose)
को मिटा दिया गया है औरContentlessEntity.create(Session, String, Pose)
से बदल दिया गया हैSession.createExrImageResource(String)
को मिटा दिया गया है औरExrImage.create(Session, String)
से बदल दिया गया हैSession.createGltfEntity(GltfModel, Pose)
को मिटा दिया गया है औरGltfModelEntity.create(Session, GltfModel, Pose)
से बदल दिया गया हैSession.createGltfModelResource(String)
को मिटा दिया गया है औरGltfModel.create(Session, String)
से बदल दिया गया हैSession.createInteractableComponent(Executor, InputEventListener)
को मिटा दिया गया है औरInteractableComponent.create(Session, Executor, InputEventListener)
से बदल दिया गया हैSession.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)
को मिटा दिया गया है औरMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
से बदल दिया गया हैSession.createPanelEntity(View, Dimensions, Dimensions, String, Pose)
को मिटा दिया गया है औरPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
से बदल दिया गया हैSession.createResizableComponent(Dimensions, Dimensions)
को मिटा दिया गया है औरResizableComponent.create(Session, Dimensions, Dimensions)
से बदल दिया गया हैSession.createStereoSurfaceEntity(Int, Dimensions, Pose)
को मिटा दिया गया है औरStereoSurface.create(Session, Int, Dimensions, Pose)
से बदल दिया गया है
- बंद किए गए ये तरीके हटा दिए गए हैं:
Session.canEmbedActivityPanel(Activity)
को मिटा दिया गया है. इसके बजाय,getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)
का इस्तेमाल करें.Session.hasSpatialCapability(Int)
को मिटा दिया गया है.getSpatialCapabilities()
कोgetSpatialCapabilities().hasCapability()
से बदल दिया गया है, क्योंकिgetSpatialCapabilities()
एकSpatialCapabilities
ऑब्जेक्ट दिखाता है.getSpatialCapabilities().hasCapability()
का इस्तेमाल, स्पेस की सुविधाओं की मौजूदगी की जांच करने के लिए, अलग-अलग कैटगरी में किया जाता है.Session.requestFullSpaceMode()
को मिटा दिया गया है औरSpatialEnvironment.requestFullSpaceMode()
से बदल दिया गया हैSession.requestHomeSpaceMode()
को मिटा दिया गया है औरSpatialEnvironment.requestHomeSpaceMode()
से बदल दिया गया है
Session.setFullSpaceMode(Bundle)
औरSession.setFullSpaceModeWithEnvironmentInherited(Bundle)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. डेवलपर फ़ाइलों को ऐक्सेस करने के लिए, नए इंपोर्ट जोड़ने होंगे:import androidx.xr.scenecore.setFullSpaceMode
import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. डेवलपर फ़ाइलों को ऐक्सेस करने के लिए, उन्हें नया इंपोर्ट जोड़ना होगा:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)
औरSession.getEntityForRtEntity(RtEntity)
को एक्सटेंशन फ़ंक्शन में ले जाया गया है. डेवलपर फ़ाइलों को ऐक्सेस करने के लिए, नए इंपोर्ट जोड़ने होंगे:import androidx.xr.scenecore.getEntitiesOfType
import androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)
को मिटा दिया गया हैSession.createPersistedAnchorEntity(UUID)
को मिटा दिया गया है
ऐसी समस्याएं जिनकी जानकारी पहले से है
- ऐसा हो सकता है कि
PanelEntity.setCornerRadius()
औरActivityPanelEntity.setCornerRadius()
तब तक लागू न हों, जब तक पैनल को अगली बार किसी दूसरी जगह पर नहीं ले जाया जाता. पैनल को उसकी मौजूदा जगह पर ले जाकर, इस समस्या को कम किया जा सकता है - जब
ActivitySpace
परBoundsChanged
को कॉल किया जाता है, तो हो सकता है कि कुछActivityPose
सही तरीके से अपडेट न हुए हों. यहActivitySpace
कोOnSpaceUpdated
कॉल के बाद अपडेट हो जाएगा
ब्रेकिंग और व्यवहार में बदलाव
- अगर पैनल की चौड़ाई या ऊंचाई 32dp से कम है, तो
PanelEntity
औरActivityPanelEntity
के कोने की त्रिज्या डिफ़ॉल्ट रूप से 32dp या उससे कम होगी
नए एपीआई और सुविधाएं
StereoSurface.CanvasShape
की सुविधा जोड़ी गई है. इसकी मदद से, इमर्सिव मीडिया को रेंडर करने के लिएSpherical
औरHemispherical
कैनवस बनाए जा सकते हैं.StereoSurfaceEntity.create()
अबCanvasShape
पैरामीटर स्वीकार करता है. (फ़िलहाल, इस पैरामीटर को अनदेखा किया जाता है, लेकिन आने वाले वर्शन में इसका इस्तेमाल किया जाएगा)StereoSurfaceEntity.create()
अबDimensions
पैरामीटर नहीं लेता. ऐप्लिकेशन कोCanvasShape
सेट करके, कैनवस का साइज़ कंट्रोल करना चाहिएStereoSurfaceEntity
मेंCanvasShape
सदस्य है, जिसे डाइनैमिक तौर पर सेट किया जा सकता है.StereoSurfaceEntity.dimensions
अब रीड-ओनली प्रॉपर्टी है. डाइमेंशन बदलने के लिए, ऐप्लिकेशन कोCanvasShape
सेट करना चाहिए.StereoSurfaceEntity
की मदद से, अब निर्माण के बादStereoMode
को फिर से सेट किया जा सकता है.
दूसरे बदलाव
- कंपाइल के समय के लिए, minSDK को 24 पर सेट किया गया है. सभी Jetpack XR API के लिए, रनटाइम के दौरान एपीआई 34 की ज़रूरत होती है.
SceneCore
की सेशन फ़ैक्ट्री (Session.create
), अबSCENE_UNDERSTANDING
की अनुमति पाने के लिए इंटेंट लॉन्च नहीं करती. इसके बजाय, क्लाइंट ऐप्लिकेशन को ऐंकर बनाने की कोशिश करने से पहले, उपयोगकर्ता से साफ़ तौर पर अनुमतियों का अनुरोध करना होगा. अगर उपयोगकर्ता ने अनुमति नहीं दी है, तो ऐंकर नहीं बनाया जा सकेगा.
गड़बड़ियां ठीक की गईं
getActivitySpacePose()
को ठीक कर दिया गया है, ताकिActivitySpace
स्केल का हिसाब लगाया जा सके. इसके लिए, अनुवाद की वैल्यू को स्केल किए गए मीटर में दिखाया जाएगा, न कि बिना स्केल वाले मीटर में. जब सोर्स या डेस्टिनेशन मेंActivitySpace
शामिल होता है, तोtransformPoseTo
अब निर्देशांक में हुए बदलावों का हिसाब लगाने के लिए सही इकाइयों का भी इस्तेमाल करता है.- जब भी
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
का इस्तेमाल करके स्काईबॉक्स के लिए कोई शून्य वैल्यू पास की जाएगी, तब स्काईबॉक्स को पूरी तरह से काले रंग में सेट कर दिया जाएगा. सिस्टम के डिफ़ॉल्ट स्काईबॉक्स और ज्यामिति पर वापस जाने के लिए,setSpatialEnvironmentPreference(null).
का इस्तेमाल करें
वर्शन 1.0.0-alpha01
12 दिसंबर, 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
रिलीज़ हो गया है.
शुरुआती रिलीज़ की सुविधाएं Jetpack SceneCore की शुरुआती डेवलपर रिलीज़. यह एक 3D सीन ग्राफ़ लाइब्रेरी है, जिसका इस्तेमाल इमर्सिव सीन और एनवायरमेंट बनाने और उनमें बदलाव करने के लिए किया जाता है. इस लाइब्रेरी की मदद से, 3D मॉडल और कॉन्टेंट पैनल को एक-दूसरे के हिसाब से और वर्चुअल या रीयल-वर्ल्ड एनवायरमेंट के हिसाब से व्यवस्थित किया जा सकता है.
- SpatialEnvironment: अपने एक्सआर सीन के बैकग्राउंड के तौर पर, स्काईबॉक्स इमेज और/या 3D मॉडल की ज्यामिति का इस्तेमाल करके, पूरी तरह से इमर्सिव अनुभव बनाएं. इसके अलावा, पासथ्रू की सुविधा चालू करें, ताकि आपका वर्चुअल सीन, उपयोगकर्ता के आस-पास के असल वातावरण के साथ इंटिग्रेट हो सके.
- PanelEntity: अपने 3D सीन में 2D कॉन्टेंट जोड़ें. इसके लिए, स्टैंडर्ड Android लेआउट और गतिविधियों को स्पेसलाइज़ किए गए पैनल में जोड़ें. ये पैनल, रीयल-वर्ल्ड के प्लैटफ़ॉर्म पर फ़्लोट या ऐंकर किए जा सकते हैं.
- GltfModelEntity: अपने सीन में 3D मॉडल डालें, उन्हें ऐनिमेट करें, और उनके साथ इंटरैक्ट करें. SceneCore, मौजूदा मॉडल के साथ आसानी से इंटिग्रेट करने के लिए, glTF फ़ाइल फ़ॉर्मैट के साथ काम करता है.
- स्पेशल ऑडियो: अपने 3D सीन में ऐंबियंट और पॉइंट ऑडियो सोर्स जोड़ें, ताकि आपको पूरी तरह से इमर्सिव और स्पेसलाइज़ किया गया साउंड मिले.
- StereoSurfaceEntity: SceneCore, Android डिवाइस की स्क्रीन पर रेंडर किए गए कॉन्टेंट को बाईं/दाईं आंख के हिसाब से रूट करने की सुविधा देता है. इसका इस्तेमाल, स्टीरियोस्कोपिक कॉन्टेंट को साइड-बाय-साइड या टॉप-बॉटम फ़ॉर्मैट में रेंडर करने के लिए किया जा सकता है. जैसे, स्टीरियो फ़ोटो, 3D वीडियो या डाइनैमिक तौर पर रेंडर किए गए अन्य यूज़र इंटरफ़ेस (यूआई). ऐप्लिकेशन को वीडियो डिकोड करने के लिए, MediaPlayer या ExoPlayer का इस्तेमाल करना चाहिए.
- कॉम्पोनेंट सिस्टम: SceneCore, आपके XR कॉन्टेंट में सुविधाएं जोड़ने के लिए, एक बेहतर और सुविधाजनक कॉम्पोनेंट सिस्टम उपलब्ध कराता है. इसमें उपयोगकर्ताओं के लिए, मॉडल और पैनल को एक जगह से दूसरी जगह ले जाने, उनका साइज़ बदलने, और उनसे इंटरैक्ट करने की सुविधाएं भी शामिल हैं.
- ऐंकर: पासथ्रू की सुविधा चालू होने पर, पैनल और मॉडल को असल प्लैटफ़ॉर्म से अटैच किया जा सकता है. इससे, उपयोगकर्ताओं को असल दुनिया के माहौल में वर्चुअल कॉन्टेंट को आसानी से इंटिग्रेट करने में मदद मिलती है.
- उपयोगकर्ता की पोज़िशन: वर्चुअल सीन में उपयोगकर्ता की जगह की जानकारी ऐक्सेस करके, अपने कॉन्टेंट को उपयोगकर्ता की पोज़िशन के हिसाब से दिखाएं.
- SpatialCapabilities: पूरी तरह से अडैप्टिव ऐप्लिकेशन बनाएं, जो उपलब्ध होने पर स्पेसलाइज़ की गई सुविधाओं का फ़ायदा ले सकें. जैसे, यूज़र इंटरफ़ेस (यूआई) कॉन्टेंट की 3D पोज़िशनिंग. इतना ही नहीं, ऐप्लिकेशन के चलने के दौरान, आपका ऐप्लिकेशन सुविधाओं में होने वाले बदलावों को मॉनिटर कर सकता है. इससे, उपयोगकर्ता अपने Android XR डिवाइस का इस्तेमाल कैसे कर रहा है, इसके आधार पर अनुभव में बदलाव किया जा सकता है.
ऐसी समस्याएं जिनकी जानकारी पहले से है
- फ़िलहाल, Jetpack SceneCore का इस्तेमाल करने के लिए, कम से कम 30 वर्शन का SDK टूल ज़रूरी है. इस समस्या को हल करने के लिए, यहां दी गई मेनिफ़ेस्ट एंट्री
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
जोड़ें. इससे, ऐप्लिकेशन को 23 के मिनिमम SDK के साथ बनाया और चलाया जा सकेगा. - सेशन अमान्य हो सकता है. ऐसा कई स्थितियों में होता है, जब गतिविधि अपने-आप फिर से शुरू हो जाती है. जैसे, मुख्य पैनल का साइज़ बदलना, बाहरी डिवाइसों को कनेक्ट करना, और लाइट और डार्क मोड के बीच स्विच करना. अगर आपको सेशन अमान्य होने से जुड़ी समस्याएं आ रही हैं, तो इन समस्याओं को हल करने के लिए, अपने मुख्य पैनल का साइज़ न बदलें. इसके अलावा, डाइनैमिक पैनल इकाई का इस्तेमाल करें, कॉन्फ़िगरेशन में किए गए खास बदलावों के लिए गतिविधि को फिर से शुरू करने की सुविधा बंद करें या लाइट/डार्क मोड की थीम में किए गए बदलावों को बंद करें.
- GltfEntity पर, ऐसे कॉम्पोनेंट इस्तेमाल नहीं किए जा सकते जिन्हें एक जगह से दूसरी जगह ले जाया जा सकता है और जिनका साइज़ बदला जा सकता है.
- GltfEntity पर Entity.getSize() काम नहीं करता.
- Jetpack XR ऐप्लिकेशन को AndroidManifest में
android.permission.SCENE_UNDERSTANDING
की अनुमति का अनुरोध करना होगा. - सेशन बनाने की सुविधा सिर्फ़ Android XR डिवाइस पर काम करती है. फ़िलहाल, अगर कोई सेशन बनाया जाता है और उसे Android XR डिवाइस के अलावा किसी दूसरे डिवाइस पर इस्तेमाल करने की कोशिश की जाती है, तो आपको RuntimeException दिखेगा.
- `SpatialEnvironment.setSpatialEnvironmentPreference()` की मदद से स्काईबॉक्स को शून्य पर सेट करने पर, दस्तावेज़ में बताए गए तरीके से स्काईबॉक्स काला नहीं दिखता. ऐसा करने पर, सिस्टम का डिफ़ॉल्ट स्काईबॉक्स दिख सकता है या मौजूदा स्काईबॉक्स में कोई बदलाव नहीं होगा.
- SceneCore क्लाइंट को अपने ऐप्लिकेशन की डिपेंडेंसी के लिए, अपने Gradle कॉन्फ़िगरेशन में
implementation(“com.google.guava:listenablefuture-1.0”)
जोड़ना चाहिए. आने वाले समय में रिलीज़ होने वाले वर्शन में, scenecore इस लाइब्रेरी कोapi
डिपेंडेंसी के तौर पर शामिल करेगा. इससे क्लाइंट को साफ़ तौर पर इसकी जानकारी देने की ज़रूरत नहीं होगी. - SceneCore,
com.google.guava:guava-31.1-android
औरcom.google.protobuf:protobuf-javalite
को ट्रांज़िशन डिपेंडेंसी के तौर पर गलत तरीके से शामिल करता है. अगर इससे आपके बिल्ड में डुप्लीकेट क्लास की गड़बड़ियां होती हैं, तो इन दो डिपेंडेंसी को सुरक्षित तरीके से हटाया जा सकता है. - अगर आपका ऐप्लिकेशन SceneCore का इस्तेमाल करता है और ProGuard चालू करता है, तो सेशन बनाने पर वह क्रैश हो जाएगा. इस समस्या को हल करने के लिए, ProGuard को बंद करें. ProGuard को चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, यह गाइड देखें.