OSWorlds - 게임 블로그 📌 게임 프로그래밍 📌 게임소식 🔑 로그인 📝 회원가입

언리얼 엔진 Blend Space 사용법, Idle·Walk·Run 애니메이션 자연스럽게 연결하기

언리얼 엔진에서 캐릭터 이동 애니메이션을 만들다 보면 Idle, Walk, Run을 각각 State로 나누는 방법부터 접하게 됩니다.

하지만 실제 게임에서는 캐릭터가 정지 → 천천히 걷기 → 빠르게 달리기처럼 속도가 연속적으로 변합니다. 애니메이션도 이 변화에 맞춰 자연스럽게 이어져야 합니다.

이럴 때 사용하는 것이 Blend Space입니다.

Blend Space는 하나 이상의 입력값을 기준으로 여러 Animation을 자연스럽게 섞어 재생하는 시스템입니다. 가장 대표적인 예가 Speed를 이용해 Idle, Walk, Run을 연결하는 방식입니다.

예를 들어 Speed가 0이면 Idle, 200이면 Walk, 500이면 Run을 배치해두면 캐릭터의 실제 이동 속도에 따라 중간 Animation이 자동으로 Blend됩니다.

💡 한 줄 정답 — Blend Space는 Speed나 Direction 같은 값을 기준으로 여러 Animation을 부드럽게 섞어주는 시스템입니다. 기본 이동은 Speed → Idle / Walk / Run, 방향 이동까지 필요하면 Speed + Direction → Blend Space 2D 구조로 이해하면 쉽습니다.

목차


Blend Space란?

Blend Space는 여러 Animation Sequence를 특정 값에 따라 자동으로 섞어주는 Animation Asset입니다.

가장 쉬운 예는 캐릭터의 이동 속도입니다.

Speed = 0
→ Idle

Speed = 200
→ Walk

Speed = 500
→ Run

이 세 Animation을 Blend Space에 배치하면 Speed가 100일 때는 Idle과 Walk가 섞이고, Speed가 350일 때는 Walk와 Run이 섞여서 재생됩니다.

즉 다음과 같은 방식입니다.

Idle -------- Walk -------- Run
 0            200           500

캐릭터의 Speed가 계속 변하더라도 Animation이 갑자기 교체되지 않고 두 Animation 사이를 자연스럽게 보간합니다.

이 때문에 캐릭터 locomotion 시스템에서 굉장히 자주 사용됩니다.


Blend Space와 State Machine 차이

Blend Space와 State Machine은 같이 사용하는 경우가 많지만 역할은 다릅니다.

State Machine은 큰 상태를 관리합니다.

Locomotion
Jump
Fall
Land

반면 Blend Space는 하나의 State 내부에서 여러 Animation을 섞는 역할을 합니다.

예를 들어 다음 구조를 만들 수 있습니다.

State Machine

Entry
  ↓
Locomotion
  ↓
Jump

Locomotion State 안에는 Blend Space가 들어갑니다.

Speed
  ↓
Blend Space
  ↓
Idle / Walk / Run

정리하면 다음과 같습니다.

구분State MachineBlend Space
역할큰 Animation 상태 관리Animation 간 보간
예시Ground / Jump / FallIdle / Walk / Run
조건Transition RuleAxis 값
대표 변수IsFallingSpeed, Direction
사용 위치AnimGraphState 내부 등

둘 중 하나만 선택하는 것이 아니라 State Machine과 Blend Space를 조합해서 사용하는 경우가 많다고 이해하면 됩니다.


Blend Space 1D와 2D 차이

Blend Space에는 대표적으로 1D와 2D 방식이 있습니다.

Blend Space 1D

하나의 값만 사용합니다.

예를 들어 Speed입니다.

0           200           500
Idle ------ Walk -------- Run

앞으로만 이동하는 단순한 locomotion 시스템이라면 1D만으로도 충분할 수 있습니다.

Blend Space 2D

두 개의 값을 사용합니다.

대표적으로:

Speed
Direction

입니다.

예를 들어 다음과 같이 배치할 수 있습니다.

               Forward
                  ↑
                  │
Left ←────────────┼────────────→ Right
                  │
                  ↓
               Backward

여기에 Speed까지 함께 사용하면 정지, 전진, 후진, 좌우 이동 등을 하나의 Blend Space에서 처리할 수 있습니다.

따라서 3인칭 액션 게임이나 전투 게임에서는 2D Blend Space를 많이 사용합니다.


Idle Walk Run Blend Space 만들기

Content Browser에서 새로운 Blend Space를 만들어보겠습니다.

Content Browser
      ↓
Right Click
      ↓
Animation
      ↓
Blend Space

사용할 Skeleton을 선택하면 Blend Space Asset이 만들어집니다.

예를 들어 이름을 다음처럼 설정할 수 있습니다.

BS_Locomotion

Blend Space를 열면 Grid 형태의 Editor를 볼 수 있습니다.

1D 방식이라면 한 방향으로 Animation Sample을 배치하고, 2D 방식이라면 X와 Y 두 축을 사용합니다.

처음 학습할 때는 Speed만 사용하는 1D 구성이 이해하기 쉽습니다.

[언리얼 엔진 Blend Space 만드는 방법]


Speed Axis 설정 방법

Blend Space를 만들었다면 먼저 Axis 설정을 해야 합니다.

1D Blend Space라면 Speed를 사용할 수 있습니다.

예를 들어:

Axis Name = Speed

Minimum Axis Value = 0

Maximum Axis Value = 600

처럼 설정합니다.

이 값은 캐릭터의 실제 Max Walk Speed와 완전히 똑같아야 하는 것은 아니지만 이동 속도 범위를 고려해서 설정하는 것이 좋습니다.

예를 들어 캐릭터가 최대 600 속도로 달린다면:

0 ~ 600

범위를 사용하면 이해하기 쉽습니다.

이때 Animation Sample은 다음처럼 배치할 수 있습니다.

Idle = 0

Walk = 200

Run = 600

Speed가 400이라면 Walk와 Run 사이 Animation이 자동으로 Blend됩니다.

[언리얼 엔진 Blend Space Speed Axis 설정]


Idle Walk Run 애니메이션 배치하기

이제 Animation Sequence를 Blend Space Grid에 배치합니다.

예를 들어:

A_Idle
A_Walk
A_Run

이 있다고 해보겠습니다.

Grid에서 각각 다음 위치에 배치합니다.

0
→ A_Idle

200
→ A_Walk

600
→ A_Run

그 결과는 다음과 같은 구조가 됩니다.

0           200                   600
Idle ------- Walk ---------------- Run

Blend Space Preview에서 Speed 값을 움직이면 캐릭터 Animation이 자연스럽게 변화하는 것을 확인할 수 있습니다.

특히 중요한 것은 Animation마다 이동 속도와 발 움직임이 너무 다르면 중간 Blend가 어색해질 수 있다는 점입니다.

가능하면 같은 캐릭터와 유사한 locomotion 세트의 Animation을 사용하는 것이 좋습니다.

[언리얼 엔진 Idle Walk Run Blend Space 구성]


Animation Blueprint에서 Speed 값 만들기

앞 글에서 State Machine을 만들면서 Speed 변수를 사용했습니다.

Blend Space에서도 동일한 Speed 값을 사용할 수 있습니다.

Animation Blueprint Event Graph에서 기본 구조는 다음과 같습니다.

Event Blueprint Update Animation
        ↓
Try Get Pawn Owner
        ↓
Get Velocity
        ↓
Vector Length XY
        ↓
Set Speed

여기서 Vector Length XY를 사용하는 이유는 Z축 속도를 제외하고 지면 이동 속도만 계산하기 위해서입니다.

예를 들어 캐릭터가 점프하면 Velocity의 Z 값도 생길 수 있습니다.

하지만 locomotion Blend Space에서는 주로 수평 이동 속도만 필요하므로 XY Length를 사용하는 것이 편합니다.

결과적으로:

Velocity = (300, 0, 500)

이라고 해도 수평 Speed는 대략:

300

으로 처리할 수 있습니다.

[언리얼 엔진 Animation Blueprint Speed 계산]


Blend Space를 State Machine에 연결하기

Blend Space를 만들었다면 State Machine의 Locomotion State에 넣어줍니다.

Locomotion State를 더블 클릭합니다.

기존에 Idle Animation Sequence가 직접 연결돼 있었다면 이를 제거하고 Blend Space Player를 배치합니다.

BS_Locomotion
      ↓
Output Animation Pose

Blend Space의 입력값에는 Speed 변수를 연결합니다.

Speed
  ↓
BS_Locomotion

전체 구조는 다음과 같습니다.

Locomotion State
      │
      ▼
BS_Locomotion
      │
 Speed
      │
      ▼
Output Animation Pose

이제 캐릭터의 Speed가 증가하면 Idle → Walk → Run이 자연스럽게 Blend됩니다.

[언리얼 엔진 Blend Space State Machine 연결]


Direction 값으로 좌우 이동 만들기

앞으로만 움직이는 캐릭터라면 Speed만으로 충분합니다.

하지만 전투 게임처럼 캐릭터가 상대방을 바라본 상태에서 좌우로 움직이거나 뒤로 이동해야 한다면 Direction 값이 필요합니다.

대표적인 방향 값을 생각하면 다음과 같습니다.

Forward = 0도

Right = 90도

Left = -90도

Backward = 180도 또는 -180도

이를 Blend Space 2D의 한 축으로 사용할 수 있습니다.

예를 들어:

X Axis = Direction
Y Axis = Speed

구성으로 만들 수 있습니다.

Animation Sample도 다음처럼 준비할 수 있습니다.

Forward
Backward
Left
Right

그러면 캐릭터 방향에 따라 이동 Animation이 자동으로 Blend됩니다.


Calculate Direction 사용 방법

Direction 값을 직접 계산할 수도 있지만 Animation Blueprint에서는 Calculate Direction 노드를 사용할 수 있습니다.

기본 구조는 다음과 같습니다.

Velocity
     ↓
Calculate Direction
     ↑
Actor Rotation
     ↓
Set Direction

예를 들어 캐릭터가 바라보는 방향과 같은 방향으로 이동하면:

Direction ≈ 0

오른쪽으로 이동하면:

Direction ≈ 90

왼쪽으로 이동하면:

Direction ≈ -90

뒤로 이동하면:

Direction ≈ 180

정도의 값이 나옵니다.

이 값을 Blend Space에 전달하면 이동 방향에 맞는 Animation을 선택할 수 있습니다.


Blend Space 2D로 전후좌우 이동 만들기

전투 캐릭터처럼 상대를 바라보면서 움직이는 시스템이라면 2D Blend Space가 유용합니다.

예를 들어 다음 Animation이 있다고 해보겠습니다.

Idle

Walk Forward
Walk Backward
Walk Left
Walk Right

Run Forward
Run Backward
Run Left
Run Right

Blend Space를 다음과 같이 구성합니다.

Horizontal Axis
→ Direction
-180 ~ 180

Vertical Axis
→ Speed
0 ~ 600

그리고 Grid에는 각 Animation을 방향과 속도에 맞게 배치합니다.

개념적으로 보면:

               Forward Run

Left Run       Forward        Right Run

Left Walk      Idle           Right Walk

              Backward

형태가 됩니다.

이렇게 하면 Speed와 Direction 두 값만으로 다양한 이동 Animation을 자연스럽게 연결할 수 있습니다.


Blend가 부자연스러울 때 조절할 설정

Blend Space를 만들었는데 캐릭터 Animation이 너무 빠르게 변하거나 발이 튀는 것처럼 보일 수 있습니다.

이때 몇 가지 설정을 확인해볼 수 있습니다.

Axis Interpolation

입력값이 갑자기 바뀌더라도 Blend Space가 일정 시간에 걸쳐 따라가도록 설정할 수 있습니다.

예를 들어:

Speed
0 → 600

이 한 프레임에 크게 변하면 Animation도 빠르게 바뀔 수 있습니다.

Interpolation을 사용하면 변화가 조금 더 부드러워질 수 있습니다.

Animation Sample 위치

Walk Animation이 실제로는 느린데 너무 높은 Speed 값에 배치돼 있으면 발이 미끄러질 수 있습니다.

따라서:

실제 캐릭터 이동 속도
+
Animation의 움직임 속도

를 비교하면서 Sample 위치를 조절하는 것이 좋습니다.

Character Movement 속도

Max Walk Speed와 Blend Space 범위가 너무 다르면 Animation이 원하는 구간에 도달하지 못할 수도 있습니다.

예를 들어:

Max Walk Speed = 450

Blend Space Run = 600

이면 Run Animation을 완전히 재생하는 구간까지 Speed가 올라가지 않습니다.


Blend Space가 작동하지 않을 때 확인할 것

Blend Space가 항상 Idle만 재생하거나 이상한 Animation이 나온다면 다음 순서로 확인해보세요.

Blend Space 문제
      ↓
① Speed 값이 변하는가?
      ↓
② Blend Space Axis 범위가 맞는가?
      ↓
③ Animation Sample 위치가 맞는가?
      ↓
④ Blend Space 입력에 Speed가 연결됐는가?
      ↓
⑤ Locomotion State에 Blend Space가 들어갔는가?
      ↓
⑥ State Machine이 Output Pose까지 연결됐는가?

특히 Speed 자체가 0에서 변하지 않는 경우가 많습니다.

Animation Blueprint 디버깅 상태에서 Speed 값을 확인하거나 Print String 등을 통해 값이 실제로 업데이트되는지 확인해보는 것이 좋습니다.

또한 Preview에서 잘 작동하지만 실제 게임에서만 이상하다면 캐릭터가 사용하는 Animation Blueprint가 맞는지도 확인합니다.


Blend Space와 Montage를 함께 사용하는 방법

지금까지 배운 내용을 연결하면 캐릭터 Animation 구조를 상당히 깔끔하게 만들 수 있습니다.

기본 이동은 Blend Space가 담당합니다.

Speed + Direction
       ↓
Blend Space
       ↓
Locomotion

State Machine은 큰 상태를 관리합니다.

Locomotion
Jump
Fall
Land

공격과 스킬은 Montage를 사용합니다.

Attack Input
      ↓
Play Montage

전체 Animation 구조를 간단히 표현하면 다음과 같습니다.

Speed / Direction
       ↓
Blend Space
       ↓
State Machine
       ↓
Locomotion Pose
       ↓
Slot
       ↓
Animation Montage
       ↓
Output Pose

이 방식으로 구성하면 캐릭터는 평소에는 Blend Space로 자연스럽게 이동하고, 공격 입력이 들어올 때 Montage Animation을 재생할 수 있습니다.


마무리

Blend Space는 언리얼 엔진 캐릭터 Animation을 자연스럽게 만드는 데 매우 중요한 기능입니다.

특히 다음 구조만 먼저 이해하면 좋습니다.

Speed
  ↓
Blend Space
  ↓
Idle / Walk / Run

방향 이동까지 필요하다면:

Speed
+
Direction
   ↓
Blend Space 2D
   ↓
Forward / Back / Left / Right

으로 확장할 수 있습니다.

State Machine이 “현재 어떤 Animation 상태인가”를 관리한다면 Blend Space는 그 상태 안에서 여러 Animation을 얼마나 섞을지 결정한다고 생각하면 이해하기 쉽습니다.

여기에 Animation Montage까지 조합하면 이동, 점프, 공격, 콤보를 서로 역할별로 나누어 훨씬 관리하기 좋은 Animation Blueprint를 만들 수 있습니다.


참고 사이트


함께 보면 좋은 글

  1. 언리얼 엔진 State Machine 사용법, Idle·Run·Jump 전환하기
    → Blend Space와 State Machine 차이 문단에 내부 링크
  2. 언리얼 엔진 Animation Montage와 Anim Notify 사용법
    → Blend Space와 Montage를 함께 사용하는 방법에 내부 링크
  3. 언리얼 엔진 Collision 설정, Block·Overlap·Ignore 차이
    → 캐릭터 이동과 Collision 관련 설명에 내부 링크
  4. 언리얼 엔진 Line Trace·Sphere Trace·Box Trace 차이
    → 공격 Montage 연동 부분에 내부 링크
  5. 언리얼 엔진 Accessed None 오류 원인과 해결 방법
    → Animation Blueprint 캐릭터 Reference 문제에 내부 링크

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤