icon

안동민 개발노트

7장 : 애니메이션 블루프린트

블렌드 스페이스 기본 사용법


지난 절에서는 애니메이션 상태 전환을 관리하는 스테이트 머신을 다뤘습니다. 스테이트 머신은 상태가 바뀔 때 전환에 효과적이지만, 이동 속도처럼 연속적으로 변하는 값마다 상태를 새로 만들 수는 없습니다. 이처럼 연속 값 변화에 따라 여러 애니메이션을 부드럽게 섞어야 할 때 사용하는 것이 블렌드 스페이스(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_WalkRunSpeed 축 입력으로 사용됩니다.
  • (선택 사항) Direction 축을 사용한다면, Get Actor Right VectorGet VelocityDot Product를 이용해 방향 값을 계산하여 Direction 변수를 업데이트하는 로직을 추가해야 합니다.
애님 그래프 - Walk_Run 상태 업데이트
  • 애님 그래프 탭으로 이동합니다.
  • Default State Machine 노드를 더블클릭하여 내부로 진입합니다.
  • Walk_Run 상태를 더블클릭하여 내부 그래프를 엽니다.
  • 기존에 있다면 제거하고, Blend Space Player 노드를 배치합니다.
  • Blend Space PlayerBlend Space 핀에 여러분이 만든 BS_WalkRun 블렌드 스페이스 에셋을 연결합니다.
  • Blend Space Player 노드에 Speed (및 Direction 옵션) 입력 핀이 나타납니다.
  • 이 핀에 애님 블루프린트의 Speed 변수(Get 노드)를 연결합니다.
  • Blend Space PlayerOutput 핀을 Output Pose 노드에 연결합니다.
  • 컴파일 및 저장합니다.

상태머신 테스트 및 디버깅

게임을 플레이하고 캐릭터를 움직여보세요.

디버깅
  • 애님 블루프린트 에디터를 열어둔 상태로 게임을 플레이하면서, 디버그 필터(Debug Filter)를 여러분의 캐릭터로 설정하면, 애님 그래프가 실시간으로 어떻게 작동하는지 확인할 수 있습니다.
  • Walk_Run 상태 안의 Blend Space Player 노드를 선택하면, 디테일 패널에서 Speed 값에 따른 애니메이션 블렌딩 비율을 시각적으로 확인할 수 있습니다.

블렌드 스페이스는 캐릭터의 움직임을 훨씬 더 유기적이고 사실적으로 만드는 데 필수적인 도구입니다. Idle, Walk, Run 뿐만 아니라, 특정 자세에서의 이동, 조준 상태에서의 이동 등 다양한 복합 움직임에 활용될 수 있습니다.


이번 절에서는 블렌드 스페이스의 기본 개념, 생성 및 설정 방법, 그리고 애님 블루프린트에서 이를 활용하여 캐릭터의 움직임에 따라 애니메이션을 부드럽게 블렌딩하는 방법을 알아보았습니다. 블렌드 스페이스는 캐릭터 애니메이션의 자연스러움을 극대화하는 데 중요한 역할을 합니다.

목차