3D मॉडल के साथ काम करते समय, Jetpack XR SDK, glTF 2.0 ओपन स्टैंडर्ड के साथ काम करता है. Jetpack XR SDK का इस्तेमाल करके बनाए गए ऐप्लिकेशन को Android XR रेंडर करता है. ऐसे में, 3D मॉडल को glTF 2.0 स्टैंडर्ड में बताई गई फ़िज़िकली बेस्ड रेंडरिंग (पीबीआर) तकनीकों के साथ रेंडर किया जाएगा. साथ ही, एक्सटेंशन का इस्तेमाल किया जाएगा. ज़्यादातर डिजिटल कॉन्टेंट क्रिएशन (डीसीसी) टूल, जैसे कि Autodesk Maya, Maxon ZBrush, Blender, और Spline, 3D मॉडल को glTF फ़ॉर्मैट (.gltf या .glb फ़ाइलें) में एक्सपोर्ट कर सकते हैं.
अगर उपयोगकर्ता या आपके ऐप्लिकेशन ने SpatialEnvironment स्काईबॉक्स तय किया है, तो 3D मॉडल को एनवायरमेंट स्काईबॉक्स से मिली लाइटिंग की जानकारी के हिसाब से रौशनी दी जाएगी. रिफ्लेक्टिव मटीरियल और स्पेक्लर हाइलाइट भी एनवायरमेंट स्काईबॉक्स को दिखाएंगे. अगर पासथ्रू मोड चालू है, तो लाइटिंग, रिफ़्लेक्शन, और स्पेक्युलर हाइलाइट, एक दिशा से आने वाली रोशनी वाले कमरे के हिसाब से होंगी.
साथ काम करने वाले मटीरियल के बारे में खास जानकारी पाने के लिए, Khronos की साइट पर glTF PBR प्रॉपर्टी देखें. इन और अन्य प्रॉपर्टी की मदद से, अपने 3D मॉडल को पसंद के मुताबिक बनाने का तरीका जानने के लिए, अपने ऐप्लिकेशन में 3D मॉडल को पसंद के मुताबिक बनाएं लेख पढ़ें
अपने ऐसेट फ़ोल्डर में कोई glTF फ़ाइल जोड़ना
glTF फ़ाइल मिल जाने के बाद, अगला चरण इसे Android Studio में ऐसेट डायरेक्ट्री में जोड़ना है. हमारा सुझाव है कि ऐसेट टाइप को बेहतर तरीके से व्यवस्थित करने के लिए, models डायरेक्ट्री बनाएं.

SpatialGltfModel का इस्तेमाल करके 3D ऑब्जेक्ट जोड़ना
Android XR, 3D मॉडल के लिए glTF फ़ॉर्मैट को सपोर्ट करता है. आम तौर पर, इन्हें .glb फ़ाइलों के तौर पर सेव किया जाता है. इन ऑब्जेक्ट को अपने लेआउट में जोड़ने के लिए, SpatialGltfModel कंपोज़ेबल का इस्तेमाल करें. इस एपीआई की मदद से, ऐसेट लोड करने और उनकी स्थिति को मैनेज करने की प्रोसेस को आसान बनाया जा सकता है.
किसी मॉडल को दिखाने के लिए, सबसे पहले rememberSpatialGltfModelState का इस्तेमाल करके, उसके सोर्स और स्थिति को तय करें. अपने ऐप्लिकेशन के assets फ़ोल्डर, URI या raw data से मॉडल लोड किए जा सकते हैं.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
स्टेट तय हो जाने के बाद, SpatialGltfModel कंपोज़ेबल का इस्तेमाल करके, इसे सबस्पेस में रेंडर करें.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
Compose SceneCoreEntity का इस्तेमाल करके 3D मॉडल को जगह पर रखना
SceneCoreEntity का इस्तेमाल करके 3D मॉडल को रखने के लिए, आपको पहले GltfModel.create() का इस्तेमाल करके glTF को मेमोरी में लोड करना होगा. इसके बाद, SceneCore कॉम्पोनेंट को Compose for XR लेआउट से जोड़ने के लिए, 3D मॉडल को SceneCoreEntity में रखा जा सकता है. अपने लेआउट में 3D ऑब्जेक्ट रखने के लिए, SceneCoreEntity का इस्तेमाल करना लेख पढ़ें.
Jetpack Scenecore का इस्तेमाल करके 3D मॉडल जोड़ना
glTF मॉडल लोड करने के लिए, GltfModel.create() को कॉल करें.
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
इस समय, मॉडल को मेमोरी में लोड किया जाता है, लेकिन इसे अभी तक रेंडर नहीं किया जा रहा है. अगर आपको कई 3D मॉडल लोड करने हैं या आपका मॉडल बड़ा है, तो उन्हें समय से पहले एसिंक्रोनस तौर पर लोड करना बेहतर होता है. इस तरह, उपयोगकर्ताओं को आपके मॉडल के मेमोरी में लोड होने का इंतज़ार नहीं करना पड़ता.
glTF को ActivitySpace में जोड़ें. कॉल
GltfModelEntity.create का इस्तेमाल करके, कोई इकाई बनाएं और उसे
ActivitySpace में रखें. सबसे सही तरीके के तौर पर, आपको यह देखना चाहिए कि ऐप्लिकेशन ऐसी स्थिति में हो जिसमें स्पेशल कैपेबिलिटी इस्तेमाल की जा सकती हों.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
अब ऐप्लिकेशन चलाने पर, आपको लोड किया गया 3D मॉडल दिखेगा.

Scene Viewer का इस्तेमाल करके 3D मॉडल लोड करना
अगर आपको इंटरैक्शन की बुनियादी सुविधाओं के साथ 3D मॉडल लोड करने का सबसे आसान तरीका चाहिए, तो Scene Viewer को मोबाइल पर इस्तेमाल करने के तरीके से ही इस्तेमाल करें. Android XR और मोबाइल पर Scene Viewer के बीच मुख्य अंतर यह है कि Scene Viewer सिर्फ़ glTF फ़ाइल की ओर ले जाने वाले फ़ाइल यूआरआई पैरामीटर के साथ काम करता है. साथ ही, अन्य सभी पैरामीटर को अनदेखा कर दिया जाता है.
Scene Viewer एक अलग ऐप्लिकेशन है. इसे इंटेंट का इस्तेमाल करके चालू किया जाता है और यह फ़ुल स्पेस मोड में चलता है. इस वजह से, इसे चालू करने पर आपका ऐप्लिकेशन नहीं दिखेगा और Scene Viewer पर फ़ोकस होगा. आपने जो भी एनवायरमेंट बदले होंगे वे उपयोगकर्ता की सिस्टम सेटिंग के हिसाब से रीसेट हो जाएंगे.
Android XR पर Scene Viewer में glTF फ़ाइल देखने के लिए, Intent का इस्तेमाल करने का उदाहरण यहां दिया गया है:
val url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf" val sceneViewerIntent = Intent(Intent.ACTION_VIEW) val intentUri = Uri.parse("https://arvr.google.com/scene-viewer/1.2") .buildUpon() .appendQueryParameter("file", url) .build() sceneViewerIntent.setData(intentUri) try { startActivity(sceneViewerIntent) } catch (e: ActivityNotFoundException) { // There is no activity that could handle the intent. }
Scene Viewer में इंटरैक्टिविटी के विकल्पों के बारे में ज़्यादा जानने के लिए, हमारे 3D मॉडल डिज़ाइन से जुड़े दस्तावेज़ देखें.
glTF एक्सटेंशन
Jetpack XR SDK, कई glTF एक्सटेंशन के साथ काम करता है. ये एक्सटेंशन, 3D मॉडल की क्षमताओं को बढ़ाते हैं. ये सुविधाएं, GltfModelEntity और Scene Viewer, दोनों के ज़रिए उपलब्ध हैं.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp