गाइडकैसे करेंपढ़ने में 6 मिनट
Godot 4 में 3D कैरेक्टर rig और एनिमेट करें: AFK AI ऐड-ऑन, AnimationPlayer और AnimationTree
FileSystem डॉक में मॉडल पर क्लिक करें, फिर Rig पर, और करीब एक मिनट बाद एनिमेशन वाली rig की हुई GLB उसके बगल में होती है, walk और idle पहले से लूप पर।
Signed in as you@example.comSign out
3 of 3 rigs left this month.
Model: hero.glb
Body typeHuman
AnimationsAll animations
FacingAuto
RigRigging...Cancel
- hero_riggedNode3D
- └Skeleton3DSkeleton3D
- └HeroMeshInstance3D
- └AnimationPlayerAnimationPlayer
- └Idle_Aloop ⟳
- └Walkloop ⟳
- └Jogloop ⟳
- └Sprintloop ⟳
- └…
Godot एनिमेशन चलाने में बहुत अच्छा है, लेकिन rig बनाने का उसमें कोई तरीका नहीं है। इसलिए कैरेक्टर को आम तौर पर लंबा चक्कर लगाना पड़ता है: उसे एक्सपोर्ट करें, Blender में rig करें (या Mixamo में, सिर्फ़ ह्यूमनॉइड के लिए), एनिमेशन ढूँढें, GLB एक्सपोर्ट करें, और इंपोर्ट के बाद हर लूप वाले एनिमेशन को फिर से लूप पर सेट करें।
AFK AI ऐड-ऑन यह चक्कर Godot एडिटर के एक डॉक से ही पूरा कर देता है। FileSystem डॉक में अपने मॉडल पर क्लिक करें, फिर Rig पर। करीब एक मिनट बाद hero.glb के बगल में hero_rigged.glb सेव हो जाती है, उसकी बॉडी के लिए बने स्केलेटन, skin weights और एक AnimationPlayer में उसके एनिमेशन के साथ। idle, walk और run पहले से लूप पर सेट होते हैं।
आपको क्या चाहिए
- Godot
- 4.2 या नया, स्टैंडर्ड बिल्ड या .NET वाला।
- आपका मॉडल
- आपके प्रोजेक्ट में
.glb,.gltfया.fbx, 50 MB तक।.gltfमें सब कुछ उसी एक फ़ाइल में होना चाहिए; अगर उसके बगल में.binहै, तो इसकी जगह.glbएक्सपोर्ट करें। - afk.ai अकाउंट
- मुफ़्त, Google से। हर rig महीने के लिए आपके अकाउंट के rig में से एक लेता है, ठीक afk.ai/rig की तरह।
- इंटरनेट
- Rigging afk.ai के सर्वर पर चलती है। सिर्फ़ आपकी चुनी हुई मॉडल फ़ाइल भेजी जाती है।
ऐड-ऑन इंस्टॉल करें
- Godot प्लगइन पेज से ऐड-ऑन डाउनलोड करें।
- उसका
addons/afk_aiफ़ोल्डर अपने प्रोजेक्ट केaddonsफ़ोल्डर में कॉपी करें। अगर आपके प्रोजेक्ट मेंaddonsफ़ोल्डर नहीं है, तो बना लें। - Project > Project Settings > Plugins खोलें और AFK AI के आगे Enable पर टिक करें।
दाईं ओर Inspector के बगल में एक AFK AI डॉक दिखता है।
मॉडल rig करें
- साइन इन करें। AFK AI डॉक में Sign in पर क्लिक करें। आपके ब्राउज़र में afk.ai खुलता है; वहाँ Google से साइन इन करें। डॉक आपका ईमेल दिखाता है और यह भी कि इस महीने आपके कितने rig बचे हैं। अगर ब्राउज़र Godot तक वापस नहीं पहुँच पाता, तो वह उसकी जगह एक साइन-इन कोड दिखाता है: उसे I have a sign-in code के नीचे पेस्ट करें और Use पर क्लिक करें।
- मॉडल चुनें। FileSystem डॉक में मॉडल की फ़ाइल पर क्लिक करें।
- विकल्प चुनें। Body type: इंसानों और दो पैरों वाली किसी भी चीज़ के लिए Human, या वह जानवर या क्रिएचर जो वह है। Animations: All animations, या सिर्फ़ स्केलेटन के लिए Rig only। Facing: इसे Auto पर ही रहने दें।
- Rig पर क्लिक करें। डॉक दिखाता है कि क्या हो रहा है: अपलोड, इंतज़ार, rigging, डाउनलोड। इस बीच काम करते रहें।
पूरा होने पर hero.glb के बगल में hero_rigged.glb सेव होती है, इंपोर्ट की हुई और चुनी हुई। ओरिजिनल को छुआ नहीं जाता। उसी मॉडल को फिर से rig करें तो hero_rigged_2.glb मिलती है, इसलिए कुछ भी ओवरराइट नहीं होता।
rig की हुई GLB में क्या है
इसे इस्तेमाल करने के लिए hero_rigged.glb को किसी सीन में ड्रैग करें: यह एक नोड के रूप में आता है, बाकी सब उसके नीचे।
- Skeleton3D
- बॉडी टाइप के लिए बना स्केलेटन, जिससे आपका मेश skin किया गया है। इंसान को 66 बोन्स मिलती हैं, हर उँगली समेत, जिनके नाम pelvis, spine_01, hand_r, foot_l वगैरह हैं।
- AnimationPlayer
- हर एनिमेशन, अपने नाम से। ह्यूमनॉइड के लिए 593 तक: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack, Dance_Groove और सैकड़ों और। मुफ़्त अकाउंट को मुफ़्त वाले मिलते हैं, और प्लान बाकी सब जोड़ देता है।
- लूप
- Idle, walk, run, उड़ना और तैरना पहले से लूप होते हैं। ऐड-ऑन Godot के इंपोर्ट करने से पहले ही यह फ़ाइल की इंपोर्ट सेटिंग्स में लिख देता है।
- दिशा
- कैरेक्टर का मुँह +Z की ओर होता है, जैसा glTF मॉडल में होता है।
AnimationPlayer से एनिमेशन चलाएँ
सबसे आसान प्लेयर कैरेक्टर: एक CharacterBody3D, उसके साथ एक CollisionShape3D (कैप्सूल), और उसके नीचे ड्रैग किया हुआ rig किया हुआ मॉडल, जिसका नाम बदलकर Hero रखा गया हो। यह स्क्रिप्ट CharacterBody3D से जोड़ें:
extends CharacterBody3D
const SPEED := 4.0
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
@onready var hero: Node3D = $Hero
@onready var anim: AnimationPlayer = $Hero/AnimationPlayer
func _physics_process(delta: float) -> void:
var input := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
var direction := Vector3(input.x, 0.0, input.y)
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
if not is_on_floor():
velocity.y -= gravity * delta
move_and_slide()
if direction.length() > 0.1:
# the model faces +Z: turn that toward where it's going
hero.rotation.y = lerp_angle(hero.rotation.y, atan2(direction.x, direction.z), 10.0 * delta)
anim.play("Jog", 0.2) # 0.2 s blend from whatever was playing
else:
anim.play("Idle_A", 0.2)इसे चलाएँ, और ऐरो कीज़ से कैरेक्टर इधर-उधर jog करता है, और कीज़ छोड़ने पर धीरे-धीरे idle पर लौट आता है। जो एनिमेशन पहले से चल रहा है, उसी के साथ play कॉल करने पर वह चलता रहता है, इसलिए इसे हर फ़्रेम कॉल करना ठीक है।
AnimationTree से उन्हें ब्लेंड करें
AnimationTree रफ़्तार के हिसाब से एनिमेशन के बीच ब्लेंड करता है और attack जैसी एक बार वाली हरकतें संभालता है। इसे एडिटर में एक बार सेट करें:
- कैरेक्टर में एक AnimationTree नोड जोड़ें। Inspector में Anim Player को
Hero/AnimationPlayerपर और Tree Root को नए AnimationNodeStateMachine पर सेट करें। - नीचे के AnimationTree पैनल में राइट-क्लिक करें और एक BlendSpace1D जोड़ें। उसका नाम
Locomotionरखें, उसे खोलें, और तीन पॉइंट जोड़ें: 0 पर Idle_A, 1.5 पर Walk और 4 पर Jog (उसका Max Space 4 पर सेट करें)। - फिर से राइट-क्लिक करें और Sword_Attack एनिमेशन जोड़ें। Start को Locomotion से, Locomotion को Sword_Attack से, और Sword_Attack को वापस Locomotion से जोड़ें, Switch Mode को At End और Advance Mode को Auto पर सेट करके।
- Project > Project Settings > Input Map में
attackनाम का एक्शन जोड़ें और उसे कोई की दें।
फिर उसी स्क्रिप्ट में दोनों anim.play लाइनें हटा दें और उनकी जगह ट्री चलाएँ:
@onready var tree: AnimationTree = $AnimationTree
@onready var playback: AnimationNodeStateMachinePlayback = tree.get("parameters/playback")
func _process(_delta: float) -> void:
tree.set("parameters/Locomotion/blend_position", Vector2(velocity.x, velocity.z).length())
if Input.is_action_just_pressed("attack"):
playback.travel("Sword_Attack")
जब तक AnimationTree चालू है, एनिमेशन वही चलाता है, इसलिए साथ में AnimationPlayer का play कॉल न करें।
तलवार पकड़ाएँ, लूप बदलें
कैरेक्टर के हाथ में कुछ पकड़ाने के लिए उसका Skeleton3D चुनें, उसके नीचे एक BoneAttachment3D जोड़ें, Bone Name को hand_r पर सेट करें, और तलवार को attachment के नीचे रखें। वह हर एनिमेशन में हाथ के साथ चलती है।
कौन-से एनिमेशन लूप हों, यह बदलने के लिए FileSystem डॉक में hero_rigged.glb पर डबल-क्लिक करके Advanced Import Settings खोलें। बाईं ओर AnimationPlayer के नीचे एनिमेशन चुनें, Loop Mode बदलें, और Reimport पर क्लिक करें।
जानवर, क्रिएचर और प्रॉप्स
Rig पर क्लिक करने से पहले डॉक में बॉडी टाइप चुनें: कुत्तों, बिल्लियों और भेड़ियों के लिए Fox, खुर वाले किसी भी जानवर के लिए Horse, Bird, Dragon, डायनासोर के लिए Kaiju, Spider, Insect, Snake, Fish, Kangaroo, Frog, Turtle, Ghost, या प्रॉप्स के लिए Object। हर एक को उसकी बॉडी के लिए बना स्केलेटन और उसी के लिए बने एनिमेशन मिलते हैं: सरपट दौड़ना, पंख फड़फड़ाना, दहाड़ना, तैरना, रेंगना। ये भी उसी तरह, उसी AnimationPlayer और AnimationTree से चलते हैं। एक ही बॉडी टाइप से rig हुए हर मॉडल के बोन और एनिमेशन नाम एक जैसे होते हैं, इसलिए एक भेड़िये का AnimationTree हर भेड़िये के लिए काम करता है। जानवरों वाली गाइड हर टाइप के एनिमेशन की लिस्ट देती है।
- ड्रैगन
- चार पैरों वाला
- खुर वाला
- डायनासोर
- मकड़ी
- मछली
rig किसे गिना जाता है
AFK AI तक पहुँचने वाला हर rig इस महीने के rig में से एक लेता है, ठीक afk.ai/rig पर और दूसरे AFK AI प्लगइन की तरह। Cancel इंतज़ार रोकता है, rig नहीं, जो फिर भी गिना जाता है। जो rig फ़ेल हो जाए, वह नहीं गिना जाता। जब आपके rig खत्म हो जाएँ, तो डॉक यह बताता है और See plans दिखाता है, जो afk.ai के प्लान खोलता है।
सवाल
क्या Godot में auto-rigger पहले से है?
नहीं। Godot पहले से मौजूद स्केलेटन और एनिमेशन इंपोर्ट करता है, और उसकी retargeting एक ह्यूमनॉइड स्केलेटन को दूसरे पर मैप करती है, लेकिन वह मेश rig नहीं करता। AFK AI ऐड-ऑन यही हिस्सा करता है, और Godot को एक आम GLB दे देता है।
क्या यह Godot 3 में काम करता है?
नहीं। इसे Godot 4.2 या नया चाहिए। Godot 3 के साथ मॉडल को afk.ai/rig पर rig करें और डाउनलोड हुई GLB इंपोर्ट करें।
क्या इसे C# प्रोजेक्ट में इस्तेमाल कर सकते हैं?
हाँ। ऐड-ऑन GDScript में है, जिसे Godot का .NET बिल्ड भी चलाता है, और rig की हुई GLB दोनों में एक जैसी होती है। C# में एनिमेशन ऐसे चलाएँ: GetNode<AnimationPlayer>("Hero/AnimationPlayer").Play("Jog", 0.2);।
FBX क्यों नहीं, GLB क्यों?
GLB वह फ़ॉर्मेट है जिसे Godot सबसे अच्छी तरह इंपोर्ट करता है: स्केलेटन, skin weights और हर एनिमेशन, Godot 4 के हर वर्शन में, जैसे के तैसे आते हैं। आपका ओरिजिनल FBX हो सकता है; वापस GLB आती है।
क्या ऐड-ऑन मेरे एक्सपोर्ट किए हुए गेम में पहुँच जाता है?
आपका गेम rig की हुई GLB इस्तेमाल करता है। ऐड-ऑन खुद सिर्फ़ एडिटर में कुछ करता है; उसकी फ़ाइलों को एक्सपोर्ट से बाहर रखने के लिए export preset के Resources टैब में addons/afk_ai/* को exclude करें।
क्या एक साथ कई मॉडल rig हो सकते हैं?
एक बार में एक, हर एक में करीब एक मिनट। स्क्रिप्ट से पूरा फ़ोल्डर rig करना हो, तो rigging API इस्तेमाल करें: वह भी वही GLB लिखता है।
क्या rig किए हुए कैरेक्टर कमर्शियल गेम में इस्तेमाल हो सकते हैं?
हाँ। स्केलेटन और एनिमेशन CC0 हैं, और आपका मॉडल आपका ही रहता है।
क्या Blender, Unity या Unreal के लिए भी AFK AI प्लगइन है?
हाँ। Blender, Unity और Unreal Engine की गाइड देखें, और सभी नौ ऐप के लिए हर AFK AI प्लगइन का ओवरव्यू।
अपना मॉडल रिग और एनिमेट करें
AI उसे आपके ब्राउज़र में रिग करता है, फिर उस पर सैकड़ों एनिमेशन चलते हैं। किसी भी इंजन के लिए एक GLB डाउनलोड करें।
और गाइड
कैसे करें
Blender में कैरेक्टर auto-rig करें: मुफ़्त AFK AI ऐड-ऑन
अपना मॉडल चुनें, Rig पर क्लिक करें, और करीब एक मिनट बाद एनिमेशन के साथ उसकी rig की हुई कॉपी उसके बगल में खड़ी होती है, Blender 4.2 और नए वर्शन में।
कैसे करें
Unreal Engine 5 में कैरेक्टर auto-rig करें: static mesh से एनिमेटेड स्केलेटल मेश तक
मेश पर राइट-क्लिक करें, Rig with AFK AI चुनें, और एक मिनट बाद उसी फ़ोल्डर में स्केलेटन, फ़िज़िक्स एसेट और एनिमेशन के साथ स्केलेटल मेश होता है।
कैसे करें
Unity के अंदर कोई भी 3D मॉडल auto-rig करें: Humanoid के लिए तैयार, एनिमेशन क्लिप के साथ
Project विंडो में मॉडल चुनें और Rig पर क्लिक करें। एक मिनट बाद उसके बगल में rig की हुई FBX होती है, Humanoid के रूप में सेट, हर एनिमेशन एक क्लिप के रूप में।