Skip to content

Blender से Unity एक्सपोर्ट चेकलिस्ट: सही स्केल, अक्ष, हड्डियाँ और ऐनिमेशन (2026) ​

अंतिम अपडेट: सितंबर 2026।

एक रिग किया हुआ लो-पॉली कैरेक्टर, जो समान आकार में Blender व्यूपोर्ट से Unity सीन में जा रहा है

Blender मॉडल को सही आकार और सही दिशा में, ऐसे रिग के साथ Unity में लाने के लिए जिसे Unity पढ़ सके, File > Export > FBX (.fbx) से FBX एक्सपोर्ट करें। Apply Scalings को FBX Units Scale (या FBX All), Forward को -Z और Up को Y पर रखें, Apply Unit चालू करें, Add Leaf Bones बंद करें, Smoothing को Face पर सेट करें और Path Mode को Copy पर रखकर Embed Textures चालू करें। .blend फ़ाइल को Assets में न डालें, और जब तक Unity का glTFast इम्पोर्टर बिना अतिरिक्त काम के ऐनिमेशन न चला सके, glTF का उपयोग केवल स्थिर प्रॉप्स के लिए करें। नीचे बताया गया है कि हर सेटिंग क्यों मायने रखती है, उसके गलत होने पर क्या दिखाई देता है और उसे दोनों में से किसी भी तरफ़ कैसे ठीक किया जाए।

संक्षिप्त उत्तर ​

  • फ़ॉर्मैट: रिग या ऐनिमेशन वाली किसी भी चीज़ के लिए FBX। glTF (.glb) केवल स्थिर प्रॉप्स के लिए, और वह भी com.unity.cloud.gltfast पैकेज इंस्टॉल करने के बाद। कच्ची .blend फ़ाइल कभी इस्तेमाल न करें।
  • स्केल: Blender Scene Properties में Unit System को Metric और Unit Scale को 1.0 रखें। एक्सपोर्टर में Scale 1.00, Apply Scalings FBX Units Scale और Apply Unit चयनित रखें। Unity में Scale Factor 1 और Convert Units चयनित रखें। 1.8 मीटर लंबा कैरेक्टर 1.8 यूनिट ऊँचा दिखना चाहिए और हर ट्रांसफ़ॉर्म पर उसका स्केल 1 होना चाहिए।
  • अक्ष: एक्सपोर्टर में Forward -Z और Up Y रखें (यही डिफ़ॉल्ट हैं)। Unity के Model टैब में Bake Axis Conversion चुनें, ताकि रूट ट्रांसफ़ॉर्म से X पर -90 हट जाए।
  • हड्डियाँ: Add Leaf Bones का चयन हटाएँ। यदि आप Rigify या Auto-Rig Pro कंट्रोल रिग एक्सपोर्ट कर रहे हैं, तो Only Deform Bones चुनें। मॉडल को T-पोज़ में बनाएँ और हड्डियों के नाम शरीर के अंगों के अनुसार रखें, ताकि Humanoid Avatar स्वयं मैप हो जाए।
  • ऐनिमेशन: हर क्लिप के लिए एक Action या हर क्लिप के लिए एक NLA स्ट्रिप रखें। NLA Strips, All Actions और Key All Bones चालू रखें तथा Sampling Rate 1 रखें। Unity में क्लिप Animation टैब में दिखाई देती हैं—हर FBX AnimStack के लिए एक क्लिप।
  • टेक्सचर: Path Mode को Copy पर और Embed Textures को चालू रखें। Unity के Materials टैब में पहले Extract Textures और फिर Extract Materials दबाएँ। गुलाबी रंग का अर्थ है कि शेडर आपके रेंडर पाइपलाइन से मेल नहीं खाता, न कि टेक्सचर गायब है।

त्वरित संदर्भ ​

Unity के लिए महत्त्वपूर्ण Blender FBX एक्सपोर्टर सेटिंग्स, उनके सुझाए गए मान और कारण। विकल्पों के नाम और विवरण Blender मैनुअल और एक्सपोर्टर के सोर्स से लिए गए हैं।

पैनलसेटिंगUnity के लिएकारण
IncludeSelected Objectsचालूकैमरे, लाइटें और रेफ़रेंस प्लेन एक्सपोर्ट नहीं होने चाहिए
IncludeObject TypesArmature, Mesh (यदि आप लोकेटर इस्तेमाल करते हैं तो Empty)कैमरे और लाइटें ऐसे Unity कंपोनेंट के रूप में इम्पोर्ट होती हैं जिन्हें आप बाद में हटा देंगे
TransformScale1.00कोई भी अन्य मान फ़ाइल में एक रहस्यमय गुणक बेक कर देता है
TransformApply ScalingsFBX Units Scale या FBX Allमीटर-से-सेंटीमीटर गुणक को हर ऑब्जेक्ट पर रखने के बजाय फ़ाइल हेडर में रखता है
TransformForward / Up-Z Forward, Y UpUnity में Y ऊपर और Z आगे होता है
TransformApply Unitचालूआपकी Scene यूनिट सेटिंग्स का पालन करता है
TransformUse Space Transformचालूअक्ष रूपांतरण को ऑब्जेक्ट रोटेशन में लिखता है
TransformApply Transformबंदएक्सपोर्टर स्वयं बताता है कि यह आर्मेचर और ऐनिमेशन के साथ ठीक से काम नहीं करता
GeometrySmoothingFaceUnity को ब्लेंड-शेप नॉर्मल्स के लिए स्मूदिंग ग्रुप चाहिए
GeometryApply Modifiersचालूमूल्यांकित मेश एक्सपोर्ट करता है (मिरर, सबडिविज़न, ट्रायएंगुलेट)
ArmaturePrimary / Secondary Bone AxisY / X (डिफ़ॉल्ट)Unity को इससे फ़र्क नहीं पड़ता, लेकिन रीटार्गेटिंग टूल्स को पड़ता है
ArmatureArmature FBXNode TypeNullडिफ़ॉल्ट; एक खाली रूट GameObject के रूप में इम्पोर्ट होता है
ArmatureOnly Deform Bonesकंट्रोल रिग के लिए चालू, सामान्य आर्मेचर के लिए बंदIK टार्गेट और विजेट को स्केलेटन से बाहर रखता है
ArmatureAdd Leaf Bonesबंदअन्यथा हर चेन एक _end हड्डी पर समाप्त होती है, जिसे Unity दिखाता है
Bake AnimationKey All Bones, NLA Strips, All Actions, Force Start/End Keyingसभी चालूहर क्लिप के लिए एक AnimStack, और हर हड्डी की-फ़्रेम की हुई
Bake AnimationSampling Rate / Simplify1.0 / 1.0हर फ़्रेम पर एक की, साथ में हल्की कर्व सफ़ाई
MainPath Mode / Embed TexturesCopy / चालूटेक्सचर .fbx फ़ाइल के भीतर साथ जाते हैं

.blend को Assets में न डालें ​

Unity .blend फ़ाइल स्वीकार कर लेता है, और यही जाल है। Unity का प्रोप्राइटरी फ़ॉर्मैट पेज बताता है कि क्या होता है: “प्रोप्राइटरी फ़ाइलों को सीधे Unity में इम्पोर्ट करने के लिए आपके पास 3D मॉडलिंग सॉफ़्टवेयर इंस्टॉल होना चाहिए,” और “जब आप पहली बार किसी प्रोप्राइटरी फ़ाइल को Unity में इम्पोर्ट करते हैं, तो 3D मॉडलिंग सॉफ़्टवेयर को कमांड-लाइन प्रक्रिया में लॉन्च होना पड़ता है।” Unity बैकग्राउंड में Blender का FBX एक्सपोर्टर ऐसी सेटिंग्स के साथ चला रहा होता है जिन्हें आप नियंत्रित नहीं कर सकते। इसलिए आपको एक्सपोर्टर की डिफ़ॉल्ट सेटिंग्स मिलती हैं, जिनमें लीफ़ बोन्स और वह स्केल व्यवस्था भी शामिल है जो इस पेज पर बताई गई अधिकतर समस्याएँ पैदा करती है।

वही पेज यह भी बताता है कि .blend वाला तरीका क्या नहीं कर सकता: “टेक्सचर और डिफ़्यूज़ रंग अपने-आप असाइन नहीं होते,” और “Blender, FBX फ़ाइल में ऐनिमेशन के भीतर विज़िबिलिटी मान एक्सपोर्ट नहीं करता।” Unity का 3D फ़ॉर्मैट पेज टीम से जुड़ी समस्या भी बताता है: .blend के रूप में सेव किए गए एसेट “तब तक इम्पोर्ट नहीं होते, जब तक आपके कंप्यूटर पर संबंधित 3D मॉडलिंग सॉफ़्टवेयर इंस्टॉल न हो।” इसलिए आपकी बिल्ड मशीन सहित “Unity प्रोजेक्ट पर काम करने वाले हर व्यक्ति के पास सही सॉफ़्टवेयर इंस्टॉल होना चाहिए।” Unity का अपना निष्कर्ष है: “जहाँ भी संभव हो, .fbx फ़ाइल फ़ॉर्मैट इस्तेमाल करना और प्रोडक्शन में प्रोप्राइटरी मॉडल फ़ाइल फ़ॉर्मैट का उपयोग न करना सर्वोत्तम अभ्यास है।”

.blend फ़ाइल को Assets से बाहर किसी सोर्स फ़ोल्डर में रखें (या ऐसे फ़ोल्डर में जिसका नाम ~ पर समाप्त होता हो, जिसे Unity अनदेखा करता है) और FBX को Assets में एक्सपोर्ट करें।

2026 में Unity के लिए FBX या glTF ​

FBX। Unity का इम्पोर्टर .fbx, .dae, .dxf और .obj को मूल रूप से पढ़ता है, और उसके 3D फ़ॉर्मैट पेज पर glTF का कोई उल्लेख नहीं है। glTF समर्थन Unity glTFast से मिलता है। यह एक पैकेज है जिसे आप Window > Package Manager > Add package by name के माध्यम से com.unity.cloud.gltfast नाम के साथ जोड़ते हैं। यह दिसंबर 2023 से आधिकारिक Unity पैकेज है, मार्च 2026 तक इसका संस्करण 6.17.0 है, और इसका इंस्टॉलेशन पेज बताता है कि Editor नवीनतम संस्करण और उसकी डिपेंडेंसी इंस्टॉल करता है। इसके जुड़ने के बाद .glb को Assets में डालना ScriptedImporter के माध्यम से काम करता है, और यह Built-in, URP तथा HDRP का समर्थन करता है।

तीन बातें इसे कैरेक्टरों के लिए डिफ़ॉल्ट बनने से रोकती हैं। इसका फ़ीचर्स पेज ऐनिमेशन को केवल “लेगेसी Animation System के माध्यम से” पूर्णतः समर्थित बताता है, और Mecanim के लिए कहता है: “ऐनिमेशन क्लिप को Mecanim-संगत रूप में इम्पोर्ट किया जा सकता है, लेकिन उन्हें असाइन नहीं किया जाएगा और अतिरिक्त काम के बिना चलाया नहीं जा सकेगा।” Draco, KTX2 और Meshopt में से प्रत्येक को एक और पैकेज चाहिए (com.unity.cloud.draco, com.unity.cloud.ktx, com.unity.meshopt.decompress)। और Unity का टेक्सचर इम्पोर्टर BMP, EXR, GIF, HDR, IFF, JPG, PICT, PNG, PSD, TGA और TIFF पढ़ता है, लेकिन WebP नहीं। इसीलिए glTFast 6.17 ने WebP इमेज के लिए एक स्पष्ट त्रुटि जोड़ी। वेब के लिए अनुकूलित GLB (WebP टेक्सचर, Draco) Unity के लिए सही फ़ाइल नहीं है।

स्थिर प्रॉप्स और सर्वर से रनटाइम पर लोड होने वाली किसी भी चीज़ के लिए glTF उपयोगी है, जहाँ glTFast बेहतरीन काम करता है। Animator Controller में जाने वाले रिग किए हुए, ऐनिमेटेड कैरेक्टर के लिए FBX एक्सपोर्ट करें। यदि आपके पास पहले से GLB है, तो GLB व्यूअर आपको दिखाता है कि उसके भीतर क्या है, और Blender उसे दोबारा एक्सपोर्ट करने के लिए आसानी से इम्पोर्ट कर लेता है।

स्केल: मॉडल 100 गुना बड़ा या हर जगह 0.01 के साथ क्यों आता है ​

FBX सेंटीमीटर में और Blender मीटर में मापता है। एक्सपोर्टर का यूनिट कोड केवल एक पंक्ति का है: Blender-से-FBX गुणक 100.0 * scene.unit_settings.scale_length है, और टिप्पणी बताती है कि FBX “किसी फ़ाइल की ‘रेफ़रेंस’ यूनिट को उसकी UnitScaleFactor प्रॉपर्टी में संग्रहीत करता है (1.0 का अर्थ सेंटीमीटर है)।” इसलिए हर मीटर-आधारित एक्सपोर्ट में कहीं न कहीं 100 का गुणक होता है, और Apply Scalings ड्रॉपडाउन तय करता है कि वह कहाँ रखा जाएगा।

डिफ़ॉल्ट All Local का वर्णन इस तरह किया गया है: “हर ऑब्जेक्ट ट्रांसफ़ॉर्मेशन पर कस्टम स्केलिंग और यूनिट स्केलिंग लागू करें; FBX स्केल 1.0 पर रहता है।” फ़ाइल के हर ऑब्जेक्ट के ट्रांसफ़ॉर्म पर 100 का स्केल लग जाता है। इसके बाद Unity का Model टैब Convert Units लागू करता है, जो “मॉडल फ़ाइल में परिभाषित मॉडल स्केलिंग को Unity के स्केल में बदलता है।” इससे प्रीफ़ैब सही आकार का दिखता है, लेकिन मेश पर 100 का स्केल और उसे रद्द करने के लिए 0.01 का फ़ाइल स्केल होता है। यही मशहूर 0.01 है। यह तब तक काम करता है, जब तक आप किसी चीज़ को हड्डी का चाइल्ड नहीं बनाते, कोड से ट्रांसफ़ॉर्म नियंत्रित नहीं करते या रीटार्गेट नहीं करते—तब छिपा हुआ 100 सामने आ जाता है।

FBX Units Scale का अर्थ है: “हर ऑब्जेक्ट ट्रांसफ़ॉर्मेशन पर कस्टम स्केलिंग और FBX स्केल पर यूनिट स्केलिंग लागू करें।” इससे 100 फ़ाइल के यूनिट हेडर में चला जाता है और हर ऑब्जेक्ट का स्केल 1 रहता है। FBX All यूनिट गुणक और आपके कस्टम Scale मान, दोनों को हेडर में रखता है। जब तक Scale 1.00 रहता है, इसका परिणाम समान होता है। Unity के लिए दोनों सही हैं। Unity की तरफ़ डिफ़ॉल्ट सेटिंग्स ही चाहिए: Unity का Model टैब बताता है कि Scale Factor इसलिए मौजूद है क्योंकि “Unity का फ़िज़िक्स सिस्टम अपेक्षा करता है कि गेम वर्ल्ड में 1 मीटर, इम्पोर्ट की गई फ़ाइल में 1 यूनिट हो।” इसलिए इसे 1 पर और Convert Units को चयनित रहने दें।

एक मीटर का घन, तीन परिणामFBX सेंटीमीटर में गणना करता है, इसलिए हर निर्यात में 100 का गुणक होता है। Apply Scalings तय करता है कि वह कहाँ जाएगा।BlenderUnit Scale 1.0, मीटर1 मीटर का घनस्केल 1, 1, 1File > Export > FBXAll Local (डिफ़ॉल्ट)100 हर ऑब्जेक्ट ट्रांसफ़ॉर्म पर जाता है। Unity इसे Convert Units से निरस्त करता है।सही दिखता है। Transform में स्केल 100, फ़ाइल स्केल 0.01 दिखता है।समस्या तब आती है जब प्रॉप्स को बोन्स से पैरेंट करते हैं या कोड से ट्रांसफ़ॉर्म चलाते हैं।FBX Units Scale, या FBX All100 फ़ाइल के UnitScaleFactor हेडर में जाता है। ऑब्जेक्ट्स का स्केल 1 रहता है।सही दिखता है। Transform में स्केल 1, 1, 1 दिखता है।Unity में Convert Units बंद, या Scale Factor बदला हुआ100 को कुछ भी निरस्त नहीं करता। घन की हर भुजा 100 यूनिट की होती है।100 मीटरUnity में सुधार: Scale Factor 1 रखें, Convert Units चेक करें। फिर दोबारा इम्पोर्ट करें।
एक मीटर वाले सीन के लिए एक्सपोर्टर हमेशा 100 का गुणक लिखता है। All Local इसे हर ऑब्जेक्ट पर 100 के स्केल के रूप में संग्रहीत करता है और Unity के Convert Units को इसे पूर्ववत करने देता है, इसलिए इम्पोर्ट किए गए Blender ऑब्जेक्ट्स में 100 और 0.01 दिखते हैं। FBX Units Scale और FBX All इसे इसके बजाय फ़ाइल हेडर में संग्रहीत करते हैं, जिससे ट्रांसफ़ॉर्म साफ़ आते हैं।

स्केल से जुड़ी दो अन्य गलतियाँ आम हैं। यदि आपने सेंटीमीटर में काम करने के लिए Scene Properties में Unit Scale बदला है, तो एक्सपोर्टर उस Unit Scale को 100 से गुणा करता है। Blender मैनुअल के अनुसार यह सेटिंग "केवल यूज़र इंटरफ़ेस में दिखाए जाने वाले मानों को प्रभावित करती है, आंतरिक व्यवहार को नहीं", इसलिए Apply Unit चालू होने पर 0.01 Unit Scale किसी 180 सेमी के कैरेक्टर को सिकोड़कर 1.8 सेमी कर सकता है। और यदि किसी ऑब्जेक्ट का स्केल 1.0 नहीं है, तो वह FBX में बेक हो जाता है। सब कुछ चुनें और Object > Apply > All Transforms (Ctrl-A) चलाएँ। Blender मैनुअल भी सहमत है: "रिगिंग और एनिमेशन से पहले ट्रांसफ़ॉर्म लागू करने की सलाह दी जाती है।" पहले से एनिमेशन वाले आर्मेचर पर स्केल लागू न करें, क्योंकि इससे कीफ़्रेम भी रीस्केल हो जाते हैं।

अक्ष: X पर -90 कहाँ से आता है ​

Blender में Z ऊपर होता है। FBX मैनुअल इसे साफ़ तौर पर कहता है: "Blender Y Forward, Z Up का उपयोग करता है (क्योंकि फ्रंट व्यू +Y दिशा में देखता है)। उदाहरण के लिए, ऐप्लिकेशन आम तौर पर Y को अप अक्ष के रूप में उपयोग करते हैं; उस स्थिति में -Z Forward, Y Up की आवश्यकता होती है।" Unity में Y ऊपर और Z आगे होता है। Blender का फ्रंट व्यू +Y की ओर देखता है, इसलिए फ्रंट कैमरे की ओर मुख करके मॉडल किया गया कैरेक्टर -Y की ओर देखता है। एक्सपोर्टर के डिफ़ॉल्ट -Z Forward और Y Up ही इसे Unity की आगे की दिशा से मैप करते हैं। इन्हें न बदलें।

सही अक्ष होने पर भी Blender FBX का रूट ऑब्जेक्ट Unity के Inspector में X पर -90 (अक्सर -89.98) का रोटेशन दिखाता है, जबकि चिल्ड्रन पर इसकी भरपाई करने वाला रोटेशन होता है। यह अक्ष रूपांतरण है, जिसे वर्टिसेज़ में बेक करने के बजाय ट्रांसफ़ॉर्म के रूप में संग्रहीत किया जाता है। इसे हटाने के तीन तरीके हैं, वरीयता के क्रम में।

Unity में Bake Axis Conversion। Model टैब का यह विकल्प "अलग अक्ष प्रणाली का उपयोग करने वाले मॉडल को इम्पोर्ट करते समय अक्ष रूपांतरण के परिणामों को सीधे आपके ऐप्लिकेशन के एसेट डेटा (उदाहरण के लिए, वर्टेक्स या एनिमेशन डेटा) में बेक करता है।" इसे चेक करें और रूट 0, 0, 0 दिखाएगा; Blender में कुछ नहीं बदलेगा।

Blender में विपरीत रोटेशन दें। सभी ट्रांसफ़ॉर्म लागू होने पर ऑब्जेक्ट को X पर -90 घुमाएँ, रोटेशन लागू करें, फिर उसे X पर +90 घुमाएँ और लागू किए बिना एक्सपोर्ट करें। एक्सपोर्टर का Use Space Transform ("ऑब्जेक्ट रोटेशन पर ग्लोबल स्पेस ट्रांसफ़ॉर्म लागू करें") उस +90 को Unity की ओर शून्य रोटेशन में बदल देता है। कम्युनिटी ऐड-ऑन इसे स्वचालित करते हैं: blender-to-unity-fbx-exporter प्रोजेक्ट हर एक्सपोर्ट किए गए ऑब्जेक्ट को "दृश्य पोज़ में वास्तव में कोई बदलाव किए बिना उसके ट्रांसफ़ॉर्म में X अक्ष के चारों ओर +90 डिग्री का रोटेशन" देता है, जिसे एक्सपोर्ट के बाद वापस कर दिया जाता है।

एक्सपोर्टर में Apply Transform। रिग की गई किसी भी चीज़ के लिए ऐसा न करें। इसका अपना विवरण "(चेतावनी! प्रयोगात्मक विकल्प, अपने जोखिम पर उपयोग करें, आर्मेचर/एनिमेशन के साथ खराब होने के लिए जाना जाता है)" पर समाप्त होता है, और एक्सपोर्टर इसके पास एक त्रुटि आइकन दिखाता है। यह स्थिर प्रॉप पर काम करता है, फिर भी इसे छोड़ना ठीक है।

Blender के अक्ष बनाम Unity के अक्षएक ही कैरेक्टर, दो परंपराएँ। एक्सपोर्टर की -Z Forward, Y Up सेटिंग इनके बीच का सेतु है।Blenderदाएँ हाथ वाली प्रणाली, Z ऊपर, फ्रंट व्यू +Y की ओर देखता हैUnityबाएँ हाथ वाली प्रणाली, Y ऊपर, Z आगेZ ऊपरX-Y, मॉडल का अगला भाग+YY ऊपरXZ आगेएक्सपोर्टर-Z ForwardY Up= X पर 90Bake Axis Conversion चेक न होने पर Unity उस 90 को रूट ट्रांसफ़ॉर्म पर -90 के रूप में संग्रहीत करता है।Blender का Z, Unity का Y बनता है। Blender का -Y, Unity का +Z बनता है।
Blender का अप अक्ष Z है और सामने की ओर देखता मॉडल -Y की दिशा में देखता है। Unity का अप अक्ष Y है और आगे की दिशा +Z है। एक्सपोर्टर का डिफ़ॉल्ट Forward -Z, Up Y ठीक वही X के चारों ओर 90 डिग्री का घुमाव है जो एक को दूसरे से मैप करता है। Unity या तो उस घुमाव को रूट पर -90 रोटेशन के रूप में रखता है या Bake Axis Conversion के साथ उसे वर्टिसेज़ में लिख देता है।

बोन्स: लीफ़ बोन्स, ओरिएंटेशन और Humanoid Avatar ​

लीफ़ बोन्स। Add Leaf Bones डिफ़ॉल्ट रूप से चालू होता है और इसका वर्णन है: "अंतिम बोन की लंबाई निर्दिष्ट करने के लिए हर चेन के अंत में एक अंतिम बोन जोड़ें (इसका उपयोग तब करें जब आप एक्सपोर्ट किए गए डेटा से आर्मेचर संपादित करना चाहते हों)।" एक्सपोर्टर हर बोन का नाम उसके पैरेंट के नाम में _end जोड़कर रखता है, इसलिए Unity की हायरार्की Head_end, LeftHand_end और LeftToeBase_end से भर जाती है। Generic रिग्स के लिए ये हानिरहित हैं, लेकिन Humanoid ऑटोमैपिंग और रीटार्गेटिंग टूल्स को भ्रमित करते हैं। इसे अनचेक करें। यदि आप किसी और का FBX दोबारा इम्पोर्ट कर रहे हैं, तो इम्पोर्टर का Ignore Leaf Bones विकल्प इन्हें हटा देता है।

कंट्रोल रिग्स। Rigify या Auto-Rig Pro रिग में कंट्रोल, IK टार्गेट और मैकेनिज़्म के लिए सैकड़ों नॉन-डिफ़ॉर्मिंग बोन्स होते हैं। Only Deform Bones केवल "डिफ़ॉर्म करने वाले बोन्स (और वे नॉन-डिफ़ॉर्मिंग बोन्स जिनके डिफ़ॉर्मिंग चिल्ड्रन हैं)" लिखता है, और Unity को यही स्केलेटन चाहिए। पहले एनिमेशन को डिफ़ॉर्म बोन्स पर बेक करें, क्योंकि कंट्रोल-रिग कंस्ट्रेंट्स एक्सपोर्ट नहीं होते—केवल कीफ़्रेम के रूप में उनके परिणाम एक्सपोर्ट होते हैं।

बोन ओरिएंटेशन। Blender के बोन्स अपने लोकल Y की दिशा में होते हैं। Unity बाइंड पोज़ और स्किन वेट्स को पढ़कर वही चलाता है जो उसे दिया गया है, इसलिए Primary और Secondary Bone Axis सेटिंग्स Y और X पर रह सकती हैं। ये तब मायने रखती हैं जब वही FBX ऐसे टूल में जाता है जो किसी खास परंपरा को मानता है, जैसे Unreal या कोई रीटार्गेटिंग ऐड-ऑन।

Humanoid Avatar। Unity का Rig टैब आपको Generic ("यदि आपका रिग मानवाकार नहीं है—जैसे चौपाया या एनिमेट की जाने वाली कोई अन्य इकाई") या Humanoid ("यदि आपका रिग मानवाकार है—उसके दो पैर, दो बाँहें और एक सिर है") देता है। Humanoid कैरेक्टर्स के बीच रीटार्गेटिंग सक्षम करता है और इसके कुछ नियम हैं, जो Avatar कॉन्फ़िगरेशन पेज पर दिए गए हैं। स्केलेटन में "कम-से-कम 15 बोन्स होने चाहिए, जो वास्तविक मानव स्केलेटन से मोटे तौर पर मेल खाने वाले ढंग से व्यवस्थित हों।" "यदि Unity Avatar नहीं बना पाता, तो Configure बटन के पास एक क्रॉस दिखाई देता है और कोई Avatar सब-एसेट नहीं बनता।" Configure के भीतर Unity द्वारा स्वीकार किया गया बोन "Avatar Mapping टैब में हरे रंग में दिखाई देता है" और अस्वीकार किया गया बोन "लाल रंग में दिखाई देता है।" और पोज़ के बारे में: "यदि बोन असाइनमेंट सही है, लेकिन कैरेक्टर सही पोज़ में नहीं है, तो आपको 'Character not in T-Pose' संदेश दिखाई देगा। आप Pose मेन्यू से Enforce T-Pose चुनकर इसे ठीक करने की कोशिश कर सकते हैं।" इसलिए रिग को T-पोज़ में रखें और रेस्ट पोज़ भी T-पोज़ में ही रखें, तथा हड्डियों के नाम शरीर के अंगों के अनुसार रखें (ऑटोमैटिक मैपिंग के लिए Unity का मार्गदर्शन है कि हड्डियों के नाम "इस तरह रखें कि वे जिन शरीर के अंगों का प्रतिनिधित्व करती हैं, वह स्पष्ट हो")। Mixamo नाम (mixamorig:Hips, mixamorig:LeftArm) भरोसेमंद ढंग से अपने-आप मैप हो जाते हैं, और यही एक कारण है कि इतने सारे रिगर इन्हीं नामों का उपयोग करते हैं। यदि कुछ हड्डियाँ मैप नहीं होतीं, तो उन्हें Hierarchy से स्लॉट पर ड्रैग करें, फिर Pose > Enforce T-Pose, उसके बाद Apply करें, और परिणाम को उसी रिग के अगले एक्सपोर्ट के लिए Human Template (.ht) के रूप में सेव करें।

यदि आपके पास अभी रिग नहीं है, तो ऑटोमैटिक रिगिंग गाइड बताती है कि ऑटो रिगर को मेश से क्या चाहिए, और Cinevva Rig ऐड-ऑन आपकी अपनी मशीन पर, ऑफ़लाइन, Blender के भीतर Mixamo नामों वाला ह्यूमनॉइड आर्मेचर बनाता है। इसकी एकमुश्त लॉन्च कीमत $29 है और यह Windows, macOS तथा Linux पर Blender 4.2 और उसके बाद के संस्करणों के लिए उपलब्ध है।

रूट मोशन ​

रूट मोशन से आशय दुनिया में कैरेक्टर के रूट की गति से है, जबकि इसके विपरीत अंगों का अपनी जगह पर हिलना होता है। Unity का रूट मोशन पेज ऐसे Root Transform के आधार पर काम करता है जो "Body Transform का Y प्लेन पर प्रोजेक्शन है और रनटाइम पर गणना किया जाता है", और प्रत्येक क्लिप के लिए आप चुनते हैं कि रोटेशन, Y और XZ को पोज़ में बेक करना है या उन्हें GameObject को चलाने वाले मोशन के रूप में रखना है। आइडल के लिए XZ पर Bake Into Pose सामान्य सेटिंग है, ताकि "डेल्टा Position (XZ) को 0 रहने के लिए बाध्य किया जा सके" और कैरेक्टर अनचाहे ढंग से खिसके नहीं। Generic रिग के लिए पेज कहता है कि "Root Transform की गणना/प्रोजेक्शन करने के लिए Body Transform का उपयोग करने के बजाय, Root Node में सेट किए गए ट्रांसफ़ॉर्म का उपयोग किया जाता है", और Rig टैब में Root Node डिफ़ॉल्ट रूप से None होता है। इसलिए वहाँ अपनी hips या root हड्डी चुनें, अन्यथा रूट मोशन बिना किसी चेतावनी के कुछ नहीं करेगा।

Blender की ओर नियम यह है: गति को आर्मेचर ऑब्जेक्ट पर नहीं, बल्कि किसी हड्डी पर एनिमेट करें। एक्सपोर्टर आर्मेचर ऑब्जेक्ट को Null नोड के रूप में लिखता है (Armature FBXNode Type, "Blender के Empty के समान"), और Unity की रूट मोशन सेटिंग Avatar के नीचे की हड्डियों को देखती हैं, उस empty को नहीं। फर्श के स्तर पर एक समर्पित root हड्डी, जो Hips की पैरेंट हो और जिस पर गति की कीफ़्रेमिंग की गई हो, वही लेआउट है जिसके लिए Unity का Root Node विकल्प बनाया गया है। जिन क्लिप में एनिमेशन अपनी जगह पर बनाया गया हो और गति को कोड से नियंत्रित किया जाता हो, उन्हें root हड्डी की बिल्कुल आवश्यकता नहीं होती, और अधिकांश एनिमेशन लाइब्रेरियाँ इसी रूप में क्लिप देती हैं।

एनिमेशन: एक्शन, NLA स्ट्रिप और बेकिंग ​

Unity FBX AnimStacks को पढ़ता है और प्रत्येक को Animation टैब में एक क्लिप के रूप में दिखाता है, जहाँ आप उन्हें विभाजित कर सकते हैं, नाम बदल सकते हैं, लूप कर सकते हैं और ट्रिम कर सकते हैं। Blender का Bake Animation पैनल तय करता है कि आपको कितने AnimStacks मिलेंगे।

प्रत्येक क्लिप के लिए एक Action। All Actions चालू होने पर एक्सपोर्टर "प्रत्येक action को ग्लोबल सीन एनिमेशन के बजाय एक अलग FBX AnimStack के रूप में एक्सपोर्ट करेगा (ध्यान दें कि एनिमेटेड ऑब्जेक्ट को उनके साथ संगत सभी actions मिलेंगे, जबकि अन्य को कोई एनिमेशन नहीं मिलेगा)"। अपने Actions को Idle, Walk, Run, Jump नाम दें, और Unity उन्हें इन्हीं नामों से सूचीबद्ध करेगा। इस विवरण में एक पेच है: जिस भी Action के चैनल आर्मेचर से मेल खाते हैं, उसे संगत माना जाता है, इसलिए किसी दूसरे रिग का अनचाहा Action भी इससे जुड़ सकता है। जिन Actions को आप भेजना नहीं चाहते, उन्हें हटा दें।

प्रत्येक क्लिप के लिए एक NLA स्ट्रिप। NLA Strips चालू होने पर एक्सपोर्टर "यदि कोई non-muted NLA strip मौजूद है, तो ग्लोबल सीन एनिमेशन के बजाय प्रत्येक को एक अलग FBX AnimStack के रूप में एक्सपोर्ट करेगा"। प्रत्येक Action को उसके अपने ट्रैक पर पुश करें, जिन्हें नहीं भेजना है उन्हें म्यूट करें, और आपको फ़्रेम रेंज पर सटीक नियंत्रण मिलेगा। साथ ही, दो Actions को ब्लेंड करने वाली क्लिप एक्सपोर्ट करने का तरीका भी मिल जाएगा।

कंस्ट्रेंट शामिल होने पर पहले बेक करें। Blender FBX मैनुअल उन चीज़ों में कंस्ट्रेंट को सूचीबद्ध करता है जो एक्सपोर्ट नहीं होतीं: "कंस्ट्रेंट के उपयोग का परिणाम कीफ़्रेम एनिमेशन के रूप में एक्सपोर्ट होता है, लेकिन कंस्ट्रेंट स्वयं FBX में सेव नहीं होते।" IK, Copy Rotation और Child Of को एक्सपोर्ट Sampling Rate पर सैंपल किया जाता है, इसीलिए Key All Bones ("सभी हड्डियों के लिए एनिमेशन की कम-से-कम एक key एक्सपोर्ट करना अनिवार्य करें") और Force Start/End Keying चालू रहने चाहिए। Unity का अपना Bake Animations विकल्प "केवल Autodesk Maya, Autodesk 3ds Max और Cinema 4D फ़ाइलों के लिए उपलब्ध है", इसलिए बेकिंग Blender में करनी होगी। किसी कॉपी पर Visual Keying और Clear Constraints के साथ Object > Animation > Bake Action चलाने से आपको केवल FK वाला Action मिलेगा, जिसे कोई भी सिस्टम गलत नहीं पढ़ेगा।

Simplify। एक्सपोर्टर का Simplify ("बेक किए गए मानों को कितना सरल करना है (अक्षम करने के लिए 0.0; मान जितना अधिक होगा, उतना अधिक सरलीकरण होगा)") डिफ़ॉल्ट रूप से 1.0 होता है और गेम क्लिप के लिए सुरक्षित है। यदि कोई क्लिप Blender में नहीं, लेकिन Unity में डगमगाती है, तो इसे 0 पर सेट करें और कीफ़्रेम घटाने का काम Unity के Anim. Compression पर छोड़ दें।

Unity की दो आदतें इस प्रक्रिया को पूरा करती हैं। [email protected] नाम वाली फ़ाइलें अपने-आप एकत्र हो जाती हैं: एनिमेशन विभाजित करने वाले पेज के अनुसार, "Unity अपने-आप चारों फ़ाइलें इम्पोर्ट करता है और सभी एनिमेशन को उस फ़ाइल में एकत्र करता है जिसके नाम में @ चिह्न नहीं है", इसलिए hero.fbx के साथ [email protected] देने पर आपको Walk क्लिप वाला एक कैरेक्टर मिलता है और आप मेश को छुए बिना एक क्लिप को दोबारा एक्सपोर्ट कर सकते हैं। साथ ही Animation टैब में चक्रीय एनिमेशन के लिए Loop Time सेट करें, क्योंकि FBX में लूपिंग की कोई अवधारणा नहीं होती।

CGDive Blender में Generic कैरेक्टर रिग और Unity के लिए FBX एक्सपोर्ट सेटिंग समझाता है, जिसमें ऊपर बताए गए deform-bone और leaf-bone विकल्प भी शामिल हैं।

टेक्सचर और गुलाबी मटेरियल ​

जब तक आप Blender के FBX एक्सपोर्टर को टेक्सचर साथ ले जाने के लिए नहीं कहते, वह उन्हें पाथ के माध्यम से संदर्भित करता है। Path Mode को Copy पर सेट करें, जिसके बाद Embed Textures टॉगल उपलब्ध होगा। इसका विवरण है: "टेक्सचर को FBX बाइनरी फ़ाइल में एम्बेड करें (केवल 'Copy' पाथ मोड के लिए!)"। अब .fbx में इमेज शामिल होंगी। Unity में Materials टैब मटेरियल को डिफ़ॉल्ट रूप से सब-एसेट के रूप में रखता है ("Use Embedded Materials"), और दो बटन उन्हें बाहर निकालते हैं: Extract Textures एम्बेड की गई इमेज को किसी फ़ोल्डर में लिखता है, जबकि Extract Materials सब-एसेट को संपादन योग्य .mat फ़ाइलों में बदलता है। पहले Textures और फिर Materials निकालें, ताकि निकाले गए मटेरियल निकाले गए टेक्सचर की ओर संकेत करें। एक बार निकालने के बाद, "नए इम्पोर्ट या मूल एसेट में किए गए बदलाव निकाले गए मटेरियल को प्रभावित नहीं करते", और यही आप चाहते हैं: Unity में किए गए मटेरियल बदलाव खोए बिना आप मेश को सौ बार दोबारा एक्सपोर्ट कर सकते हैं।

बेस कलर और कुछ स्लॉट पहुँच जाते हैं। FBX में ऐसा कोई PBR मानक नहीं है जिससे Blender का Principled BSDF एक-से-एक मैप हो सके, इसलिए Unity में roughness, metallic और normal maps हाथ से असाइन करने की अपेक्षा रखें। Material Creation Mode का "Import via MaterialDescription" विकल्प FBX में एम्बेड किए गए मटेरियल विवरण को पढ़ता है और Standard (Legacy) मोड की तुलना में अधिक सटीक परिणाम देता है।

अब गुलाबी रंग की बात। Unity के एरर शेडर पेज के अनुसार: "जब किसी ऑब्जेक्ट के मटेरियल या शेडर में समस्या होती है, तो Unity उस ऑब्जेक्ट को डिफ़ॉल्ट एरर शेडर के साथ रेंडर करता है", जैसे ऐसा शेडर जो कंपाइल न हो या समर्थित न हो, और "डिफ़ॉल्ट एरर शेडर मैजेंटा (चमकीला गुलाबी) होता है।" इम्पोर्ट के विशिष्ट मामले में: "यदि आपका प्रोजेक्ट Universal Rendering Pipeline (URP) का उपयोग करता है, तो कोई ऑब्जेक्ट Built-In Render Pipeline के शेडर का उपयोग करने पर Unity उसे डिफ़ॉल्ट एरर शेडर से रेंडर कर सकता है।" इम्पोर्ट किए गए FBX मटेरियल डिफ़ॉल्ट रूप से Built-in शेडर का उपयोग करते हैं, इसलिए URP या HDRP प्रोजेक्ट में वे गुलाबी दिखाई देते हैं। गायब टेक्सचर किसी मटेरियल को गुलाबी नहीं बनाते; वे उसे स्लेटी या सफ़ेद बनाते हैं।

समाधान एक ही मेनू में है। गुलाबी मटेरियल चुनें और Edit > Rendering > Materials > Convert Selected Materials to URP चलाएँ, या कन्वर्टर दस्तावेज़ के अनुसार Window > Rendering > Render Pipeline Converter खोलें, Built-in Render Pipeline to URP चुनें, Material Upgrade पर टिक करें और इसे चलाएँ। केवल एक सीमा है: "यह कन्वर्टर custom shaders वाले मटेरियल का समर्थन नहीं करता", जबकि इम्पोर्ट किए गए FBX मटेरियल कभी custom shaders वाले नहीं होते। HDRP के लिए समान विकल्प Edit > Rendering > Materials के अंतर्गत मिलता है।

स्मूदिंग और नॉर्मल ​

Blender के Smoothing ड्रॉपडाउन में चार विकल्प हैं और उनमें से एक Unity की एक सुविधा को खराब कर देता है। Normals Only "edge या face smoothing data लिखने के बजाय केवल normals" एक्सपोर्ट करता है, और मैनुअल बताता है कि "यदि इम्पोर्टर custom split normals का समर्थन करता है, तो Normals Only का उपयोग सामान्यतः सबसे सटीक होता है"। Face, face smoothing लिखता है; Edge, edge smoothing लिखता है; और Smoothing Groups साथ में शेड किए जाने वाले faces के समूह लिखता है। Unity हर स्थिति में normals सही ढंग से इम्पोर्ट करता है (इसकी Normals सेटिंग डिफ़ॉल्ट रूप से Import होती है)। लेकिन Unity के Model टैब में Import BlendShapes के अंतर्गत चेतावनी दी गई है: "blend shape normals इम्पोर्ट करने के लिए FBX फ़ाइल में smoothing groups होना आवश्यक है।" Normals Only का उपयोग करके shape keys वाला face एक्सपोर्ट करने पर morph targets सपाट या खराब शेडिंग के साथ आते हैं।

Unity के लिए Face सुरक्षित डिफ़ॉल्ट है, और यदि आप फ़ाइल को 3ds Max जैसे टूल में भी भेज रहे हैं तो Smoothing Groups चुनें। यदि आपके hard edges Smooth by Angle मॉडिफ़ायर से आते हैं, तो Apply Modifiers पर टिक करें, अन्यथा वे गायब हो जाएँगे। यदि कोई मेश Blender में स्मूद लेकिन Unity में खंडित दिखता है, तो तुरंत जाँचने के लिए Unity की Normals सेटिंग को Calculate और Smoothness Source को From Angle पर बदलें, फिर एक्सपोर्ट ठीक करें।

लक्षण, कारण और समाधान ​

Unity में लक्षणकारणसमाधान
मॉडल बहुत छोटा या 100 गुना बड़ाScale Factor बदला गया है, Convert Units बंद है, या Apply Unit चालू होने के साथ Blender Unit Scale 1.0 के अलावा कुछ और हैUnity: Scale Factor 1, Convert Units चालू। Blender: Unit Scale 1.0, Scale 1.00
आकार सही है, लेकिन scale 100 और File Scale 0.01 दिखते हैंApply Scalings को All Local पर छोड़ा गया हैApply Scalings को FBX Units Scale या FBX All पर सेट करें, फिर से इम्पोर्ट करें
Root, X पर -90 (या -89.98) घूमा हुआ हैAxis conversion ट्रांसफ़ॉर्म के रूप में स्टोर हुआ हैModel टैब में Bake Axis Conversion पर टिक करें
कैरेक्टर पीछे या बगल की ओर देखता हैBlender में मॉडल को +Y या +X की ओर मुख करके बनाया गया हैBlender में -Y की ओर मुख रखें (front view), Forward -Z ही रखें
अतिरिक्त Head_end, Hand_end हड्डियाँAdd Leaf Bones चालू छोड़ा गया हैAdd Leaf Bones से टिक हटाएँ
hierarchy में सैकड़ों हड्डियाँ, IK targets और widgetsपूरा control rig एक्सपोर्ट किया गया हैOnly Deform Bones पर टिक करें, पहले deform bones पर बेक करें
Configure के आगे क्रॉस, कोई Avatar नहींआवश्यक 15 से कम हड्डियाँ मेल खाईं या हड्डियाँ पहचानी नहीं गईंशरीर के अंगों के अनुसार हड्डियों के नाम बदलें, आवश्यक 15 हड्डियों की जाँच करें, हाथ से मैप करें
"कैरेक्टर T-Pose में नहीं है"Rest pose, A-pose या आराम की मुद्रा में हैPose > Enforce T-Pose, या Blender में rest pose ठीक करें
एनिमेशन चलता है, लेकिन कैरेक्टर आगे नहीं बढ़ताGeneric रिग पर Root Node, None है या गति की key आर्मेचर ऑब्जेक्ट पर लगी हैRig टैब में Root Node सेट करें, गति की key root हड्डी पर लगाएँ
केवल एक क्लिप इम्पोर्ट हुईNLA Strips और All Actions बंद हैं, या Actions का कोई fake user नहीं हैदोनों चालू करें, प्रत्येक क्लिप के लिए एक Action या strip रखें
जहाँ IK था वहाँ अंग खिसकते या अचानक उछलते हैंConstraints को Simplify का मान बहुत अधिक रखते हुए sampled keys के रूप में एक्सपोर्ट किया गया हैBlender में Bake Action करें, Simplify 0
मटेरियल चमकीले गुलाबी हैंURP या HDRP प्रोजेक्ट में Built-in shadersConvert Selected Materials to URP (या HDRP)
मटेरियल स्लेटी हैं, टेक्सचर गायब हैंPath Mode, Copy नहीं है या Embed Textures बंद हैCopy के साथ Embed Textures, फिर Unity में Extract Textures
Blend shapes की शेडिंग सपाट या गलत हैSmoothing को Normals Only पर सेट किया गया हैSmoothing Face या Smoothing Groups
जहाँ Blender में सतह स्मूद थी वहाँ खंडित दिखती हैSmooth by Angle मॉडिफ़ायर लागू नहीं किया गया हैApply Modifiers पर टिक करें
टीम के सभी सदस्यों को इम्पोर्ट त्रुटि मिलती हैAssets में .blend है और उनकी मशीन पर Blender नहीं हैFBX एक्सपोर्ट करें, .blend को Assets से बाहर रखें
समय बचाने वाले क्रम में छह सवालरोटेशन से पहले आकार और ऐनिमेशन से पहले बोन ठीक करें, क्योंकि बाद की हर जाँच पहले वाली के सफल होने पर निर्भर करती है।नहींनहींनहींनहींनहींनहींक्या आकार सही और ट्रांसफ़ॉर्म स्केल 1 है?1.8 m का कैरेक्टर 1.8 यूनिट ऊँचा दिखता हैApply Scalings: FBX Units Scale। Unity: Convert Units चालू।Blender Unit Scale 1.0, एक्सपोर्टर Scale 1.00क्या रूट रोटेशन 0, 0, 0 है?और क्या उसका मुख +Z की ओर हैUnity के Model टैब में Bake Axis Conversion चुनें।-Z Forward, Y Up रखें। Blender में मुख -Y की ओर रखें।क्या बोन सूची में केवल डिफ़ॉर्म स्केलेटन है?कोई _end बोन, IK टार्गेट या विजेट नहींAdd Leaf Bones हटाएँ। Only Deform Bones चुनें।पहले कंट्रोल-रिग की गति डिफ़ॉर्म बोन पर बेक करेंक्या Humanoid Avatar मैप हरा है?Configure के पास क्रॉस या T-pose संदेश नहींशरीर-अंग बोन नाम, 15 आवश्यक बोन, T-pose रेस्ट।Pose > Enforce T-Pose, लाल बोन हाथ से मैप करेंक्या सभी क्लिप मौजूद हैं और चलती हैं?हर Action या स्ट्रिप पर एक क्लिप, रूट मोशन चलता हैNLA Strips + All Actions और Key All Bones चालू।Generic रिग: Root Node सेट करें। एक्सपोर्ट से पहले IK बेक करें।क्या मटेरियल टेक्सचरयुक्त हैं, गुलाबी या धूसर नहीं?गुलाबी = गलत पाइपलाइन, धूसर = टेक्सचर नहींConvert Selected Materials to URP। Copy + Embed Textures।फिर Extract Textures, उसके बाद Extract Materials
बाएँ कॉलम में ऊपर से नीचे जाएँ। “नहीं” मिलने पर दाएँ दी गई जिम्मेदार सेटिंग पर जाएँ। आकार पहले आता है क्योंकि आर्मेचर पर 100 का स्केल बाकी हर समस्या के पीछे छिप जाता है, और बोन ऐनिमेशन से पहले आते हैं क्योंकि जिस स्केलेटन को Unity ने पहचाना ही नहीं, उस पर क्लिप नहीं चल सकती।

10-चरणों वाली चेकलिस्ट ​

इसे पहले Blender में फ़ाइल की एक कॉपी पर और फिर Unity में चलाएँ।

  1. सीन साफ़ करें। कैमरे, लाइटें, रेफ़रेंस इमेज और ऐसी हर चीज़ हटाएँ जो गेम के साथ नहीं जाएगी। जहाँ उचित हो, समान मटेरियल वाले मेश जोड़ें और सुनिश्चित करें कि डिफ़ॉर्म होने वाला हर मेश Armature modifier के साथ आर्मेचर से पैरेंट किया गया हो।
  2. यूनिट जाँचें। Scene Properties, Units: Unit System Metric, Unit Scale 1.0, Length Meters। अपने कैरेक्टर के Dimensions पैनल (N) को देखें: मानव के लिए 1.6 से 2.0 m।
  3. ट्रांसफ़ॉर्म लागू करें। मेश चुनें, Object > Apply > All Transforms। बिना ऐनिमेशन वाले आर्मेचर पर भी लागू करें। ऐनिमेटेड आर्मेचर को वैसा ही छोड़ें और सुनिश्चित करें कि उसका स्केल पहले से 1.0 दिखाता हो।
  4. पोज़ और नाम ठीक करें। रेस्ट पोज़ T-pose में हो और मुख -Y (फ्रंट व्यू) की ओर हो। बोन के नाम शरीर के अंगों जैसे हों और मिरर किए गए नामों में .L और .R या Left और Right हों। अपनी बनाई कोई _end बोन न रखें।
  5. क्लिप तैयार करें। फ़ेक यूज़र के साथ हर क्लिप के लिए एक Action या हर क्लिप के लिए एक NLA स्ट्रिप रखें। IK या constraints से संचालित हर चीज़ को Object > Animation > Bake Action और Visual Keying चालू करके बेक करें।
  6. एक्सपोर्ट करें। File > Export > FBX (.fbx)। Selected Objects चालू। Object Types में Armature और Mesh। Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Apply Unit चालू, Use Space Transform चालू, Apply Transform बंद। Smoothing Face, Apply Modifiers चालू। कंट्रोल रिग के लिए Only Deform Bones चालू, Add Leaf Bones बंद। Bake Animation चालू और Key All Bones, NLA Strips, All Actions तथा Force Start/End Keying चालू, Sampling Rate 1.0, Simplify 1.0। Path Mode Copy, Embed Textures चालू। इन्हें ऑपरेटर प्रीसेट के रूप में सहेजें (पैनल के शीर्ष पर +)।
  7. इंपोर्ट करें। .fbx को Assets में डालें। Model टैब: Scale Factor 1, Convert Units चालू, Bake Axis Conversion चालू और यदि आपके पास शेप-की हैं तो Import BlendShapes चालू। Apply दबाएँ।
  8. रिग सेट करें। Rig टैब: दो पैरों वाले कैरेक्टर के लिए Humanoid, अन्यथा Generic। Avatar Definition में Create From This Model। Configure दबाएँ और जाँचें कि बोन हरी हों तथा कोई T-pose संदेश न हो। Generic के लिए, यदि क्लिप को कैरेक्टर चलाना है तो Root Node सेट करें। Apply दबाएँ।
  9. ऐनिमेशन सेट करें। Animation टैब: पुष्टि करें कि हर Action के लिए एक क्लिप है। चक्रीय ऐनिमेशन पर Loop Time चालू करें। आइडल ऐनिमेशन पर Root Transform Position (XZ) Bake Into Pose चालू करें। Apply दबाएँ।
  10. मटेरियल सेट करें। Materials टैब: टेक्सचर को Textures फ़ोल्डर में Extract Textures करें, फिर मटेरियल को Materials फ़ोल्डर में Extract Materials करें। URP या HDRP प्रोजेक्ट में निकाले गए मटेरियल चुनें और Edit > Rendering > Materials > Convert Selected Materials to URP चलाएँ। प्रीफ़ैब को सीन में खींचें और Blender की तुलना में स्केल, दिशा और शेडिंग जाँचें।

एक-क्लिक तरीका ​

अगर आप चरण 6 याद नहीं रखना चाहते, तो Cinevva Rig ऐड-ऑन में Unity प्रीसेट वाला एक एक्सपोर्ट कार्ड है, जो ठीक यही तरीका लागू करता है: FBX, Forward -Z, Up Y, FBX All के साथ लागू यूनिट स्केल, कोई लीफ़ बोन नहीं, Face स्मूदिंग, एम्बेड किए गए और अधिकतम 2048 px वाले टेक्सचर। Export दबाने से पहले इसका आकार विश्लेषण अनुमानित फ़ाइल को ज्योमेट्री, टेक्सचर, ऐनिमेशन और शेप-की में बाँट देता है, ताकि आप देख सकें कि 60 MB का कारण तीन 4K टेक्सचर हैं, मेश नहीं। साधारण Blender GLB एक्सपोर्ट की तुलना में, इन प्रीसेट ने चार वास्तविक मॉडलों पर 68%, 89%, 92% और 98% छोटी फ़ाइलें बनाईं—लगभग पूरी बचत टेक्सचर सीमा और री-एन्कोडिंग से हुई। एक्सपोर्ट बिना कुंजी, खाते या नेटवर्क के स्थानीय रूप से चलता है। ऐड-ऑन का सशुल्क हिस्सा रिगिंग है: $29 के लॉन्च-मूल्य पर एक बार खरीदारी, लगभग 2.4 GB का इंजन एक बार डाउनलोड करने के बाद असीमित स्थानीय रिगिंग, Blender 4.2 और नए संस्करणों पर, साथ ही Blender के भीतर रिग पर रीटार्गेट की गई 260 CC0 ऐनिमेशन क्लिप, जो फिर ऊपर बताए गए Actions के रूप में एक्सपोर्ट होती हैं।

FBX राउंड ट्रिप के लिए स्थापित सशुल्क समाधान Mesh Online का Better FBX Importer & Exporter है, जिसकी Superhive पर 12,800+ बिक्री हैं। यह Autodesk के आधिकारिक FBX SDK पर शुरू से बनाया गया FBX कार्यान्वयन है, जो इसके प्रोडक्ट पेज के अनुसार “ASCII से बाइनरी तक और FBX 5.3 से FBX 2020 तक सभी FBX संस्करणों के अनुकूल” है और जिसके एक्सपोर्ट “Unity Engine 2021, Unreal Engine 4/5 और Godot Engine v4.1.1 में सत्यापित” हैं। इसकी दो प्रमुख विशेषताएँ इंपोर्ट पर स्वचालित बोन ओरिएंटेशन—जिन बोन अक्षों को Blender का इंपोर्टर मुड़ा हुआ छोड़ देता है—और “Optimize For Game Engine” एक्सपोर्ट हैं, जो “यूनिट स्केल और शून्य रोटेशन” वाले आर्मेचर लिखता है। यदि आप अन्य कलाकारों से बहुत-सी FBX फ़ाइलें इंपोर्ट करते हैं या Maya अथवा 3ds Max के जरिए राउंड ट्रिप करते हैं, तो पहले सप्ताह में ही इसकी लागत वसूल हो जाती है। यदि आप केवल अपना Blender काम Unity में एक्सपोर्ट करते हैं, तो इस पेज की सेटिंग्स मुफ़्त में वही परिणाम देती हैं।

सामान्य प्रश्न ​

Blender से Unity में कैसे एक्सपोर्ट करूँ? ​

.blend नहीं, FBX एक्सपोर्ट करें। File > Export > FBX (.fbx) में Selected Objects चालू, Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Add Leaf Bones बंद, Smoothing Face और Path Mode Copy के साथ Embed Textures चालू रखें। Unity के Model टैब में Convert Units और Bake Axis Conversion चुनें, फिर Materials टैब से टेक्सचर और मटेरियल निकालें।

Unity में मेरा Blender मॉडल 0.01 या 100 स्केल का क्यों है? ​

FBX सेंटीमीटर में गणना करता है, इसलिए Blender का एक्सपोर्टर मीटर वाले सीन को 100 से गुणा करता है। डिफ़ॉल्ट Apply Scalings में All Local होने पर यह 100 हर ऑब्जेक्ट के ट्रांसफ़ॉर्म पर आ जाता है और Unity का Convert Units इसे 0.01 फ़ाइल स्केल से रद्द करता है। इसके बजाय FBX Units Scale या FBX All चुनें, ताकि यह गुणक फ़ाइल हेडर में जाए और हर ट्रांसफ़ॉर्म 1 पर रहे। यदि मॉडल 100 गुना बड़ा है, तो Convert Units बंद है या Unity में Scale Factor बदला गया है।

Unity में मेरे Blender FBX के X पर -90 रोटेशन क्यों है? ​

Blender में Z ऊपर और Unity में Y ऊपर होता है। एक्सपोर्टर इनके बीच के 90 डिग्री घुमाव को रूट ऑब्जेक्ट पर रोटेशन के रूप में सहेजता है, जिसे Unity -90 (अक्सर -89.98) दिखाता है। Unity के Model टैब में Bake Axis Conversion चुनें; रोटेशन वर्टिसेज़ में बेक हो जाएगा और रूट शून्य दिखाएगा। रिग किए गए मॉडल पर एक्सपोर्टर का Apply Transform इस्तेमाल न करें, क्योंकि उसका अपना विवरण कहता है कि यह आर्मेचर और ऐनिमेशन के साथ ठीक से काम नहीं करता।

Blender से Unity में ऐनिमेशन कैसे एक्सपोर्ट करूँ? ​

हर क्लिप के लिए एक Action (या हर क्लिप के लिए एक NLA स्ट्रिप) बनाएँ, IK या constraints से संचालित गति को Bake Action से बेक करें और Bake Animation, Key All Bones, NLA Strips, All Actions तथा Force Start/End Keying चुनकर एक्सपोर्ट करें। हर Action अपने Blender नाम के अंतर्गत Unity के Animation टैब में क्लिप के रूप में आता है। Generic रिग में रूट मोशन चाहिए तो Rig टैब में Root Node सेट करें और चक्रीय ऐनिमेशन पर Loop Time चालू करें।

Unity के लिए FBX इस्तेमाल करूँ या glTF? ​

रिग या ऐनिमेशन वाली हर चीज़ के लिए FBX। Unity FBX को मूल रूप से इंपोर्ट करता है, जबकि glTF के लिए com.unity.cloud.gltfast पैकेज चाहिए, जिसका ऐनिमेशन इंपोर्ट केवल पुराने Animation सिस्टम के लिए पूर्ण है और Mecanim के लिए “अतिरिक्त काम” चाहिए; साथ ही Unity WebP टेक्सचर नहीं पढ़ सकता। स्थिर प्रॉप्स और सर्वर से रनटाइम पर लोड किए जाने वाले मॉडलों के लिए glTF एक अच्छा विकल्प है।

Blender से इंपोर्ट करने के बाद Unity में मेरे मटेरियल गुलाबी क्यों हैं? ​

गुलाबी Unity का एरर शेडर है और इंपोर्ट के मामले में इसका लगभग हमेशा अर्थ होता है कि मटेरियल URP या HDRP प्रोजेक्ट में Built-in Render Pipeline शेडर इस्तेमाल कर रहा है। मटेरियल चुनें और Edit > Rendering > Materials > Convert Selected Materials to URP चलाएँ, या Window > Rendering > Render Pipeline Converter इस्तेमाल करें। टेक्सचर गायब होने पर मटेरियल धूसर होता है, गुलाबी नहीं: इसके लिए Path Mode Copy और Embed Textures के साथ एक्सपोर्ट करें, फिर Unity में Extract Textures दबाएँ।

Unity मेरे Blender रिग से Humanoid Avatar क्यों नहीं बना रहा? ​

Unity को कम-से-कम 15 आवश्यक हड्डियाँ चाहिए जिन्हें वह पहचान सके, साथ ही एक T-पोज़ भी। Configure के पास क्रॉस का मतलब है कि मैपिंग विफल रही, Mapping टैब में लाल हड्डियाँ वे हैं जिन्हें वह सही जगह नहीं रख सका, और "Character not in T-Pose" का अर्थ है कि रेस्ट पोज़ सही नहीं है। हड्डियों के नाम शरीर के अंगों के अनुसार रखें (Mixamo के नाम हमेशा मैप हो जाते हैं), Add Leaf Bones को अनचेक करें ताकि _end हड्डियाँ उसे भ्रमित न करें, सभी लाल हड्डियों को हाथ से खींचकर सही जगह पर रखें, और Pose > Enforce T-Pose का उपयोग करें।

संबंधित ​