블렌드 스페이스 기본 사용법
지난 절에서 우리는 애니메이션의 상태 전환을 관리하는 스테이트 머신에 대해 알아보았습니다. 스테이트 머신은 캐릭터의 '상태'가 바뀔 때 애니메이션을 전환하는 데 매우 효과적이죠. 하지만 캐릭터가 걷는 속도가 100에서 200으로, 다시 300으로 변할 때마다 새로운 '상태'를 만들 수는 없습니다. 이처럼 연속적인 값의 변화에 따라 여러 애니메이션을 부드럽게 섞어야 할 때 사용하는 것이 바로 블렌드 스페이스(Blend Space) 입니다.
이번 절에서는 블렌드 스페이스의 기본 개념과 생성 및 활용법에 대해 자세히 알아보겠습니다.
블렌드 스페이스란 무엇인가?
블렌드 스페이스(Blend Space) 는 1D 또는 2D 공간 내에서 여러 개의 애니메이션 시퀀스(Animation Sequence) 를 보간(Interpolate)하여 연속적이고 자연스러운 애니메이션을 생성하는 에셋(Asset) 입니다. 캐릭터의 이동 속도, 방향, 자세 등의 파라미터 값에 따라 자동으로 적절한 애니메이션을 섞어주는 역할을 합니다.
블렌드 스페이스가 필요한 이유
- 연속적인 애니메이션 변화: 캐릭터의 속도나 방향처럼 연속적으로 변하는 값에 따라 애니메이션을 부드럽게 전환하고 싶을 때 유용합니다. (예: 멈춰있다가 천천히 걷고, 빠르게 달리다가 전력 질주하는 과정의 모든 애니메이션)
- 애니메이션 개수 최적화: 모든 중간 단계의 애니메이션을 개별 시퀀스로 만들 필요 없이, 몇 개의 핵심 애니메이션만으로 다양한 중간 포즈를 생성할 수 있어 애니메이션 에셋의 수를 줄일 수 있습니다.
- 자연스러운 움직임: 애니메이션 간의 블렌딩을 통해 딱딱한 전환 없이 매우 자연스러운 움직임을 구현할 수 있습니다.
- 직관적인 편집: 블렌드 스페이스 에디터에서 시각적으로 애니메이션 보간 지점과 결과를 확인할 수 있어 편리합니다.
블렌드 스페이스 종류
언리얼 엔진에는 두 가지 주요 블렌드 스페이스가 있습니다.
블렌드 스페이스 1D (Blend Space 1D): 하나의 입력 파라미터(예: 속도)에 따라 애니메이션을 블렌딩합니다. 주로 멈춤 → 걷기 → 달리기처럼 선형적으로 변하는 움직임에 사용됩니다.
블렌드 스페이스 (Blend Space) (2D): 두 개의 입력 파라미터(예: 속도와 방향)에 따라 애니메이션을 블렌딩합니다. 캐릭터의 전후좌우 이동과 회전을 동시에 고려해야 할 때 사용됩니다.
이 절에서는 가장 흔히 사용되는 블렌드 스페이스 (2D) 를 중심으로 설명하겠습니다.
블렌드 스페이스 생성 및 설정
캐릭터의 Idle
, Walk
, Run
애니메이션을 블렌딩하는 블렌드 스페이스를 만들어봅시다.
필요한 애니메이션 에셋
Idle
(가만히 서 있는 애니메이션)Walk
(걷는 애니메이션)Run
(달리는 애니메이션)
생성 단계
콘텐츠 브라우저에서 마우스 오른쪽 버튼을 클릭합니다.
애니메이션(Animation)
> 블렌드 스페이스(Blend Space)
를 선택합니다.
블렌드 스페이스를 적용할 스켈레톤(Skeleton) 을 선택합니다. (여러분의 캐릭터 스켈레톤, 예: SKM_Mannequin_Skeleton
)
이름을 지정합니다. (예: BS_WalkRun
)
블렌드 스페이스 에디터 설정
BS_WalkRun
에셋을 더블클릭하여 블렌드 스페이스 에디터를 엽니다. 에디터는 그리드 형태의 작업 공간과 애니메이션 미리보기 패널로 구성됩니다.
축 설정 (Axis Settings)
에셋 디테일(Asset Details)
패널에서Axis Settings
섹션을 찾습니다.Horizontal Axis (X)
Name
:Speed
(또는속도
)Minimum Axis Value
:0.0
(멈춰있는 상태)Maximum Axis Value
:600.0
(최대 달리기 속도, 실제 게임 속도에 맞게 조절)Number of Grid Divisions
:6
(그리드를 몇 칸으로 나눌지. 많을수록 세밀한 블렌딩)
- (선택 사항)
Vertical Axis (Y)
Name
:Direction
(또는방향
)Minimum Axis Value
:-180.0
(후진 또는 왼쪽 회전)Maximum Axis Value
:180.0
(전진 또는 오른쪽 회전)Number of Grid Divisions
:4
애니메이션 배치
- 에셋 브라우저(Asset Browser) 패널(일반적으로 좌측 하단)에서 필요한 애니메이션 시퀀스(
Idle
,Walk
,Run
등)를 찾습니다. - 각 애니메이션을 그리드 패널의 적절한 위치로 드래그 앤 드롭하여 배치합니다.
Idle
애니메이션:Speed
0.0 지점 (그리드의 가장 왼쪽)에 배치합니다.Walk
애니메이션:Speed
약 200.0 지점에 배치합니다.Run
애니메이션:Speed
600.0 (Maximum Axis Value) 지점에 배치합니다.- (2D 블렌드 스페이스의 경우, Y축 방향에 따라 전진/후진/좌우 애니메이션 등을 추가 배치할 수 있습니다.)
- 애니메이션 미리보기: 그리드 내의 흰색 동그라미를 드래그하여 움직여보세요. 동그라미가 위치한 지점의
Speed
값에 따라Idle
,Walk
,Run
애니메이션이 자동으로 블렌딩되어 캐릭터의 움직임이 부드럽게 변하는 것을 확인할 수 있습니다. - 저장 버튼을 클릭하여 블렌드 스페이스 에셋을 저장합니다.
애니메이션 블루프린트에서 블렌드 스페이스 활용
이제 2절에서 만들었던 애님 블루프린트의 스테이트 머신에 이 BS_WalkRun
블렌드 스페이스를 적용해봅시다.
애님 블루프린트 (예: ABP_Mannequin
) 열기
이벤트 그래프 설정 (속도 변수 업데이트)
- 지난 절에서 구현한
Event Blueprint Update Animation
에서 캐릭터의 속도를 계산하여Speed
라는Float
변수를 업데이트하는 로직이 이미 있어야 합니다. 이Speed
변수가BS_WalkRun
의Speed
축 입력으로 사용됩니다. - (선택 사항)
Direction
축을 사용한다면,Get Actor Right Vector
와Get Velocity
의Dot Product
를 이용해 방향 값을 계산하여Direction
변수를 업데이트하는 로직을 추가해야 합니다.
애님 그래프 - Walk_Run
상태 업데이트
- 애님 그래프 탭으로 이동합니다.
Default State Machine
노드를 더블클릭하여 내부로 진입합니다.Walk_Run
상태를 더블클릭하여 내부 그래프를 엽니다.- 기존에 있다면 제거하고,
Blend Space Player
노드를 배치합니다. Blend Space Player
의Blend Space
핀에 여러분이 만든BS_WalkRun
블렌드 스페이스 에셋을 연결합니다.Blend Space Player
노드에Speed
(및Direction
옵션) 입력 핀이 나타납니다.- 이 핀에 애님 블루프린트의
Speed
변수(Get 노드)를 연결합니다. Blend Space Player
의Output
핀을Output Pose
노드에 연결합니다.- 컴파일 및 저장합니다.
테스트 및 디버깅
게임을 플레이하고 캐릭터를 움직여보세요.
디버깅
- 애님 블루프린트 에디터를 열어둔 상태로 게임을 플레이하면서, 디버그 필터(Debug Filter) 를 여러분의 캐릭터로 설정하면, 애님 그래프가 실시간으로 어떻게 작동하는지 확인할 수 있습니다.
Walk_Run
상태 안의Blend Space Player
노드를 선택하면, 디테일 패널에서Speed
값에 따른 애니메이션 블렌딩 비율을 시각적으로 확인할 수 있습니다.
블렌드 스페이스는 캐릭터의 움직임을 훨씬 더 유기적이고 사실적으로 만드는 데 필수적인 도구입니다. Idle
, Walk
, Run
뿐만 아니라, 특정 자세에서의 이동, 조준 상태에서의 이동 등 다양한 복합 움직임에 활용될 수 있습니다.
이번 절에서는 블렌드 스페이스의 기본 개념, 생성 및 설정 방법, 그리고 애님 블루프린트에서 이를 활용하여 캐릭터의 움직임에 따라 애니메이션을 부드럽게 블렌딩하는 방법을 알아보았습니다. 블렌드 스페이스는 캐릭터 애니메이션의 자연스러움을 극대화하는 데 중요한 역할을 합니다.