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
एट्रिब्यूट और कॉन्टेंट पैरामीटर को मैन्युअल तरीके से अडजस्ट करें, ताकि वे आपकी कस्टम सामग्री से मेल खा सकें.
- इंपोर्ट की प्रक्रिया
के दौरान, कस्टम कॉन्टेंट