RehberlerNasıl yapılır6 dk okuma

Godot 4'te bir 3D karakteri rigle ve canlandır: AFK AI eklentisi, AnimationPlayer ve AnimationTree

FileSystem dock'unda bir modele, ardından Rig düğmesine tıkla; yaklaşık bir dakika sonra animasyonlarıyla rigli bir GLB yanında olsun, yürüme ve bekleme animasyonları döngüye ayarlı.

AFK AI (dock)

Signed in as you@example.comSign out

3 of 3 rigs left this month.

Model: hero.glb

Body typeHuman

AnimationsAll animations

FacingAuto

Rig

Rigging...Cancel

Scene › hero_rigged
  • hero_riggedNode3D
  • └Skeleton3DSkeleton3D
  • └HeroMeshInstance3D
  • └AnimationPlayerAnimationPlayer
  • └Idle_Aloop ⟳
  • └Walkloop ⟳
  • └Jogloop ⟳
  • └Sprintloop ⟳
  • └…
Ekran görüntüsü değil, eklentiye bakılarak çizildi: hero.glb riglenirken AFK AI dock'u ve yanına kaydettiği rigli kopya, animasyonları bir AnimationPlayer'da.

Godot animasyon oynatmakta harikadır, ama rig oluşturmanın bir yolu yoktur. Bu yüzden bir karakter genellikle uzun bir tur atar: dışa aktarırsın, Blender'da (ya da yalnızca insansılar için Mixamo'da) riglersin, animasyon bulursun, bir GLB dışa aktarırsın ve içe aktarmadan sonra döngülü her animasyonu yeniden döngüye ayarlarsın.

AFK AI eklentisi bu turu Godot editöründeki bir dock'tan yapar. FileSystem dock'unda modeline, ardından Rig düğmesine tıkla. Yaklaşık bir dakika sonra hero.glb dosyasının yanına hero_rigged.glb kaydedilir: gövdesine göre yapılmış bir iskelet, kemik ağırlıkları ve bir AnimationPlayer içinde animasyonlarıyla. Bekleme, yürüme ve koşu animasyonları zaten döngüye ayarlıdır.

Neye ihtiyacın var

Godot
4.2 ya da sonrası, standart sürüm ya da .NET sürümü.
Modelin
Projende en fazla 50 MB'lık bir .glb, .gltf ya da .fbx. Bir .gltf dosyasının her şeyi tek dosyada barındırması gerekir; seninkinin yanında bir .bin varsa onun yerine bir .glb dışa aktar.
Bir afk.ai hesabı
Ücretsiz, Google ile. Her rigleme, afk.ai/rig üzerinde olduğu gibi hesabının o ayki rigleme haklarından birini kullanır.
İnternet
Rigleme afk.ai'nin sunucularında yapılır. Yalnızca seçtiğin model dosyası gönderilir.

Eklentiyi kur

  1. Eklentiyi Godot eklentisi sayfasından indir.
  2. İçindeki addons/afk_ai klasörünü projenin addons klasörüne kopyala. Projende addons klasörü yoksa oluştur.
  3. Project > Project Settings > Plugins bölümünü aç ve AFK AI'ın yanındaki Enable kutusunu işaretle.

Sağda, Inspector'ın yanında bir AFK AI dock'u belirir.

Bir modeli rigle

  1. Giriş yap. AFK AI dock'unda Sign in düğmesine tıkla. Tarayıcında afk.ai açılır; orada Google ile giriş yap. Dock e-posta adresini ve bu ay kaç rigleme hakkın kaldığını gösterir. Tarayıcı Godot'ya geri dönemezse onun yerine bir giriş kodu gösterir: kodu I have a sign-in code altına yapıştır ve Use düğmesine tıkla.
  2. Modeli seç. FileSystem dock'unda modelin dosyasına tıkla.
  3. Seçenekleri belirle. Body type: insanlar ve iki ayak üstünde duran her şey için Human, değilse hangi hayvan ya da yaratıksa o. Animations: All animations ya da yalnızca iskelet için Rig only. Facing: Auto olarak bırak.
  4. Rig düğmesine tıkla. Dock neler olduğunu gösterir: yükleme, bekleme, rigleme, indirme. Bu sırada çalışmaya devam et.

İşlem bittiğinde hero_rigged.glb, hero.glb dosyasının yanına kaydedilir, içe aktarılır ve seçilir. Orijinale dokunulmaz. Aynı modeli yeniden riglersen hero_rigged_2.glb elde edersin; yani hiçbir şeyin üzerine yazılmaz.

Rigli GLB'nin içinde neler var

Kullanmak için hero_rigged.glb dosyasını bir sahneye sürükle: altında her şeyin bulunduğu tek bir node olarak gelir.

Skeleton3D
Gövde tipine göre yapılmış bir iskelet; mesh'in ona bağlanmış (skin) haldedir. Bir insan, tüm parmaklar dahil 66 kemik alır; kemiklerin adları pelvis, spine_01, hand_r, foot_l gibidir.
AnimationPlayer
Her animasyon, kendi adıyla. Bir insansı için en fazla 593 animasyon: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack, Dance_Groove ve yüzlercesi daha. Ücretsiz hesap ücretsiz animasyonları alır, bir plan ise geri kalanını ekler.
Döngüler
Bekleme, yürüme, koşu, uçma ve yüzme animasyonları zaten döngüdedir. Eklenti bunu, Godot dosyayı içe aktarmadan önce dosyanın içe aktarma ayarlarına yazar.
Yön
GlTF modellerinde olduğu gibi karakter +Z yönüne bakar.

Animasyonları AnimationPlayer ile oynat

En basit oyuncu karakteri: bir CollisionShape3D (kapsül) içeren bir CharacterBody3D ve onun altına sürüklenip adı Hero olarak değiştirilmiş rigli model. Bu betiği CharacterBody3D'ye ekle:

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)

Çalıştır: ok tuşları karakteri hafif koşuyla dolaştırır, tuşu bıraktığında yumuşakça bekleme animasyonuna döner. play çağrısı zaten oynayan animasyonla yapılırsa animasyon kaldığı yerden devam eder; bu yüzden onu her karede çağırmak sorun değildir.

Animasyonları AnimationTree ile karıştır

Bir AnimationTree, animasyonlar arasında hıza göre karışım yapar ve saldırı gibi tek seferlik hareketleri yönetir. Editörde bir kez kur:

  1. Karaktere bir AnimationTree node'u ekle. Inspector'da Anim Player ayarını Hero/AnimationPlayer, Tree Root ayarını yeni bir AnimationNodeStateMachine yap.
  2. Alttaki AnimationTree panelinde sağ tıkla ve bir BlendSpace1D ekle. Adını Locomotion koy, aç ve üç nokta ekle: 0'da Idle_A, 1,5'te Walk ve 4'te Jog (Max Space değerini 4 yap).
  3. Yeniden sağ tıkla ve Sword_Attack animasyonunu ekle. Start'ı Locomotion'a, Locomotion'ı Sword_Attack'e bağla; Sword_Attack'ten Locomotion'a da Switch Mode değeri At End, Advance Mode değeri Auto olan bir bağlantı çiz.
  4. Project > Project Settings > Input Map içinde attack adlı bir action ekle ve ona bir tuş ata.

Sonra aynı betikte iki anim.play satırını kaldır ve bunun yerine ağacı yönet:

@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 etkinken animasyonları o oynatır; bu yüzden AnimationPlayer'ın play metodunu ayrıca çağırma.

StartLocomotionBlendSpace1D · Idle_A, Walk, Jog↓ travel("Sword_Attack")↑ At EndSword_Attack
Çizim: bir AnimationTree'nin state machine'i. Locomotion, Idle_A, Walk ve Jog'u hıza göre karıştırır; travel() Sword_Attack'e gider, o bitince geri dönülür.

Kılıç tut, döngüyü değiştir

Karakterin eline bir şey vermek için Skeleton3D node'unu seç, altına bir BoneAttachment3D ekle, Bone Name değerini hand_r yap ve kılıcı bu attachment'ın altına koy. Kılıç her animasyonda eli takip eder.

Hangi animasyonların döngüde olacağını değiştirmek için FileSystem dock'unda hero_rigged.glb dosyasına çift tıklayıp Advanced Import Settings penceresini aç. Soldaki AnimationPlayer altından animasyonu seç, Loop Mode ayarını değiştir ve Reimport düğmesine tıkla.

Hayvanlar, yaratıklar ve objeler

Rig düğmesine tıklamadan önce dock'ta gövde tipini seç: köpekler, kediler ve kurtlar için Fox, toynaklı her şey için Horse; Bird, Dragon, dinozorlar için Kaiju, Spider, Insect, Snake, Fish, Kangaroo, Frog, Turtle, Ghost ya da objeler için Object. Her biri kendi gövdesine göre yapılmış bir iskelet ve ona göre yapılmış animasyonlar alır: dörtnala koşma, kanat çırpma, kükreme, yüzme, sürünme. Hepsi aynı şekilde, aynı AnimationPlayer ve AnimationTree ile oynar. Aynı gövde tipiyle riglenen her model aynı kemik ve animasyon adlarına sahiptir; yani bir kurdun AnimationTree'si her kurt için çalışır. Hayvan rehberi her tipin animasyonlarını listeler.

  • Ejderha
  • Dört ayaklı
  • Toynaklı
  • Dinozor
  • Örümcek
  • Balık
Diğer vücut tiplerinden altısı, afk.ai/rig'de riglenmiş ve kendi animasyonlarını oynatıyor.

Ne rigleme sayılır

AFK AI'a ulaşan her rigleme, afk.ai/rig üzerinde ve diğer AFK AI eklentilerinde olduğu gibi bu ayın rigleme haklarından birini kullanır. Cancel beklemeyi durdurur, riglemeyi değil; rigleme yine sayılır. Başarısız bir rigleme sayılmaz. Rigleme hakların bittiğinde dock bunu söyler ve See plans düğmesini gösterir, bu da afk.ai planlarını açar.

Sorular

Godot'da yerleşik bir otomatik rigleme aracı var mı?

Hayır. Godot zaten var olan iskeletleri ve animasyonları içe aktarır, animasyon aktarımı (retargeting) da bir insansı iskeletini diğerine eşler, ama bir mesh'i riglemez. AFK AI eklentisi bu kısmı yapar ve Godot'ya sıradan bir GLB verir.

Godot 3'te çalışır mı?

Hayır. Godot 4.2 ya da sonrası gerekir. Godot 3 kullanıyorsan modeli afk.ai/rig üzerinde rigle ve indirdiğin GLB'yi içe aktar.

Bir C# projesinde kullanabilir miyim?

Evet. Eklenti GDScript ile yazıldı ve Godot'nun .NET sürümü de GDScript çalıştırır; rigli GLB de her iki durumda aynıdır. C#'ta bir animasyonu GetNode<AnimationPlayer>("Hero/AnimationPlayer").Play("Jog", 0.2); ile oynatabilirsin.

Neden FBX değil de GLB?

GLB, Godot'nun en iyi içe aktardığı formattır: iskelet, kemik ağırlıkları ve her animasyon, her Godot 4 sürümünde olduğu gibi gelir. Orijinal modelin FBX olabilir; geri gelen ise bir GLB'dir.

Eklenti dışa aktarılan oyunuma girer mi?

Oyununun kullandığı şey rigli GLB'dir. Eklentinin kendisi yalnızca editörde iş görür; dosyalarını dışa aktarımın dışında tutmak için export preset'inin Resources sekmesinde addons/afk_ai/* yolunu hariç tut.

Birkaç modeli aynı anda rigleyebilir miyim?

Her seferinde bir tane; her biri yaklaşık bir dakika sürer. Bütün bir klasörü bir betikle riglemek için rigleme API'sini kullan: aynı GLB'yi yazar.

Rigli karakterleri ticari bir oyunda kullanabilir miyim?

Evet. İskeletler ve animasyonlar CC0 lisanslıdır, modelin ise sana ait kalır.

Blender, Unity ya da Unreal için de AFK AI eklentisi var mı?

Evet. Blender, Unity ve Unreal Engine rehberlerine, dokuz uygulamanın hepsi için de tüm AFK AI eklentilerine genel bakışa göz at.

Modelini rigle ve canlandır

Bir yapay zekâ onu tarayıcında rigler, sonra üzerinde yüzlerce animasyon oynar. Her oyun motoru için tek bir GLB indir.

Model rigle

Diğer rehberler