언리얼 엔진/개념 정리

개념 정리 - 애니메이션 블루프린트 및 블렌드 스페이스

journey46110 2026. 6. 13. 19:22

I. 애니메이션 에셋(Animation Asset)

1) 애니메이션 블루프린트(ABP)

- 스켈레탈 메시의 애니메이션을 제어하는 블루프린트

- 캐릭터의 상태에 따라 어떤 애니메이션을 재생할지 결정

- 상태 머신(State Machine)을 사용하여 애니메이션 전환 가능

- 이벤트 그래프(Event Graph)를 사용하여 속도, 점프 여부 등의 값을 계산

예시

캐릭터 속도 = 0
↓
Idle 애니메이션

캐릭터 속도 > 0
↓
Walk / Run 애니메이션

점프
↓
Jump 애니메이션
동작 흐름

캐릭터 상태
(속도, 방향, 점프 여부 등)
↓
Animation Blueprint
↓
애니메이션 선택
↓
Skeletal Mesh 재생

 

2) 애니메이션 블루프린트(ABP)의 그래프

① AnimGraph

- 최종적으로 캐릭터에 적용될 애니메이션(포즈)을 결정하는 그래프

- State Machine, Blend Space 등을 사용하여 애니메이션을 연결

- 현재 캐릭터 상태에 맞는 애니메이션을 선택하고 자연스럽게 전환

- 에셋 브라우저에서 애니메이션 에셋을 드래그&드롭해서 새 노드 생성 가능

AnimGraph
역할

애니메이션 변수
(Speed, IsInAir 등)
↓
Anim Graph
↓
최종 포즈 생성
↓
캐릭터 메시에 적용

 

② EventGraph

- 캐릭터의 상태 정보를 수집하여 애니메이션 변수 업데이트

- 일반 블루프린트의 Event Graph와 동일한 방식으로 작성

EventGraph
역할

캐릭터 상태 수집
↓
애니메이션 변수 갱신
↓
Anim Graph에 전달

 

③ AnimGraph와 EventGraph의 관계

Character
↓
속도, 점프 여부 등 상태 정보
↓
Event Graph
↓
Speed, IsInAir 변수 업데이트
↓
Anim Graph
↓
애니메이션 선택
↓
최종 포즈 생성

 

3) 애니메이션 에셋의 종류

① 애니메이션 시퀀스 (Animation Sequence)

- 걷기, 뛰기, 점프, 공격 등 하나의 동작이 저장된 애니메이션 파일

- 가장 기본이 되는 애니메이션 에셋

- Animation Blueprint, Blend Space, Montage 등에서 재사용 가능

예시

Idle
Walk
Run
Jump

 

② 애니메이션 몽타주 (Animation Montage)

- 여러 애니메이션 시퀀스를 하나로 묶어 재생할 수 있는 에셋

- 특정 이벤트 발생 시 재생되는 일회성 동작에 주로 사용

- 재생 구간(Section)을 나누어 제어 가능

예시

버튼 입력
↓
Montage 재생
↓
특정 공격 애니메이션 실행

 

③ 블렌드 스페이스 (Blend Space)

- 여러 애니메이션 시퀀스를 입력값에 따라 자연스럽게 섞어주는 에셋

- 주로 이동 애니메이션 구현에 사용

예시

Speed = 0
↓
Idle

Speed = 300
↓
Walk

Speed = 600
↓
Run
한 눈에 정리

Animation Sequence(개별 동작)
      │
      ├─ Blend Space
      │    └─ 이동 애니메이션
      │
      └─ Animation Montage
           └─ 공격, 스킬 등 이벤트 애니메이션

 

4) 애니메이션 적용

① 애니메이션 블루프린트(ABP) 생성

콘텐츠 브라우저 → 우클릭 → 애니메이션 → 애니메이션 블루프린트

 

- 캐릭터의 애니메이션을 제어할 Animation Blueprint 생성

애니메이션 블루프린트 생성

 

② 스켈레톤 생성

스켈레톤 선택 → 이름 결정

 

- Animation Blueprint는 특정 스켈레톤을 기준으로 동작

- 같은 스켈레톤을 사용하는 메시만 해당 Animation Blueprint를 사용할 수 있음

스켈레톤 선택

 

③ 애니메이션 시퀀스 추가

에셋 브라우저에서 애니메이션 시퀀스를 하나 선택 → AnimGraph로 드래그

에셋 브라우저

 

④ Output Pose 연결

선택한 노드를 Output Pose에 연결

 

- Output Pose는 캐릭터에 최종적으로 적용될 애니메이션 결과

- 현재는 Idle 애니메이션만 연결되어 있으므로 항상 대기 상태 유지

노드 연결

 

⑤ 캐릭터에 Animation Blueprint 적용

적용할 캐릭터의 블루프린트 → 디테일 → 애님 클래스 설정

 

- 지금 다루고 있는 애니메이션 블루프린트를 선택

- 캐릭터 메시가 ABP_Chara의 애니메이션 로직을 사용하도록 지정

캐릭터 블루프린트 - 디테일

 

⑥ 애니메이션 적용 완료

플레이 실행

BP_Character
↓
ABP_Character
↓
A_Bot_Idle
↓
캐릭터 대기 애니메이션 재생

적용 전
적용 후

 

 

II. 블렌드 스페이스

가만히 있기와 뛰기 합성 (Idle & Run)

① 블렌드 스페이스 생성

콘텐츠 브라우저에 Anim 폴더 생성 → 우클릭 → 애니메이션 → 블렌드 스페이스

블렌드 스페이스 생성

 

② 스켈레톤 선택

스켈레톤 선택 → 이름 결정

스켈레톤 선택

 

③ 축(Axis) 설정

- 블렌드 스페이스는 기본적으로 X축, Y축을 사용

- 이번에는 Y축만 사용함

이름을 Speed로 변경

 

④ Axis Settings 설정

- 세로축(Y축) 설정

이름 : Speed
최소 축 값 : 0
최대 축 값 : 500(최대 이동 속도)

- 캐릭터 속도를 기준으로 애니메이션을 선택하기 위함

- 가로 축을 사용하지 않을 것이라서 가로 축의 그리드 분할을 2로 설정

블렌드 스페이스 - 에셋 디테일

 

⑤ 애니메이션 배치

Speed = 0
↓
A_Bot_Idle

Speed = Max
↓
A_Bot_Run

배치

애니메이션 배치

 

- Ctrl + 드래그로 프리뷰 포인트(초록색 x)를 움직여서 프리뷰 확인 가능

- Shift + 드래그를 통해 애니메이션 정렬 가능

결과

Speed 증가
↓
Idle
↓
Idle + Run 혼합
↓
Run

프리뷰 화면

 

 

III. 스테이트 머신(State Machine)

1) 스테이트 머신이란?

- 여러 상태(State)와 상태 간 전환(Transition)을 관리하는 시스템

- 특정 조건이나 이벤트에 따라 상태가 변경됨

- 애니메이션의 흐름을 체계적으로 관리할 수 있음

 

예시)

신호등

빨간불
↓
초록불
↓
노란불
↓
빨간불
캐릭터 애니메이션

Idle
↓
Run
↓
Jump
↓
Fall
↓
Land
↓
Idle

 

2) Speed 변수 수집

① ABP에 Speed 변수 생성

- 현재 캐릭터의 이동 속도를 저장하기 위한 변수

- Event Graph에서 계산된 속도 값을 저장

Speed 변수 생성 (float 타입)

 

② Event Graph에서 Speed 값 계산

- Event Blueprint Update Animation은 매 프레임마다 실행됨

- 현재 캐릭터(Pawn)의 Velocity(속도)를 가져옴

- Z축(점프 높이)은 제외하고 X, Y축만 사용

- Velocity 벡터의 길이(Vector Length)를 계산하여 Speed 변수에 저장

캐릭터의 현재 속도를 갱신하는 기능의 블루프린트

 

③ Anim Graph에서 Blend Space와 연결

- Speed 변수를 Blend Space의 Speed 입력값에 연결

- 캐릭터의 이동 속도에 따라 Idle과 Run 애니메이션이 자연스럽게 전환됨

Speed 변수 연결

 

④ 결과

- 캐릭터가 정지하면 Idle 애니메이션 재생

- 캐릭터가 이동하면 Speed 값이 증가

- Speed 값에 따라 Run 애니메이션으로 자연스럽게 전환

적용 후

 

3) State Machine 적용

- 캐릭터는 Idle, Run, Jump 등 여러 애니메이션 상태를 가짐

- 상태마다 애니메이션을 직접 연결하면 관리가 어려움

- State Machine을 사용하면 상태와 상태 전환 조건을 체계적으로 관리할 수 있음

 

① State Machine 생성

- Anim Graph에서 State Machine 생성

State Machine 생성

 

② Idle, Run State 생성

우클릭 → 스테이트 추가

- State Machine 내부에 Idle, Run 두 개의 State 생성

Idle, Run State

 

③ 각 State에 애니메이션 연결

Idle State

- Idle 애니메이션 시퀀스 연결

Idle 애니메이션 시퀀스 연결

 

Run State

- RunWalk 블렌드 스페이스 연결

- Speed 변수를 입력값으로 사용

RunWalk 블렌드 스페이스 연결

 

④ State 연결

- Entry를 Idle에 연결

- Idle ↔ Run이 서로 이동할 수 있도록 연결

State끼리 연결

 

⑤ Transition Rule 설정

- State 사이의 화살표를 더블 클릭하여 전환 조건 설정

 

Idle → Run(규칙)

- Speed가 0보다 크면 Run 상태로 전환

Speed > 0인 경우

 

Run → Idle(규칙)

- Speed가 0 이하이면 Idle 상태로 전환

Speed <= 0인 경우

 

⑥ Anim Graph에 연결

- 생성한 State Machine을 Output Pose에 연결

State Machine과 Output Pose 연결

 

⑦ 상태 전환 흐름

캐릭터 이동 안 함
↓
Speed = 0
↓
Idle

캐릭터 이동
↓
Speed > 0
↓
Run

캐릭터 정지
↓
Speed <= 0
↓
Idle

 

4) 점프 상태값 수집

- 점프 애니메이션을 재생하기 위해서는 현재 캐릭터가 공중에 있는지 여부를 알아야 함

- Character Movement Component가 제공하는 IsFalling 값을 이용하여 공중 상태를 확인할 수 있음

 

① IsFalling 값 가져오기

- Is Falling은 캐릭터가 공중에 있으면 True, 땅에 있으면 False를 반환

ABP 이벤트 그래프

 

② IsInAir 변수 생성

- Bool 타입 변수 IsInAir 생성

- Is Falling의 반환값을 저장

IsInAirt 변수 생성 (bool 타입)
Is Falling과 연결

 

- 이후 State Machine의 점프 상태 전환 조건으로 사용

 

③ Sequence 노드 추가

- Event Blueprint Update Animation에서 여러 작업을 동시에 수행하기 위해 Sequence 노드 사용

- Flow Control → Sequence 추가

Sequence 노드

 

④ 블루프린트 정리

- Try Get Pawn Owner와 같이 중복되는 노드는 하나로 합쳐 사용할 수 있음

- 기능은 동일하지만 그래프를 더 깔끔하게 관리 가능

블루프린트 정리

 

Try Get Pawn Owner

├ Get Velocity → Speed 계산

└ Get Movement Component → IsInAir 계산

 

6) State Machine - Jump, Fall, Land State 적용

① Jump, Fall, Land State 생성

- State Machine 내부에 Jump, Fall, Land State 추가

State Alias와 State

 

- Idle/Run State Alias 생성

- Idle과 Run 상태를 하나의 그룹처럼 관리하기 위해 사용

Idle, Run 체크

 

② 각 State에 애니메이션 연결

Jump State

- Jump 애니메이션 시퀀스 연결

Jump 애니메이션 시퀀스 연결

 

Fall State

- Fall 애니메이션 시퀀스 연결

Fall 애니메이션 시퀀스 연결

 

- 애니메이션 시퀀스 옵션에서 애니메이션 루프 활성화

- 떨어지는 동안 계속 재생해야 하기 때문

애니메이션 루프 체크

 

Land State

- Land 애니메이션 시퀀스 연결

Land 애니메이션 시퀀스 연결

 

③ State 연결

- 새로 추가한 State Alias와 State들을 연결

- Land State와 Idle State를 연결

State끼리 연결

 

④ Transition Rule 설정

- State 사이의 화살표를 더블 클릭하여 전환 조건 설정

 

Idle/Run → Jump(규칙)과 Idle/Run →Fall(규칙)

- 캐릭터가 공중에 있으면 Jump 상태 또는 Fall 상태로 전환

IsinAir가 true인 경우

 

Jump → Fall(규칙)

- 별도의 조건 없이 자동 전환

- Transition rule 디테일에서 스테이트의 시퀀스 플레이어에 따른 자동 규칙 활성화

Transition rule - 디테일

 

Fall → Land(규칙)

- 공중 상태가 끝나면 착지 상태로 전환

수학 → 부울 → Not boolean 추가

IsinAir가 false인 경우

 

Land → Idle(규칙)

- 별도의 조건 없이 자동 전환

- Transition rule 디테일에서 스테이트의 시퀀스 플레이어에 따른 자동 규칙 활성화

Transition rule - 디테일

 

⑤ 결과

012
달리기/점프/착지 애니메이션이 정상적으로 작동