블렌드 스페이스 기본 사용법
1D·2D 블렌드 스페이스의 축과 샘플을 설정하고 속도·방향 값으로 이동 애니메이션을 자연스럽게 섞습니다.
지난 절에서는 애니메이션 상태 전환을 관리하는 스테이트 머신을 다뤘습니다.
스테이트 머신은 상태가 바뀔 때 전환에 효과적이지만, 이동 속도처럼 연속적으로 변하는 값마다 상태를 새로 만들 수는 없습니다.
이처럼 연속 값 변화에 따라 여러 애니메이션을 부드럽게 섞어야 할 때 사용하는 것이 블렌드 스페이스(Blend Space)입니다.
이번 절에서는 블렌드 스페이스의 기본 개념과 생성/활용법을 정리합니다.
블렌드 스페이스란 무엇인가?
블렌드 스페이스(Blend Space)는 1D 또는 2D 공간 내에서 여러 개의 애니메이션 시퀀스(Animation Sequence)를 보간(Interpolate)하여 연속적이고 자연스러운 애니메이션을 생성하는 에셋(Asset)입니다.
캐릭터의 이동 속도, 방향, 자세 등의 파라미터 값에 따라 자동으로 적절한 애니메이션을 섞어 주는 역할을 합니다.
블렌드 스페이스가 필요한 이유- 연속적인 애니메이션 변화: 캐릭터의 속도나 방향처럼 연속적으로 변하는 값에 따라 애니메이션을 부드럽게 전환하고 싶을 때 유용합니다. (예: 멈춰 있다가 천천히 걷고, 빠르게 달리다가 전력 질주하는 과정의 모든 애니메이션)
- 애니메이션 개수 최적화: 모든 중간 단계의 애니메이션을 개별 시퀀스로 만들 필요 없이, 몇 개의 핵심 애니메이션만으로 다양한 중간 포즈를 생성할 수 있어 애니메이션 에셋의 수를 줄일 수 있습니다.
- 자연스러운 움직임: 애니메이션 간의 블렌딩을 통해 딱딱한 전환 없이 매우 자연스러운 움직임을 구현할 수 있습니다.
- 직관적인 편집: 블렌드 스페이스 에디터에서 시각적으로 애니메이션 보간 지점과 결과를 확인할 수 있어 편리합니다.
블렌드 스페이스 종류
언리얼 엔진에는 두 가지 주요 블렌드 스페이스가 있습니다.
블렌드 스페이스 1D (Blend Space 1D): 하나의 입력 파라미터(예: 속도)에 따라 애니메이션을 블렌딩합니다.
주로 멈춤 → 걷기 → 달리기처럼 선형적으로 변하는 움직임에 사용됩니다.
블렌드 스페이스 (Blend Space) (2D): 두 개의 입력 파라미터(예: 속도와 방향)에 따라 애니메이션을 블렌딩합니다.
캐릭터의 전후좌우 이동과 회전을 동시에 고려해야 할 때 사용됩니다.
기본 실습은 Idle, Walk, Run을 속도로 섞는 Blend Space 1D로 만듭니다. 방향별 애니메이션이 있을 때만 2D 축을 추가하는 확장도 함께 설명합니다.
1D와 2D 블렌드 스페이스는 입력 축의 수가 다르므로, 먼저 어떤 움직임 값을 섞을지 정하고 에셋을 선택해야 합니다.
블렌드 스페이스 생성 및 설정
캐릭터의 Idle, Walk, Run 애니메이션을 블렌딩하는 BS_WalkRun을 만들어 봅시다.
2절의 준비 안내를 따라 왔다면, 아래 생성과 설정을 마치고 에셋을 저장해 주세요. 그다음 2절의 애님 블루프린트 설정으로 돌아가 Speed 변수와 상태를 연결합니다.
같은 스켈레톤의 BS_WalkRun을 이미 만들었다면 새로 만들 필요는 없습니다. 아래 축과 샘플 배치를 확인한 뒤 애니메이션 블루프린트에서 블렌드 스페이스 활용으로 넘어가세요.
Idle(가만히 서 있는 애니메이션)Walk(걷는 애니메이션)Run(달리는 애니메이션)
콘텐츠 브라우저에서 마우스 오른쪽 버튼을 클릭합니다.
애니메이션(Animation) > Blend Space 1D를 선택합니다. 방향 샘플까지 사용할 경우에는 Blend Space를 선택합니다.
블렌드 스페이스를 적용할 스켈레톤(Skeleton)을 선택합니다. (여러분의 캐릭터 스켈레톤, 예: SKM_Mannequin_Skeleton)
이름을 지정합니다. (예: BS_WalkRun)
BS_WalkRun 에셋을 더블클릭하여 블렌드 스페이스 에디터를 엽니다.
에디터는 그리드 형태의 작업 공간과 애니메이션 미리보기 패널로 구성됩니다.
에셋 디테일(Asset Details)패널에서Axis Settings섹션을 찾습니다.-
Horizontal Axis (X)Name:Speed(또는속도)Minimum Axis Value:0.0(멈춰 있는 상태)Maximum Axis Value:600.0(최대 달리기 속도, 실제 게임 속도에 맞게 조절)Grid Divisions:6(축의 그리드 분할 수. 분할을 늘린다고 샘플이나 애니메이션 품질이 자동으로 늘지는 않습니다.)
- (2D 에셋으로 확장할 때)
Vertical Axis (Y)Name:Direction(또는방향)Minimum Axis Value:-180.0(기준 방향의 뒤쪽)Maximum Axis Value:180.0(반대 부호로 표시한 뒤쪽; 전진은 0도, 좌우는 약 ±90도)Number of Grid Divisions:4
- 에셋 브라우저(Asset Browser) 패널(일반적으로 좌측 하단)에서 필요한 애니메이션 시퀀스(
Idle,Walk,Run등)를 찾습니다. - 각 애니메이션을 그리드 패널의 적절한 위치로 드래그 앤 드롭하여 배치합니다.
Idle애니메이션:Speed0.0 지점 (그리드의 가장 왼쪽)에 배치합니다.Walk애니메이션:Speed약 200.0 지점에 배치합니다.Run애니메이션:Speed600.0 (Maximum Axis Value) 지점에 배치합니다.- 2D에서는 위 세 샘플을 Direction 0(전진)에 놓고, 후진·좌우 애니메이션을 해당 각도에 추가합니다. 전진 클립 세 개만으로 후진·스트레이프 동작이 만들어지지는 않습니다.
- 애니메이션 미리보기: 그리드 내의 흰색 동그라미를 드래그하여 움직여 보세요. 동그라미가 위치한 지점의
Speed값에 따라Idle,Walk,Run애니메이션이 자동으로 블렌딩되어 캐릭터의 움직임이 부드럽게 변하는 것을 확인할 수 있습니다. - 저장 버튼을 클릭하여 블렌드 스페이스 에셋을 저장합니다.
BLEND SPACE 1D · CONTINUOUS INPUT
Speed 입력은 축 위 샘플 사이의 위치를 선택합니다
이 실습은 Idle을 0, Walk를 200, Run을 600에 둡니다. Speed 400은 Walk–Run 구간 안에 있으며, 그 사이의 포즈를 보간합니다. 축의 실제 값 간격을 유지한 개념도입니다.
상태 전환과 연속 보간
새 상태를 매번 만드는 대신 현재 Blend Space Player가 축 입력에 맞춰 포즈를 섞습니다. 실제 혼합 비율과 반응은 필터·보간 설정을 함께 확인합니다.
2D 확장에는 방향 샘플도 필요합니다
Direction 축을 추가했다면 후진·좌우 애니메이션을 해당 각도에 배치합니다. 전진 Idle·Walk·Run 세 클립만으로 스트레이프가 만들어지지는 않습니다.
Grid Divisions는 축의 편집 분할입니다. 분할 수를 늘리는 것만으로 샘플이나 애니메이션 품질이 늘지 않습니다.
애니메이션 블루프린트에서 블렌드 스페이스 활용
이제 2절에서 만든 애님 블루프린트의 스테이트 머신에 BS_WalkRun을 연결합니다. 이미 연결했다면 아래에서 에셋과 입력, 포즈 출력이 맞는지 확인해 주세요.
ABP_Mannequin) 열기- 지난 절에서 구현한
Event Blueprint Update Animation에서 캐릭터의 속도를 계산하여Speed라는Float변수를 업데이트하는 로직이 이미 있어야 합니다. 이Speed변수가BS_WalkRun의Speed축 입력으로 사용됩니다. - (선택 사항)
Direction축을 사용한다면,Calculate Direction에Velocity와 기준Actor Rotation을 넣고 -180~180도 결과를Direction에 저장합니다. 오른쪽 벡터와 속도의 내적만으로는 이 각도 범위를 얻을 수 없습니다.
Walk_Run 상태 업데이트- 애님 그래프 탭으로 이동합니다.
Default State Machine노드를 더블클릭하여 내부로 진입합니다.Walk_Run상태를 더블클릭하여 내부 그래프를 엽니다.- 2절에서 연결한
BS_WalkRun플레이어가 있다면 그대로 사용합니다. 없다면BS_WalkRun에셋을 상태 그래프에 드래그해 플레이어 노드를 만듭니다. Blend Space Player노드에Speed(및Direction옵션) 입력 핀이 나타납니다.Speed입력에는Speed를 연결합니다. 2D의Direction입력에는 별도로 계산한Direction을 연결합니다.Blend Space Player의Output핀을Output Pose노드에 연결합니다.- 컴파일하고 저장합니다.
상태 머신 테스트 및 디버깅
블렌드 스페이스가 어색하게 보일 때는 애니메이션 자체보다 축 값, 샘플 배치, 보간 속도부터 점검하는 편이 빠릅니다.
이 예제의 Speed 600은 cm/s를 쓰는 이동값과 연결하면 6 m/s입니다. 축의 0·200·600은 시간 순서가 아니라 속도 위치입니다. 400은 Walk 200과 Run 600 사이에서 (400 − 200) / (600 − 200) = 0.5 위치에 있습니다. 입력·가중치의 시간 보정 없이 두 이웃 샘플을 선형 보간하는 단순 조건에서는 Walk와 Run이 각각 0.5입니다. 실제 재생은 Smoothing Time·Weight Speed 등 설정도 영향을 주므로 언제나 이 비율이라고 단정하지 않습니다.
새 입력 위치를 계산하기
원래 세 샘플을 그대로 두고 Speed가 300이 됐습니다. 어느 두 샘플 사이이며 그 구간에서 Run 쪽으로 이동한 비율은 얼마인가요? Grid Divisions만 6에서 12로 바꾸면 Run 샘플이 하나 더 생길까요?
축의 간격과 샘플 수 구분하기
Walk 200과 Run 600 사이이고 (300 − 200) / (600 − 200) = 0.25입니다. 같은 단순 선형 조건이라면 Walk 0.75·Run 0.25이며, 화면에서 확인하는 실제 가중치는 보정 설정과 구별합니다. 분할만 바꿔도 애니메이션 샘플이 추가되지는 않습니다. Use Grid가 꺼진 방식에서 Grid Divisions는 편집 표시의 구분이며, 그 숫자를 늘리는 것만으로 동작을 더 만들 수는 없습니다.
게임을 플레이하고 캐릭터를 움직여 보세요.
- 애님 블루프린트 에디터를 열어 둔 상태로 게임을 플레이하면서, 디버그 필터(Debug Filter)를 여러분의 캐릭터로 설정하면, 애님 그래프가 실시간으로 어떻게 작동하는지 확인할 수 있습니다.
Walk_Run상태 안의Blend Space Player노드를 선택하면, 디테일 패널에서Speed값에 따른 애니메이션 블렌딩 비율을 시각적으로 확인할 수 있습니다.
블렌드 스페이스는 캐릭터의 움직임을 훨씬 더 유기적이고 사실적으로 만드는 데 필수적인 도구입니다.
Idle, Walk, Run뿐만 아니라, 특정 자세에서의 이동, 조준 상태에서의 이동 등 다양한 복합 움직임에 활용될 수 있습니다.