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.
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 ś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,.gltflub.fbxw projekcie, do 50 MB. Plik.gltfmusi 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
- Pobierz dodatek ze strony wtyczki do Godota.
- Skopiuj jego folder
addons/afk_aido folderuaddonsprojektu. Jeśli projekt nie ma folderuaddons, utwórz go. - Otwórz Project > Project Settings > Plugins i zaznacz Enable przy AFK AI.
Po prawej, obok Inspectora, pojawi się dok AFK AI.
Rigowanie modelu
- 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.
- Wybierz model. W doku FileSystem kliknij plik modelu.
- 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.
- 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:
- Dodaj do postaci węzeł AnimationTree. W Inspectorze ustaw Anim Player na
Hero/AnimationPlayer, a Tree Root na nowy AnimationNodeStateMachine. - 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). - 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.
- W Project > Project Settings > Input Map dodaj akcję o nazwie
attacki 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.
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
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.
Więcej poradników
Instrukcja
Automatyczny rigging postaci w Blenderze: darmowy dodatek AFK AI
Zaznacz model, kliknij Rig, a mniej więcej minutę później obok stanie kopia z rigiem i animacjami. Blender 4.2 i nowsze.
Instrukcja
Automatyczny rigging postaci w Unreal Engine 5: od static mesha do animowanego skeletal mesha
Kliknij siatkę prawym przyciskiem, wybierz Rig with AFK AI, a minutę później w tym samym folderze jest skeletal mesh ze szkieletem, physics assetem i animacjami.
Instrukcja
Automatyczny rigging dowolnego modelu 3D w Unity: gotowy jako Humanoid, z klipami animacji
Wybierz model w oknie Project i kliknij Rig. Minutę później obok stanie FBX z rigiem, ustawiony jako Humanoid, z każdą animacją jako klipem.