가이드사용법8분 읽기

Unreal Engine 5에서 캐릭터 자동 리깅하기: 스태틱 메시에서 애니메이션이 들어간 스켈레탈 메시까지

메시를 우클릭하고 Rig with AFK AI를 고르면 1분 뒤 스켈레톤, 피직스 에셋, 애니메이션을 갖춘 스켈레탈 메시가 같은 폴더에 생겨요.

Content Browser › Hero

Hero · Static Mesh

AFK AI

Rig with AFK AI

Edit… · Duplicate · Rename …

Content Browser › /Game/Characters
  • HeroStatic Mesh
  • Hero_riggedSkeletal Mesh
  • Hero_rigged_SkeletonSkeleton
  • Hero_rigged_PhysicsAssetPhysics Asset
  • …_Idle_AAnimation Sequence
  • …_WalkAnimation Sequence
  • …_JogAnimation Sequence
  • …
스크린샷이 아니라 플러그인을 본떠 그린 그림이에요. 메시의 우클릭 메뉴에 있는 Rig with AFK AI와, 그 결과 원본 옆에 추가되는 스켈레탈 메시, 스켈레톤, 피직스 에셋, 애니메이션이에요.

Unreal Engine은 캐릭터를 멋지게 움직일 수 있지만, 리깅은 해 주지 않아요. 스컬프팅 앱이나 마켓플레이스 팩에서 가져온 스태틱 메시에는 스켈레톤도 웨이트도 없어서, 보통은 먼 길을 돌아가야 해요. 내보내고, Blender나 Mixamo에서 리깅하고, 스켈레탈 메시로 다시 임포트한 다음, 맞는 애니메이션을 찾아야 하죠.

AFK AI 플러그인을 쓰면 그렇게 돌아갈 필요가 없어요. Content Browser에서 메시를 우클릭하고 Rig with AFK AI를 고르세요. 1분쯤 뒤 Hero_rigged라는 스켈레탈 메시가 스켈레톤, 피직스 에셋, 애니메이션과 함께 같은 폴더에 생기고, 바로 Animation Blueprint에 쓸 수 있어요. 컴파일할 C++가 없어서 블루프린트 전용 프로젝트에서도 작동해요.

준비물

Unreal Engine
Windows, Mac, Linux의 5.1 이상. 블루프린트 전용 프로젝트도 괜찮아요.
메시
.fbx, .glb, .gltf 파일에서 임포트한 스태틱 메시나 스켈레탈 메시, 최대 50 MB. AFK AI는 그 원본 파일을 받아요.
afk.ai 계정
Google로 만드는 무료 계정이에요. 리깅할 때마다 afk.ai/rig와 똑같이 계정의 이번 달 리깅 횟수가 1회 차감돼요.
인터넷
리깅은 afk.ai 서버에서 이루어져요.

플러그인 설치하기

  1. Unreal Engine 플러그인 페이지에서 플러그인을 다운로드하고 압축을 풀어요. AFKAI라는 폴더가 나와요.
  2. 그 폴더를 .uproject 파일 옆에 있는 프로젝트의 Plugins 폴더에 넣어요: MyGame/Plugins/AFKAI/AFKAI.uplugin. Plugins 폴더가 없으면 만드세요.
  3. 프로젝트를 열거나 다시 시작해요. 플러그인이 Unreal에 기본으로 들어 있는 Python Editor Script Plugin과 Editor Scripting Utilities를 켜요. Unreal이 재시작을 물어보면 재시작하세요.

에디터 메뉴 바에 AFK AI 메뉴가 생겨요. 모든 프로젝트에서 쓰려면 대신 Unreal 설치 폴더의 Engine/Plugins/Marketplace/AFKAI에 폴더를 넣고, 프로젝트마다 Edit > Plugins에서 켜세요.

로그인하고 리깅하기

  1. AFK AI > Sign in...을 선택해요. 브라우저에서 afk.ai가 열리면 Google로 로그인한 뒤 Unreal로 돌아와요. 이제 AFK AI 메뉴에 이메일과 이번 달 남은 리깅 횟수가 표시돼요.
  2. Content Browser에서 메시를 우클릭하고 Rig with AFK AI를 골라요. (또는 메시를 선택하고 AFK AI > Rig the selected mesh...를 골라요.)
  3. 작은 창에서 Body type(Human, 또는 해당하는 동물이나 크리처), Animations(All animations, 스켈레톤만 받으려면 Rig only), Facing(Auto 그대로)을 정해요. 창 제목에 리깅 횟수가 1회 차감된다고 나와 있어요. OK를 클릭하세요.
  4. 계속 작업하세요. 진행 상황은 AFK AI 메뉴에도, Output Log의 "AFK AI"로 시작하는 줄에도 표시돼요.

브라우저가 Unreal로 돌아오지 못하면(방화벽 때문이거나 Unreal이 다른 컴퓨터에 있을 때) afk.ai 페이지에 로그인 코드가 표시돼요. AFK AI > I have a sign-in code...를 선택하고 코드를 붙여 넣은 뒤 OK를 클릭하세요.

돌아오는 결과물

  • Skeletal Mesh: Hero_rigged가 원본과 같은 폴더에 선택된 상태로 생겨요. 원본 메시는 건드리지 않아요.
  • Skeleton: 모델 유형에 맞춰 만든 스켈레톤이에요. 사람은 손가락마다 관절 세 개가 있는 본 66개를 받고, 본 이름은 Unreal 마네킹의 본 이름을 따라요: pelvis, spine_01, clavicle_l, upperarm_l, thigh_l 등.
  • Physics Asset: 임포트할 때 만들어지고, 래그돌과 충돌에 쓰여요.
  • 애니메이션: 애니메이션마다 Animation Sequence가 하나씩 생겨요. 휴머노이드는 대기, 걷기, 조깅, 전력 질주, 점프, 회피, 검·방패·활·권총 동작, 춤, 피격, 사망까지 최대 593개예요. 무료 계정은 무료 애니메이션을 받고, 요금제를 이용하면 나머지도 모두 받아요.
  • FBX: Hero_rigged.fbx가 원본 소스 파일 옆에 저장되고, 그곳에 쓸 수 없으면 프로젝트의 Saved/AFK AI 폴더에 저장돼요. 다시 리깅하면 Hero_rigged_2가 생기고, 아무것도 덮어쓰지 않아요.

다른 임포트와 마찬가지로 새 에셋은 저장해야 디스크에 기록돼요: File > Save All.

afk.ai가 배치한 조인트를 손가락까지 점으로 표시한 T-포즈의 애니풍 캐릭터
anime-girl.glb · skeleton
root  └ pelvis    └ spine_01      └ spine_02        └ spine_03          └ neck_01            └ head          └ clavicle_l            └ upperarm_l              └ lowerarm_l                └ hand_l                  └ thumb_01_l  thumb_02_l  thumb_03_l                  └ index_01_l  index_02_l  index_03_l                  └ middle_01_l  middle_02_l  middle_03_l                  └ ring_01_l  ring_02_l  ring_03_l                  └ pinky_01_l  pinky_02_l  pinky_03_l          └ clavicle_r ... (오른쪽도 같음)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (오른쪽도 같음)
모든 afk.ai 리깅에 들어가는 휴머노이드 스켈레톤: 본 66개, 모든 손가락과 엄지에 관절 3개씩, 이름은 Unreal Engine 마네킹과 같은 방식.

코드 없이 움직이는 모습 보기

Hero_rigged를 레벨로 끌어다 놓으세요. Details 패널의 Animation에서 Animation Mode를 Use Animation Asset으로 설정하고, Anim to Play에서 애니메이션(예를 들어 Walk)을 고른 뒤 Looping은 켜 두세요. Play를 누르거나 뷰포트에서 그냥 지켜보면 돼요.

모든 애니메이션을 빠르게 확인하려면 Animation Sequence를 아무거나 더블클릭하세요. 애니메이션 에디터가 열리고 캐릭터에 재생해 줘요.

플레이어 캐릭터용 Animation Blueprint

가장 기본적인 구성이에요. 멈춰 있으면 대기, 움직이면 걷기, 속도가 붙으면 조깅이에요.

  1. Hero_rigged를 우클릭하고 Create > Anim Blueprint를 골라요. 이름은 ABP_Hero로 해요.
  2. Event Graph에서 Speed라는 float 변수를 추가해요. Event Blueprint Update Animation에서 Try Get Pawn Owner를 호출해 Is Valid로 확인하고, Get Velocity, Vector Length XY를 거쳐 그 값을 Speed에 넣어요.
  3. AnimGraph에서 우클릭해 Add New State Machine을 고르고, 이름을 Locomotion으로 정한 뒤 Output Pose에 연결해요.
  4. 그 안에 Idle, Walk, Jog 세 스테이트를 만들고, Asset Browser에서 Idle_A, Walk, Jog 애니메이션을 각 스테이트로 끌어다 놓아 Output Animation Pose에 연결해요.
  5. 스테이트 사이에 양방향 트랜지션을 그리고, 초당 센티미터 단위의 Speed로 규칙을 정해요. Speed > 10이면 Idle에서 Walk로, Speed > 300이면 Walk에서 Jog로, 그 아래로 떨어지면 반대로 돌아가요.
  6. Character Blueprint에서 Mesh 컴포넌트를 선택하고 Skeletal Mesh Asset을 Hero_rigged로, Anim Class를 ABP_Hero로 설정해요. 템플릿의 마네킹처럼 캡슐 바닥으로 내리고 파란 화살표 방향을 보게 돌려 주세요.

C++로 시작하고 싶다면? 같은 아이디어를 가장 간단하게 줄이면, 게임이 시작될 때 반복 애니메이션 하나를 재생하는 코드예요.

// HeroCharacter.h
UPROPERTY(EditAnywhere, Category = "Animation")
TObjectPtr<UAnimSequence> IdleAnimation;

// HeroCharacter.cpp
#include "Animation/AnimSequence.h"

void AHeroCharacter::BeginPlay()
{
    Super::BeginPlay();
    if (IdleAnimation)
    {
        GetMesh()->PlayAnimation(IdleAnimation, /*bLooping=*/ true);
    }
}
EntryIdle_A↓ Speed > 10↑ Speed < 10Walk↓ Speed > 300↑ Speed < 300Jog
그림: Locomotion 스테이트 머신. 각 스테이트가 애니메이션 하나를 재생하고, 초당 센티미터 단위의 Speed 값에 따라 스테이트 사이를 오가요.

약간의 Python으로 루트 모션 켜기

일부 애니메이션은 캐릭터를 스스로 앞으로 이동시켜요. Roll_RM, Dodge_left_RM, Sword_Dash_RM처럼 이름이 _RM으로 끝나는 것들이에요. 나머지는 제자리에서 재생돼요. Unreal에서는 루트 모션을 애니메이션마다 켜야 하는데, 플러그인이 Unreal의 Python을 이미 켜 두었으니 몇 줄로 한꺼번에 처리할 수 있어요. Output Log의 명령줄을 Cmd에서 Python으로 바꾸고 아래 코드를 붙여 넣으세요.

import unreal

folder = "/Game/Characters"  # the folder Hero_rigged is in
for path in unreal.EditorAssetLibrary.list_assets(folder, recursive=False):
    anim = unreal.EditorAssetLibrary.load_asset(path)
    if isinstance(anim, unreal.AnimSequence) and anim.get_name().endswith("_RM"):
        anim.set_editor_property("enable_root_motion", True)
        unreal.EditorAssetLibrary.save_loaded_asset(anim)
        unreal.log("Root motion on: " + anim.get_name())

그다음 스테이트 머신에서 재생한다면 ABP_Hero의 Class Defaults에서 Root Motion Mode를 Root Motion from Everything으로 설정하고, 아니면 몽타주로 재생하세요.

UE5 마네킹과 서로 리타기팅하기

스켈레톤의 본 이름이 마네킹과 같아서 Unreal의 리타기터가 거의 손대지 않아도 본을 맞춰 줘요. 양방향 모두 돼요. Third Person 템플릿의 애니메이션을 내 캐릭터에 쓸 수도 있고, afk.ai의 애니메이션을 Manny와 Quinn에 쓸 수도 있어요.

Unreal 5.4 이상에서는:

  1. 애니메이션(예를 들어 템플릿의 애니메이션)을 우클릭하고 Retarget Animations를 골라요(최신 버전에서는 Retarget Animation Assets).
  2. Target Preview Mesh를 Hero_rigged로 설정해요. 소스는 그 애니메이션에 딸린 메시예요.
  3. Auto Generate Retargeter는 켜 두세요. IK Rig와 IK Retargeter를 Unreal이 알아서 만들어요.
  4. 원하는 애니메이션에 체크하고 Export Animations를 클릭한 뒤 폴더를 골라 Export를 클릭해요.

소스와 타깃을 바꾸면 Hero_rigged의 애니메이션을 마네킹에 입힐 수 있어요. 5.1~5.3에서는 스켈레톤마다 IK Rig를 만들고 그 사이에 IK Retargeter를 만든 다음, 리타기터의 Export Selected Animations를 쓰세요. 어느 쪽이든 본격적으로 쓰기 전에 결과 몇 개를 재생해서 확인하세요. 특히 손을 잘 보세요.

크리처와 소품

똑같이 우클릭 한 번으로 드래곤, 말, 공룡, 거미, 상어도 리깅할 수 있어요. 옵션 창에서 모델 유형만 고르면 돼요. 유형마다 그 몸에 맞춘 스켈레톤과, 날갯짓, 질주, 포효, 헤엄 같은 그 스켈레톤용 애니메이션이 들어가요. 오픈 월드 게임의 야생 동물에도 리거가 따로 필요 없어요. 소품은 Object 유형이에요. 아이템과 문에 쓸 튀기, 돌기, 흔들기, 찌그러지기 애니메이션이 들어가요. 동물 가이드에 모든 모델 유형과 애니메이션이 정리되어 있어요.

  • 드래곤
  • 네발 동물
  • 발굽 동물
  • 공룡
  • 거미
  • 물고기
다른 체형 6가지를 afk.ai/rig에서 리깅해 각자의 애니메이션을 재생한 모습.

리깅 횟수가 차감되는 경우

AFK AI에 도달한 리깅은 모두 afk.ai/rig나 다른 AFK AI 플러그인과 똑같이 이번 달 리깅 횟수에서 1회 차감돼요. Stop waiting은 Unreal이 기다리는 것만 멈춰요. 리깅은 계속 진행되고 횟수도 차감돼요. 실패한 리깅은 차감되지 않고, 메시지에 이유가 나와요. 남은 리깅 횟수는 AFK AI 메뉴에 표시되고, 다 쓰면 See plans로 afk.ai 요금제를 열 수 있어요.

문제가 생겼을 때

AFK AI 메뉴가 없을 때
Edit > Plugins에서 AFK AI와 Python Editor Script Plugin이 켜져 있는지 확인하고 다시 시작하세요. 다른 문제가 있으면 Output Log에 "AFK AI couldn't start"와 그 이유가 나와요.
"has no source file recorded"
또는 "was imported from a .obj file": AFK AI에는 원본 .fbx, .glb, .gltf가 필요해요. 모델을 그중 하나로 내보내 임포트한 뒤 그걸 리깅하세요.
"Couldn't find Hero's source file"
임포트한 뒤에 파일이 옮겨졌어요. 메시를 우클릭해 Reimport With New File을 고르고, 지금 위치의 파일을 선택한 뒤 다시 리깅하세요.
"Unreal didn't import it as a skeletal mesh"
리깅은 성공했고, FBX는 메시지에 나온 위치에 저장되어 있어요. Content Browser로 끌어다 놓고 애니메이션과 함께 Skeletal Mesh로 임포트하세요. Unreal 5.5 이상의 새 임포터에서 생길 수 있어요.
"Couldn't make a secure connection to AFK AI"
프록시, 백신 프로그램, 회사 방화벽이 막고 있어요. 다른 네트워크로 시도해 보세요.
리깅이 실패했을 때
메시지를 읽어 보세요. 대개 다른 모델 유형을 고르거나, 모델을 똑바로 세워 앞을 보게 하면 해결돼요.

자주 묻는 질문

Unreal Engine 5가 자체적으로 캐릭터를 자동 리깅할 수 있나요?

스태틱 메시는 안 돼요. Unreal은 이미 있는 스켈레톤 사이에서 애니메이션을 리타기팅할 수 있고, 스켈레톤을 직접 만들고 편집하는 도구도 있지만, 메시를 대신 리깅해 주는 기능은 없어요. 그 부분을 AFK AI 플러그인이 맡아요. 스태틱 메시를 웨이트와 애니메이션을 갖춘 스켈레탈 메시로 바꿔 주면, 그다음은 Unreal이 이어받아요.

C++나 Visual Studio가 필요한가요?

아니요. 플러그인은 Unreal이 직접 실행하는 Python이라 컴파일할 것이 없고, 블루프린트 전용 프로젝트에서도 작동해요. 위의 C++ 코드는 이미 C++를 쓰는 프로젝트를 위한 거예요.

어떤 Unreal Engine 버전에서 작동하나요?

Windows, Mac, Linux의 Unreal Engine 5.1 이상에서 작동해요.

.obj에서 임포트한 모델도 리깅할 수 있나요?

바로는 안 돼요. 플러그인은 메시의 원본 소스 파일을 보내는데, .fbx, .glb, .gltf만 받아요. 3D 앱에서 모델을 그중 하나로 내보내 임포트한 다음 리깅하세요.

UE5 마네킹의 애니메이션과 함께 쓸 수 있나요?

네. 본 이름이 마네킹과 같아서 리타기터가 거의 설정 없이 양방향으로 맞춰 줘요. 위의 'UE5 마네킹과 서로 리타기팅하기'를 보세요.

리깅된 캐릭터를 판매하는 게임에 써도 되나요?

네. 스켈레톤과 애니메이션은 CC0이고, 모델은 계속 내 것이에요.

다른 앱에서 쓰고 싶은데, 리깅된 파일은 어디에 있나요?

Hero_rigged.fbx가 원본 소스 파일 옆이나 프로젝트의 Saved/AFK AI 폴더에 저장돼요. Blender, Maya를 비롯해 FBX를 읽는 어떤 앱에서든 애니메이션까지 그대로 열려요.

Unity나 Blender용 플러그인도 있나요?

네. Unity와 Blender 가이드를 보고, 아홉 개 앱 전체는 모든 AFK AI 플러그인 개요를 보세요.

내 모델 리깅하고 애니메이션 입히기

AI가 브라우저에서 리깅하고 나면, 수백 가지 애니메이션을 내 모델로 재생해 볼 수 있습니다. 어떤 엔진에서든 쓸 수 있는 GLB 하나로 다운로드하세요.

모델 리깅하기

다른 가이드