가이드사용법6분 읽기
Godot 4에서 3D 캐릭터 리깅하고 애니메이션 넣기: AFK AI 애드온, AnimationPlayer, AnimationTree
FileSystem 독에서 모델을 클릭하고 Rig를 누르면 1분쯤 뒤 애니메이션이 들어간 리깅된 GLB가 옆에 생겨요. 걷기와 대기 애니메이션은 이미 반복 재생돼요.
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는 애니메이션 재생에는 뛰어나지만 리그를 만들 방법은 없어요. 그래서 캐릭터 하나에도 보통 먼 길을 돌아가야 해요. 모델을 내보내고, Blender(휴머노이드라면 Mixamo)에서 리깅하고, 애니메이션을 찾고, GLB로 내보내고, 임포트한 뒤 반복 애니메이션마다 루프를 다시 설정해야 하죠.
AFK AI 애드온은 이 과정을 Godot 에디터의 독 하나에서 끝내요. FileSystem 독에서 모델을 클릭하고 Rig를 클릭하세요. 1분쯤 뒤 hero.glb 옆에 hero_rigged.glb가 저장돼요. 몸에 맞춰 만든 스켈레톤, 웨이트, AnimationPlayer에 담긴 애니메이션이 들어 있고, 대기, 걷기, 달리기 애니메이션은 이미 루프로 설정돼 있어요.
준비물
- Godot
- 4.2 이상. 표준 빌드와 .NET 빌드 모두 돼요.
- 모델
- 프로젝트에 있는
.glb,.gltf,.fbx파일, 최대 50 MB..gltf는 모든 데이터가 한 파일에 들어 있어야 해요. 옆에.bin이 있다면 대신.glb로 내보내세요. - afk.ai 계정
- Google로 무료로 만들 수 있어요. 리깅할 때마다 afk.ai/rig와 똑같이 계정의 그달 리깅 횟수가 1회 차감돼요.
- 인터넷
- 리깅은 afk.ai 서버에서 이루어져요. 고른 모델 파일만 전송돼요.
애드온 설치
- Godot 플러그인 페이지에서 애드온을 다운로드해요.
- 애드온의
addons/afk_ai폴더를 프로젝트의addons폴더에 복사해요. 프로젝트에addons폴더가 없으면 만드세요. - Project > Project Settings > Plugins를 열고 AFK AI 옆의 Enable에 체크해요.
오른쪽 Inspector 옆에 AFK AI 독이 생겨요.
모델 리깅하기
- 로그인. AFK AI 독에서 Sign in을 클릭해요. 브라우저에서 afk.ai가 열리면 Google로 로그인하세요. 독에 이메일과 이번 달 남은 리깅 횟수가 표시돼요. 브라우저가 Godot로 돌아오지 못하면 대신 로그인 코드가 표시돼요. I have a sign-in code 아래에 붙여 넣고 Use를 클릭하세요.
- 모델 고르기. FileSystem 독에서 모델 파일을 클릭해요.
- 옵션 고르기. Body type은 사람과 두 발로 서는 모델이라면 Human, 아니면 해당하는 동물이나 크리처를 골라요. Animations는 All animations, 스켈레톤만 받으려면 Rig only를 골라요. Facing은 Auto 그대로 두세요.
- Rig 클릭. 독에 업로드, 대기, 리깅, 다운로드 순으로 진행 상황이 표시돼요. 그동안 계속 작업하세요.
끝나면 hero.glb 옆에 hero_rigged.glb가 저장되고, 임포트된 뒤 선택된 상태가 돼요. 원본은 건드리지 않아요. 같은 모델을 다시 리깅하면 hero_rigged_2.glb가 생기니 아무것도 덮어쓰지 않아요.
리깅된 GLB에 들어 있는 것
hero_rigged.glb를 씬으로 끌어다 놓으면 바로 쓸 수 있어요. 모든 것이 하위에 들어간 노드 하나로 들어와요.
- Skeleton3D
- 모델 유형에 맞춰 만든 스켈레톤에 메시가 스키닝되어 있어요. 사람은 손가락까지 모두 포함한 본 66개를 받고, 본 이름은 pelvis, spine_01, hand_r, foot_l 같은 식이에요.
- AnimationPlayer
- 모든 애니메이션이 각자의 이름으로 들어 있어요. 휴머노이드는 최대 593개예요. Idle_A, Walk, Jog, Sprint, Jump_Start, Sword_Attack, Dance_Groove 말고도 수백 개가 있어요. 무료 계정은 무료 애니메이션을 받고, 요금제를 이용하면 나머지도 모두 받아요.
- 루프
- 대기, 걷기, 달리기, 비행, 수영 애니메이션은 이미 반복 재생돼요. Godot가 임포트하기 전에 애드온이 파일의 임포트 설정에 그렇게 적어 두거든요.
- 방향
- GlTF 모델이 다 그렇듯 캐릭터는 +Z를 바라봐요.
AnimationPlayer로 애니메이션 재생하기
가장 간단한 플레이어 캐릭터는 CharacterBody3D에 CollisionShape3D(캡슐)를 붙이고, 리깅된 모델을 그 아래로 끌어다 놓은 뒤 이름을 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)실행하면 방향키로 캐릭터가 조깅하며 돌아다니고, 키를 떼면 부드럽게 대기 동작으로 돌아가요. 이미 재생 중인 애니메이션으로 play를 호출하면 그대로 이어서 재생하니, 매 프레임 호출해도 괜찮아요.
AnimationTree로 블렌딩하기
AnimationTree는 속도에 따라 애니메이션을 블렌딩하고, 공격 같은 일회성 동작도 처리해요. 에디터에서 한 번만 설정하면 돼요:
- 캐릭터에 AnimationTree 노드를 추가해요. Inspector에서 Anim Player를
Hero/AnimationPlayer로, Tree Root를 새 AnimationNodeStateMachine으로 설정해요. - 아래쪽 AnimationTree 패널에서 우클릭해 BlendSpace1D를 추가해요. 이름을
Locomotion으로 바꾸고 열어서 점 세 개를 추가해요. Idle_A는 0, Walk는 1.5, Jog는 4에 두세요(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가 활성화되어 있는 동안에는 AnimationTree가 애니메이션을 재생하니, AnimationPlayer의 play를 함께 호출하지 마세요.
칼 쥐여 주기, 루프 바꾸기
캐릭터 손에 무언가를 쥐여 주려면 Skeleton3D를 선택하고 그 아래에 BoneAttachment3D를 추가해 Bone Name을 hand_r로 설정한 뒤, 칼을 그 어태치먼트 아래에 넣으세요. 어떤 애니메이션에서든 칼이 손을 따라가요.
반복할 애니메이션을 바꾸려면 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로 해요. 같은 모델 유형으로 리깅한 모델은 본과 애니메이션 이름이 모두 같아서, 늑대 하나에 만든 AnimationTree를 모든 늑대에 쓸 수 있어요. 유형별 애니메이션은 동물 가이드에 정리돼 있어요.
- 드래곤
- 네발 동물
- 발굽 동물
- 공룡
- 거미
- 물고기
리깅 횟수가 차감되는 경우
AFK AI에 도달한 리깅은 afk.ai/rig나 다른 AFK AI 플러그인에서와 똑같이 이번 달 리깅 횟수를 1회 차감해요. Cancel은 대기를 멈출 뿐 리깅을 멈추지는 않으니 횟수는 그대로 차감돼요. 실패한 리깅은 차감되지 않아요. 리깅 횟수를 다 쓰면 독에 그렇게 표시되고 See plans가 나타나요. 누르면 afk.ai 요금제가 열려요.
자주 묻는 질문
Godot에 자동 리깅 기능이 내장돼 있나요?
아니요. Godot는 이미 만들어진 스켈레톤과 애니메이션을 임포트하고, 리타기팅으로 휴머노이드 스켈레톤 하나를 다른 스켈레톤에 매핑할 수는 있지만, 메시를 리깅하지는 못해요. 그 부분을 AFK AI 애드온이 맡아서 Godot에 평범한 GLB를 넘겨줘요.
Godot 3에서도 작동하나요?
아니요. Godot 4.2 이상이 필요해요. Godot 3에서는 afk.ai/rig에서 모델을 리깅하고 다운로드한 GLB를 임포트하세요.
C# 프로젝트에서도 쓸 수 있나요?
네. 애드온은 GDScript로 되어 있고 Godot의 .NET 빌드도 GDScript를 실행하며, 리깅된 GLB는 어느 쪽이든 같아요. C#에서는 GetNode<AnimationPlayer>("Hero/AnimationPlayer").Play("Jog", 0.2);로 애니메이션을 재생해요.
왜 FBX가 아니라 GLB인가요?
GLB는 Godot가 가장 잘 임포트하는 형식이에요. 모든 Godot 4 버전에서 스켈레톤, 웨이트, 모든 애니메이션이 그대로 들어와요. 원본은 FBX여도 되고, 돌아오는 파일은 GLB예요.
애드온이 내보낸 게임에 포함되나요?
게임이 쓰는 것은 리깅된 GLB예요. 애드온 자체는 에디터에서만 작동해요. 애드온 파일을 내보내기에서 빼려면 내보내기 프리셋의 Resources 탭에서 addons/afk_ai/*를 제외하세요.
여러 모델을 한 번에 리깅할 수 있나요?
한 번에 하나씩, 각각 1분 정도 걸려요. 폴더 전체를 스크립트로 리깅하려면 리깅 API를 쓰세요. 똑같은 GLB를 만들어 줘요.
리깅된 캐릭터를 상업용 게임에 써도 되나요?
네. 스켈레톤과 애니메이션은 CC0이고, 모델은 계속 내 것이에요.
Blender, Unity, Unreal용 AFK AI 플러그인도 있나요?
네. Blender, Unity, Unreal Engine 가이드와, 앱 9종 전부를 다룬 AFK AI 플러그인 개요를 확인하세요.
내 모델 리깅하고 애니메이션 입히기
AI가 브라우저에서 리깅하고 나면, 수백 가지 애니메이션을 내 모델로 재생해 볼 수 있습니다. 어떤 엔진에서든 쓸 수 있는 GLB 하나로 다운로드하세요.
다른 가이드
사용법
Blender에서 캐릭터 자동 리깅하기: 무료 AFK AI 애드온
모델을 선택하고 Rig를 클릭하면 1분쯤 뒤 애니메이션이 들어간 리깅된 사본이 옆에 서 있어요. Blender 4.2 이상.
사용법
Unreal Engine 5에서 캐릭터 자동 리깅하기: 스태틱 메시에서 애니메이션이 들어간 스켈레탈 메시까지
메시를 우클릭하고 Rig with AFK AI를 고르면 1분 뒤 스켈레톤, 피직스 에셋, 애니메이션을 갖춘 스켈레탈 메시가 같은 폴더에 생겨요.
사용법
Unity 안에서 어떤 3D 모델이든 자동 리깅하기: Humanoid 설정과 애니메이션 클립까지
Project 창에서 모델을 고르고 Rig를 클릭하세요. 1분 뒤 Humanoid로 설정되고 모든 애니메이션이 클립으로 들어간 리깅된 FBX가 옆에 생겨요.