UE5 애니메이션 블루프린트 템플릿 & 데이터 테이블 정리
이번 글에서는 다음 내용을 다룬다.
1. 애니메이션 블루프린트 템플릿
2. Linked Anim Graph를 통한 모듈화
3. 직업별 애니메이션 데이터 관리 (데이터 테이블)
1) AnimInstance 클래스와 애님 블루프린트 연결
- SkeletalMesh 컴포넌트 → Details > Anim Class 에 AnimBlueprint 지정 가능
- AnimBlueprint은 결국 AnimInstance를 상속한 클래스이다.
2) 변수 핀 노출
- Expose as Pin 체크 → 노드에서 핀으로 노출됨
- 다른 블루프린트에서 값을 주입해 애니메이션 계산에 활용 가능
3) Linked Anim Graph 개념
- 다른 애니메이션 블루프린트를 모듈 단위로 불러올 수 있는 기능
- 장점:
- 애니메이션을 분리·재사용 가능
- 직업별, 무기별, 상황별 애니메이션을 모듈화 가능
참고: Control Rig은 레벨 시퀀스에서 애니메이션 제작에 사용.
리타게팅은 다른 스켈레톤 애니메이션을 변환할 때 사용.
4) 애니메이션 템플릿 만들기
- AnimInstance를 상속받은 C++ 클래스 생성
- CoreMinimal.h 대신 GameInfo.h 포함 (공용 헤더 관리 목적)
- 모든 플레이어가 공통으로 쓸 수 있는 공용 AnimInstance 구조 설계
5) 템플릿 AnimBP와 Child AnimBP
- AnimBP를 만들 때 Template 선택 → 스켈레톤 지정이 불가능
- 즉, “애니메이션 그래프의 틀”만 정의
- 스켈레톤 지정된 일반 AnimBP와 달리 추상적인 형태
- Child AnimBP로 상속 시 Anim Graph 없음
- 대신 Linked Anim Graph 또는 Override 방식을 활용
6) 구현부/노티파이 복사
- Template AnimBP에서 복사 → Child AnimBP에 구현부, 노티파이 붙여넣기
- Child는 자체 그래프가 없으므로 Override로 맞춰준다
7) BlendSpace Player 적용
- BlendSpace Player 노드에 원하는 BlendSpace 에셋 지정
- Child AnimBP에서는 애님 그래프를 직접 작성할 수 없으므로
- 오른쪽 패널의 Asset Override에서 블렌드 스페이스 교체 가능
- Child에서는 Anim Graph 없음
- Asset Override로 교체해야 동작
8) State Machine과 변수 세팅
- State Machine 이름을 넣어야 노드 이름이 정상 출력
- BlendSpace의 X, Y 값에 대응하는 변수 세팅
9) 애니메이션 데이터 관리
데이터를 관리하는 방법은 다양하다:
1. 데이터 에셋: 개별 오브젝트 단위 관리
2. 데이터 테이블: 구조체 기반, CSV/JSON과 연동 가능
3. 스트링 테이블: 문자열만 따로 관리할 때
4. 커브/커브 테이블: 시간 기반 값 관리 (속도, 데미지 곡선 등)
- 데이터 테이블을 만들기 위해서는 구조체(Struct) 가 필요
- MMORPG 기준: 직업별 애니메이션 데이터를 데이터 테이블로 관리
예시: FJobAnimData 구조체
USTRUCT(BlueprintType)
struct FJobAnimData : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UBlendSpace> MoveBlendSpace;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UAnimMontage> AttackMontage;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString JobName;
};
이렇게 하면 직업별 애니메이션 자산을 테이블로 쉽게 불러와서 캐릭터에 적용할 수 있다.
10) 마무리
- AnimBP 템플릿은 스켈레톤 지정 없이 애니메이션 그래프의 형식만 정의
- Child AnimBP는 Asset Override 방식으로 구체적인 애니메이션 지정
- Linked Anim Graph를 통해 애니메이션을 모듈 단위로 관리
- MMORPG 같은 구조에서는 데이터 테이블로 직업별 애니메이션 세트 관리
이 구조를 잡아두면 새로운 캐릭터/직업을 추가할 때 Anim Graph를 복잡하게 다시 짤 필요 없이, 데이터만 교체해서 확장할 수 있다.