3D मॉडल को इंपोर्ट करने, उन्हें सीनफ़ॉर्म फ़ॉर्मैट में बदलने, और Android Studio में उनकी झलक देखने का तरीका जानें.
नई 3D एसेट इंपोर्ट करें
विज़ुअल फ़ॉर्म में 3D एसेट का इस्तेमाल इन फ़ॉर्मैट में किया जा सकता है:
- ओबीजे
- glTF (ऐनिमेशन काम नहीं करते)
- FBX, ऐनिमेशन के साथ या उसके बिना.
नया 3D एसेट इंपोर्ट करने के लिए, यह तरीका अपनाएं:
पुष्टि करें कि आपके प्रोजेक्ट के
appफ़ोल्डर में,sampledataफ़ोल्डर है.फ़ोल्डर बनाने के लिए, प्रोजेक्ट विंडो में
appफ़ोल्डर पर दायां क्लिक करें. इसके बाद, नया > डेटा की सैंपल डायरेक्ट्री चुनें.sampledataफ़ोल्डर आपके Android Studio प्रोजेक्ट का हिस्सा है, लेकिन इसके कॉन्टेंट को आपके APK में शामिल नहीं किया जाएगा.अपनी 3D मॉडल सोर्स एसेट फ़ाइल (
*.obj,*.fbxया*.gltf) और इसकी सभी डिपेंडेंसी (*.mtl,*.bin,*.png,*.jpgवगैरह) कोsampledataफ़ोल्डर में कॉपी करें.इन स्रोत फ़ाइलों को अपने प्रोजेक्ट के
assetsयाresफ़ोल्डर में कॉपी न करें, इसलिए यह सुविधा आपके APK में बेवजह शामिल हो जाएगी.इंपोर्ट की प्रोसेस शुरू करने के लिए, 3D मॉडल की सोर्स एसेट पर दायां क्लिक करें और विज़ुअल फ़ॉर्म एसेट इंपोर्ट करें चुनें.
वैल्यू का इस्तेमाल, ऐप्लिकेशन's
build.gradleऔर*.sfaऔर*.sfbफ़ाइलों में किए जाने वाले इनपुट के लिएsceneform.asset()एंट्री से किया जाता है.अगर आप पहली बार मॉडल इंपोर्ट कर रहे हैं, तो डिफ़ॉल्ट वैल्यू का इस्तेमाल करें.
फ़ील्ड जानकारी सोर्स एसेट पाथ इंपोर्ट करने के लिए, OBJ, FBX या glTF 3D मॉडल की एसेट का नाम. मटीरियल पाथ defaultसे, Docs में पहले से मौजूद डिफ़ॉल्ट कॉन्टेंट या कस्टम कॉन्टेंट*.matफ़ाइल के पाथ का इस्तेमाल करने की जानकारी मिलती है.
.sfa आउटपुट पाथ डिफ़ॉल्ट का इस्तेमाल करें या sampledataफ़ोल्डर में कोई दूसरा पाथ डालें.अगर .sfa फ़ाइल मौजूद नहीं है, तो यह जनरेट होती है. इंपोर्ट की प्रोसेस के कुछ पहलुओं को कंट्रोल करने के लिए, इसमें बदलाव किया जा सकता है.
इससे यह पक्का होता है कि
*.sfaमुफ़्त में आपके APK में शामिल नहीं है..sfb आउटपुट पाथ डिफ़ॉल्ट तौर पर, src/main/assets/फ़ोल्डर का इस्तेमाल किया जाता है. इससे, आर्बिट्रेरी एसेट के फ़ाइल नाम इस्तेमाल किए जा सकते हैं.अगर फ़ाइल का नाम (फ़ाइल एक्सटेंशन के बिना) एक मान्य रिसॉर्स आइडेंटिफ़ायर (जैसे,
R.raw.filename) है, तो आपके पासsrc/main/res/raw/फ़ोल्डर का इस्तेमाल करने का विकल्प भी है.अपने ऐप्लिकेशन में
assets/औरres/फ़ोल्डर का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Android's ऐप्लिकेशन के संसाधनों की खास जानकारी देखें.ऐनिमेशन फ़ाइलें अगर आप
*.fbxऐनिमेशन फ़ाइलें इंपोर्ट कर रहे हैं, तो प्लस के निशान (+) पर क्लिक करें और बाकी फ़ाइलें एक-एक करके जोड़ें.इंपोर्ट करने के लिए पूरा करें पर क्लिक करें.
आपकी एसेट को इंपोर्ट करने के लिए, प्लग इन ये काम करता है:
अगर आपके प्रोजेक्ट's
build.gradleमें कोई मौजूद नहीं है, तो Secureform gradle प्लग इन जोड़ता है:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }आपकी app's
build.gradleफ़ाइल को अपडेट करता है. इसमेंapply pluginलाइन शामिल होती है. साथ ही, इंपोर्ट की गई नई एसेट के लिएsceneform.asset()एंट्री होती है:apply plugin: 'com.google.ar.sceneform.plugin' sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import. 'default', // 'Material Path' specified during import. 'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import. 'src/main/res/raw/andy') // '.sfb Output Path' specified during import.ऐप्लिकेशन और #39;
build.gradleमें ये नई एंट्री, दो ग्रेडल टास्क बनाती हैं:अगर
createAsset-<asset-name>अभी तक मौजूद नहीं है, तो एक Superform एसेट डेफ़िनिशन (*.sfa) फ़ाइल बनाई जाती है.इस टास्क से, मौजूदा
*.sfaफ़ाइल ओवरराइट नहीं होगी. इसका मतलब है कि इंपोर्ट के बाद, SFA फ़ाइल में किया गया कोई भी बदलाव ओवरराइट नहीं होगा.*.sfaफ़ाइल एक टेक्स्ट फ़ाइल होती है. इसमें एसेट की इंपोर्ट सेटिंग की पूरी जानकारी होती है, जिसे लोग पढ़ सकते हैं. यह आपके सोर्स एसेट में मौजूद मॉडल और टेक्स्चर को रेफ़रंस के तौर पर इस्तेमाल करता है. साथ ही, यह सीनफ़ॉर्म की फ़िज़िकल तौर पर मौजूद सामग्री के लिए, मटीरियल पैरामीटर देकर जानकारी भी देता है.compileAsset-<asset-name>,*.sfaफ़ाइल को सीनफ़ॉर्म बाइनरी एसेट (*.sfb) फ़ाइल में कंपाइल करता है.यह
*.sfbफ़ाइल, आपके ऐप्लिकेशन के APK में पहले से मौजूद होती है. साथ ही, रनटाइम के दौरान रेंडर करने लायक बनाने के लिए लोड होती है.
ज़्यादा जानकारी के लिए, सीनफ़ॉर्म ग्रेडल प्लग इन का रेफ़रंस देखें.
टेक्स्ट विंडो में
*.sfaऔर व्यूअर विंडो में*.sfbखोलता है.
पहले इंपोर्ट की गई 3D एसेट को अपडेट करना
जब आप पहले इंपोर्ट की गई OBJ, FBX या glTF मॉडल की सोर्स एसेट फ़ाइल (*.obj, *.fbx या *.gltf) में बदलाव करते हैं, तो आपके app's में इससे जुड़ी sceneform.asset() एंट्री, build.gradle की मदद से मौजूदा *.sfa पैरामीटर के आधार पर *.sfb की अपडेट की गई फ़ाइल अपने-आप जनरेट करती है.
पहले से इंपोर्ट की गई किसी एसेट की पैरामीटर वैल्यू में बदलाव करना:
*.sfaटेक्स्ट फ़ाइल में बदलाव करने के लिए, गाइड के तौर पर एसएफ़ए फ़ाइल फ़ॉर्मैट का इस्तेमाल करें.- बदलाव सेव करें. इससे एसेट को कंपाइल किया जाता है और
*.sfbफ़ाइल अपडेट की जाती है. - एसेट की दर्शक विंडो खोलने के लिए,
*.sfbफ़ाइल पर दो बार क्लिक करके अपडेट की गई एसेट की झलक देखें.
अगर आप पहले इंपोर्ट की गई ऐसी एसेट को अपडेट कर रहे हैं जिसमें ऐनिमेशन डेटा शामिल है, तो इंपोर्ट किए गए डायलॉग के ऐनिमेशन फ़ाइलें सेक्शन में प्लस (+) के निशान का इस्तेमाल करके, अपडेट की गई हर *.fbx फ़ाइल को अलग-अलग इंपोर्ट करें.
Gradle एसेट की परिभाषाएं
इंपोर्ट करने की प्रोसेस के तहत, build.gradle फ़ाइल के आखिर में
*.fbx ऐनिमेशन की कोई भी फ़ाइल जुड़ जाती है.
sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])
रेंडर करने लायक बनाएं
अगर एसेट को *.sfb फ़ॉर्मैट में कंपाइल किया जाता है, तो
ModelRenderable
बनाया जा सकता है. साथ ही, सीन में किसी नोड के साथ इस तरह जोड़ा जा सकता है:
ModelRenderable.builder()
// To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
.setSource(this, Uri.parse("andy.sfb"))
// Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
//.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
कस्टम सामग्री का इस्तेमाल करना
प्राकृतिक रूप में मौजूद डिफ़ॉल्ट सामग्री से डेवलपर के लिए शानदार नतीजे पाना आसान हो जाता है. कस्टम कॉन्टेंट का इस्तेमाल करके भी अपनी एसेट को पसंद के मुताबिक बनाया जा सकता है.
अपनी एसेट में कस्टम कॉन्टेंट असाइन करने के लिए:
एक कस्टम सामग्री परिभाषा (
*.mat) फ़ाइल बनाएं, जिसमें गाइड के रूप में [कस्टम मटीरियल रेफ़रंस](/scineform/develop/custom-material) का इस्तेमाल किया जाए.एसेट पर कस्टम कॉन्टेंट लागू करें:
नई एसेट इंपोर्ट करते समय:
- इंपोर्ट की प्रक्रिया
के दौरान, कस्टम कॉन्टेंट
*.matके बारे में बताएं.
पहले इंपोर्ट की गई एसेट अपडेट करने के लिए:
अगर
*.sfaके कॉन्टेंट को पसंद के मुताबिक नहीं बनाया गया है, तो मौजूदा*.sfaऔर*.sfbफ़ाइलों को मिटाएं. इसके बाद, ऐप्लिकेशन औरsceneform.asset()में जाकर,sceneform.asset()की एंट्री मिटाएं. इसके बाद, एसेट को फिर से इंपोर्ट करें. इससे यह पक्का होता है कि दोबारा जनरेट किए गए*.sfaएट्रिब्यूट और सामग्री पैरामीटर, आपकी कस्टम सामग्री के साथ काम करने वाले पैरामीटर से मेल खाएंगे.आपने जो
*.sfaकस्टमाइज़ेशन किए हैं उन्हें सुरक्षित रखने के लिए,*.sfaफ़ाइल खोलें औरsourceएट्रिब्यूट को, अपने कस्टम मटीरियल*.matफ़ाइल के पाथ में बदलें. इसके बाद,*.sfaएट्रिब्यूट और कॉन्टेंट पैरामीटर को मैन्युअल तरीके से अडजस्ट करें, ताकि वे आपकी कस्टम सामग्री से मेल खा सकें.
- इंपोर्ट की प्रक्रिया
के दौरान, कस्टम कॉन्टेंट

