PoradnikiInstrukcja6 min czytania

Rig i animacja postaci 3D w Godocie 4: Dodatek AFK AI, AnimationPlayer i AnimationTree

Kliknij model w doku FileSystem, a potem Rig. Mniej więcej minutę później obok leży GLB z rigiem i animacjami, a chody i idle są już zapętlone.

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 ⟳
  • └…
Rysunek na podstawie wtyczki, nie zrzut ekranu: dok AFK AI podczas rigowania hero.glb i kopia z rigiem zapisana obok, z animacjami w AnimationPlayerze.

Godot świetnie odtwarza animacje, ale nie potrafi zrobić rigu. Postać zwykle musi więc odbyć podróż w obie strony: eksport, rig w Blenderze (albo w Mixamo, ale tylko dla humanoidów), szukanie animacji, eksport do GLB i ponowne ustawianie pętli dla każdej zapętlonej animacji po imporcie.

Dodatek AFK AI odbywa tę podróż za ciebie, z doku w edytorze Godota. Kliknij model w doku FileSystem, a potem Rig. Mniej więcej minutę później obok hero.glb zapisuje się hero_rigged.glb, ze szkieletem przygotowanym dla jego ciała, z wagami i z animacjami w AnimationPlayerze. Idle, chody i biegi są już zapętlone.

Czego potrzebujesz

Godot
4.2 lub nowszy, w wersji standardowej albo .NET.
Twój model
Plik .glb, .gltf lub .fbx w projekcie, do 50 MB. Plik .gltf musi mieć wszystko w jednym pliku; jeśli obok twojego leży .bin, wyeksportuj zamiast tego .glb.
Konto afk.ai
Darmowe, przez Google. Każdy rig zużywa jedno z miesięcznych rigowań na koncie, tak samo jak na afk.ai/rig.
Internet
Rigging odbywa się na serwerach afk.ai. Wysyłany jest tylko wybrany plik modelu.

Instalacja dodatku

  1. Pobierz dodatek ze strony wtyczki do Godota.
  2. Skopiuj jego folder addons/afk_ai do folderu addons projektu. Jeśli projekt nie ma folderu addons, utwórz go.
  3. Otwórz Project > Project Settings > Plugins i zaznacz Enable przy AFK AI.

Po prawej, obok Inspectora, pojawi się dok AFK AI.

Rigowanie modelu

  1. Zaloguj się. Kliknij Sign in w doku AFK AI. Przeglądarka otworzy afk.ai; zaloguj się tam przez Google. Dok pokazuje twój e-mail i liczbę rigowań, które zostały ci w tym miesiącu. Jeśli przeglądarka nie może wrócić do Godota, pokaże zamiast tego kod logowania: wklej go w I have a sign-in code i kliknij Use.
  2. Wybierz model. W doku FileSystem kliknij plik modelu.
  3. Ustaw opcje. Body type: Human dla ludzi i wszystkiego na dwóch nogach albo konkretne zwierzę lub stworzenie. Animations: All animations albo Rig only, jeśli chcesz tylko szkielet. Facing: zostaw na Auto.
  4. Kliknij Rig. Dok pokazuje, co się dzieje: wysyłanie, oczekiwanie, rigowanie, pobieranie. W tym czasie możesz dalej pracować.

Gdy wszystko się skończy, hero_rigged.glb zostaje zapisany obok hero.glb, zaimportowany i zaznaczony. Oryginał pozostaje nietknięty. Kolejny rig tego samego modelu da hero_rigged_2.glb, więc nic nie zostaje nadpisane.

Co jest w GLB z rigiem

Żeby go użyć, przeciągnij hero_rigged.glb do sceny: pojawi się jako jeden węzeł, pod którym jest cała reszta.

Skeleton3D
Szkielet przygotowany dla typu budowy, z przypiętą do niego siatką. Człowiek dostaje 66 kości, łącznie z każdym palcem, o nazwach pelvis, spine_01, hand_r, foot_l i tak dalej.
AnimationPlayer
Wszystkie animacje, każda pod własną nazwą. Humanoid dostaje ich nawet 593: Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack, Dance_Groove i setki innych. Darmowe konto dostaje te darmowe, a plan dodaje resztę.
Pętle
Idle, chody, biegi, latanie i pływanie są już zapętlone. Dodatek zapisuje to w ustawieniach importu pliku, zanim Godot go zaimportuje.
Kierunek
Postać jest zwrócona w stronę +Z, jak modele glTF.

Odtwarzanie animacji przez AnimationPlayer

Najprostsza postać gracza: CharacterBody3D z CollisionShape3D (kapsułą) i przeciągniętym pod niego modelem z rigiem, przemianowanym na Hero. Podepnij ten skrypt do 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)

Uruchom scenę, a strzałki poprowadzą postać truchtem, a po ich puszczeniu płynnie wróci ona do idle. Wywołanie play z animacją, która już jest odtwarzana, po prostu ją kontynuuje, więc wywoływanie go w każdej klatce jest w porządku.

Mieszanie animacji przez AnimationTree

AnimationTree miesza animacje według prędkości i obsługuje jednorazowe ruchy, takie jak atak. Skonfiguruj go raz w edytorze:

  1. Dodaj do postaci węzeł AnimationTree. W Inspectorze ustaw Anim Player na Hero/AnimationPlayer, a Tree Root na nowy AnimationNodeStateMachine.
  2. W panelu AnimationTree na dole kliknij prawym przyciskiem i dodaj BlendSpace1D. Nazwij go Locomotion, otwórz i dodaj trzy punkty: Idle_A w 0, Walk w 1,5 i Jog w 4 (ustaw jego Max Space na 4).
  3. Kliknij prawym przyciskiem jeszcze raz i dodaj animację Sword_Attack. Połącz Start z Locomotion, Locomotion z Sword_Attack i Sword_Attack z powrotem z Locomotion, z Switch Mode ustawionym na At End i Advance Mode na Auto.
  4. W Project > Project Settings > Input Map dodaj akcję o nazwie attack i przypisz jej klawisz.

Potem w tym samym skrypcie usuń dwie linijki z anim.play i zamiast nich steruj drzewem:

@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")

Gdy AnimationTree jest aktywny, to on odtwarza animacje, więc nie wywołuj dodatkowo play w AnimationPlayerze.

StartLocomotionBlendSpace1D · Idle_A, Walk, Jog↓ travel("Sword_Attack")↑ At EndSword_Attack
Rysunek: maszyna stanów w AnimationTree. Locomotion miesza Idle_A, Walk i Jog według prędkości; travel() przechodzi do Sword_Attack, a po jego zakończeniu następuje powrót.

Miecz w dłoni i zmiana pętli

Żeby włożyć coś postaci do ręki, zaznacz jej Skeleton3D, dodaj pod nim BoneAttachment3D, ustaw Bone Name na hand_r i umieść miecz pod tym węzłem. Będzie podążał za dłonią w każdej animacji.

Żeby zmienić, które animacje są zapętlone, kliknij dwukrotnie hero_rigged.glb w doku FileSystem, żeby otworzyć Advanced Import Settings. Wybierz animację pod AnimationPlayerem po lewej, zmień Loop Mode i kliknij Reimport.

Zwierzęta, stworzenia i rekwizyty

Przed kliknięciem Rig wybierz w doku typ budowy: Fox dla psów, kotów i wilków, Horse dla wszystkiego, co ma kopyta, Bird, Dragon, Kaiju dla dinozaurów, Spider, Insect, Snake, Fish, Kangaroo, Frog, Turtle, Ghost albo Object dla rekwizytów. Każdy dostaje szkielet przygotowany dla jego ciała i animacje przygotowane specjalnie dla niego: galop, machanie skrzydłami, ryk, pływanie, pełzanie. Odtwarza się je tak samo, tym samym AnimationPlayerem i AnimationTree. Każdy model z rigiem tego samego typu budowy ma te same nazwy kości i animacji, więc AnimationTree jednego wilka działa dla każdego wilka. Poradnik o zwierzętach wymienia animacje każdego typu.

  • Smok
  • Czworonóg
  • Kopytny
  • Dinozaur
  • Pająk
  • Ryba
Sześć innych typów ciała z rigiem zrobionym na afk.ai/rig, każdy odtwarza własne animacje.

Co liczy się jako rigowanie

Każdy rig, który dotrze do AFK AI, zużywa jedno z rigowań w tym miesiącu, tak samo jak na afk.ai/rig i w innych wtyczkach AFK AI. Cancel przerywa czekanie, ale nie rigowanie, które nadal się liczy. Nieudany rig się nie liczy. Gdy rigowania się skończą, dok o tym informuje i pokazuje See plans, co otwiera plany afk.ai.

Pytania

Czy Godot ma wbudowane narzędzie do automatycznego riggingu?

Nie. Godot importuje istniejące szkielety i animacje, a jego retargeting przenosi jeden szkielet humanoidalny na drugi, ale nie robi rigu siatki. Tę część robi dodatek AFK AI, który przekazuje Godotowi zwykły plik GLB.

Czy działa w Godocie 3?

Nie. Wymaga Godota 4.2 lub nowszego. W Godocie 3 dodaj rig do modelu na afk.ai/rig i zaimportuj pobrany GLB.

Czy mogę go używać w projekcie C#?

Tak. Dodatek jest napisany w GDScript, który wersja .NET Godota też uruchamia, a GLB z rigiem jest w obu przypadkach taki sam. W C# animację odtworzysz przez GetNode<AnimationPlayer>("Hero/AnimationPlayer").Play("Jog", 0.2);.

Dlaczego GLB, a nie FBX?

GLB to format, który Godot importuje najlepiej: szkielet, wagi i wszystkie animacje przechodzą bez zmian, w każdej wersji Godota 4. Oryginał może być w FBX; z powrotem wraca GLB.

Czy dodatek trafia do wyeksportowanej gry?

Gra korzysta z GLB z rigiem. Sam dodatek działa tylko w edytorze; żeby pominąć jego pliki w eksporcie, wyklucz addons/afk_ai/* w karcie Resources presetu eksportu.

Czy mogę dodać rig do kilku modeli naraz?

Po jednym, każdy w około minutę. Żeby dodać rig do całego folderu ze skryptu, użyj API do riggingu: zapisuje taki sam GLB.

Czy mogę użyć postaci z rigiem w komercyjnej grze?

Tak. Szkielety i animacje są na licencji CC0, a twój model nadal należy do ciebie.

Czy jest też wtyczka AFK AI do Blendera, Unity albo Unreala?

Tak. Zobacz poradniki do Blendera, Unity i Unreal Engine oraz przegląd wszystkich wtyczek AFK AI, który obejmuje wszystkie dziewięć programów.

Zrób rig i animuj swój model

AI robi jego rig w twojej przeglądarce, a potem odtwarza na nim setki animacji. Pobierz jeden plik GLB do dowolnego silnika.

Zrób rig modelu

Więcej poradników