애님 그래프의 기본 구성
지금까지 게임의 로직, 데이터 관리, UI 개발 등 다양한 측면을 살펴보았습니다. 이제 게임 캐릭터에 생명을 불어넣는 중요한 요소, 바로 애니메이션에 대해 알아보겠습니다. 언리얼 엔진은 캐릭터의 움직임을 제어하고 부드럽게 전환하는 데 특화된 강력한 도구인 애니메이션 블루프린트(Animation Blueprint, 줄여서 애님 블루프린트) 를 제공합니다.
이번 장에서는 애님 블루프린트의 핵심 구성 요소인 애님 그래프(Anim Graph) 의 기본 개념과 그 활용법을 중점적으로 다루겠습니다.
애님 블루프린트란 무엇인가?
애니메이션 블루프린트(Animation Blueprint) 는 스켈레탈 메시(Skeletal Mesh)에 애니메이션을 적용하고 제어하는 데 사용되는 특별한 종류의 블루프린트입니다. 캐릭터의 걷기, 달리기, 점프, 공격 등 다양한 동작들을 자연스럽게 이어 붙이고, 게임 상태에 따라 적절한 애니메이션을 재생하도록 로직을 구현하는 곳이죠.
애님 블루프린트는 크게 두 가지 주요 탭으로 구성됩니다.
- 이벤트 그래프(Event Graph): 게임플레이 변수(예: 캐릭터의 속도, 점프 여부)를 가져와 애니메이션에 필요한 계산을 수행하거나, 애니메이션 관련 이벤트를 처리하는 곳입니다. 일반 블루프린트의 이벤트 그래프와 유사합니다.
- 애님 그래프(Anim Graph): 실제 애니메이션의 흐름과 상태 전환을 시각적으로 정의하는 핵심 공간입니다. 여러 애니메이션 클립을 조합하고 블렌딩(Blending)하여 최종 포즈를 생성합니다.
이번 절에서는 애님 블루프린트의 심장이라고 할 수 있는 애님 그래프에 초점을 맞춰보겠습니다.
애님 그래프의 기본 구성 요소
애님 그래프는 다양한 노드들을 연결하여 캐릭터의 최종 포즈를 결정하는 파이프라인을 구축합니다. 주요 구성 요소는 다음과 같습니다.
-
상태 머신 (State Machine)
- 캐릭터의 특정 '상태'(예: Idle, Walk, Run, Jump, Attack 등)와 그 상태들 간의 '전환 규칙'을 정의하는 핵심적인 노드입니다.
- 각 상태 안에는 해당 상태에서 재생될 애니메이션(또는 애니메이션 블렌딩 로직)이 포함됩니다.
- 활용: 걷기 상태에서 달리기로 전환되거나, 점프 상태에서 착지 상태로 전환되는 등 캐릭터의 행동 변화에 따라 애니메이션을 자연스럽게 바꾸는 데 사용됩니다. 가장 보편적이고 중요한 애님 그래프의 구성 요소입니다.
-
블렌드 스페이스 (Blend Space)
- 2D 또는 1D 공간에서 여러 개의 애니메이션 클립을 보간(Interpolate)하여 연속적인 애니메이션을 생성하는 에셋입니다.
- 활용: 캐릭터의 이동 속도(0
600)나 방향(0360도)에 따라 걷기, 달리기, 뛰기 애니메이션을 부드럽게 블렌딩하여 자연스러운 움직임을 만듭니다. 애님 그래프 내에서는 '블렌드 스페이스 플레이어(Blend Space Player)' 노드 형태로 사용됩니다.
-
애님 몽타주 (Anim Montage)
- 여러 애니메이션 시퀀스(Animation Sequence)를 시간축에 배치하여 하나의 복합적인 애니메이션을 만드는 에셋입니다. 특정 액션(공격, 스킬 사용, 피격 등)처럼 한번 재생되고 끝나는 애니메이션에 주로 사용됩니다.
- 활용: 평상시에는 걷기/달리기 애니메이션을 재생하다가, 공격 버튼을 누르면 공격 애니메이션 몽타주를 재생하여 캐릭터의 상체가 공격 애니메이션을 하는 동안 하체는 계속 이동 애니메이션을 유지하는 등, 복잡한 레이어드 애니메이션에 유용합니다. 애님 그래프 내에서는 '슬롯(Slot)' 노드를 통해 몽타주를 재생합니다.
-
포즈 블렌딩 노드
- 여러 포즈를 조합하거나 블렌딩하는 노드들입니다.
Blend Poses by Bool
: 특정 불리언 값에 따라 두 포즈를 전환합니다. (예: 점프 중/아님)Blend Poses by Int
/Blend Poses by Enum
: 정수나 열거형 값에 따라 여러 포즈 중 하나를 선택하거나 블렌딩합니다. (예: 무기 타입에 따른 공격 포즈)Layered Blend Per Bone
: 특정 뼈대(Bone)까지만 상위 포즈를 적용하고 그 이하의 뼈대는 하위 포즈를 유지하여, 복합적인 애니메이션을 만듭니다. (예: 하체는 걷고 상체는 총을 겨누는 동작)
-
애니메이션 시퀀스 플레이어 (Animation Sequence Player)
- 단순히 특정 애니메이션 시퀀스 에셋을 재생하는 노드입니다. 주로 상태 머신 내부의 상태에서 사용됩니다.
-
파이널 애님 포즈 (Final Animation Pose)
- 애님 그래프의 최종 결과물입니다. 모든 노드들의 연결이 이 노드로 끝나야 합니다. 이 노드를 통해 계산된 최종 포즈가 스켈레탈 메시에 적용되어 캐릭터가 화면에 그려집니다.
애님 그래프의 흐름 (간단한 예시)
가장 기본적인 애님 그래프의 흐름은 다음과 같습니다.
출력 포즈(Output Pose)
< Default State Machine
< Idle
/ WalkRun
(상태) < Animation Sequence Player
또는 Blend Space Player
(상태 내의 애니메이션)
예시: Idle/Walk/Run 상태 머신
- 애님 블루프린트 생성
- 캐릭터의 스켈레톤을 기반으로 새로운 애님 블루프린트를 생성합니다. (콘텐츠 브라우저에서 스켈레톤 우클릭 >
애님 블루프린트 생성(Create Anim Blueprint)
)
- 캐릭터의 스켈레톤을 기반으로 새로운 애님 블루프린트를 생성합니다. (콘텐츠 브라우저에서 스켈레톤 우클릭 >
- 애님 그래프 열기
- 생성된 애님 블루프린트 에디터를 엽니다. 기본적으로
Output Pose
와Default State Machine
노드가 연결되어 있을 것입니다.
- 생성된 애님 블루프린트 에디터를 엽니다. 기본적으로
- 상태 머신 진입:
Default State Machine
노드를 더블클릭하여 내부로 진입합니다. - 상태 추가
- 빈 공간에 마우스 우클릭 >
상태 추가(Add State)
를 선택하여Idle
상태를 추가합니다. - 다시
상태 추가
를 선택하여WalkRun
상태를 추가합니다.
- 빈 공간에 마우스 우클릭 >
- 상태 간 전환 규칙 정의
Idle
상태에서 드래그하여WalkRun
상태로 선을 연결합니다. 이 선은 '전환 규칙(Transition Rule)'을 나타냅니다.- 연결된 선을 더블클릭하여 전환 규칙 그래프를 엽니다.
- 이 그래프에서
Can Enter Transition
출력 핀에 연결될 조건을 만듭니다. (예: 캐릭터의Speed
변수(이벤트 그래프에서 업데이트된)가 0보다 큰지 여부) WalkRun
상태에서Idle
상태로도 선을 연결하고, 전환 규칙 그래프에서Speed
변수가 0과 같은지 확인하는 조건을 만듭니다.
- 상태 내부 애니메이션 지정
- 각 상태(예:
Idle
)를 더블클릭하여 내부 그래프를 엽니다. Idle
상태 내에서는Animation Sequence Player
노드를 추가하고,Animation Sequence
핀에 캐릭터의Idle
애니메이션 시퀀스 에셋을 연결한 후Output Pose
노드에 연결합니다.WalkRun
상태 내에서는Blend Space Player
노드를 추가하고,Blend Space
핀에 캐릭터의WalkRun
블렌드 스페이스 에셋을 연결한 후Output Pose
노드에 연결합니다. (이때WalkRun
블렌드 스페이스의 입력 핀에Speed
변수를 연결해야 합니다.)
- 각 상태(예:
이러한 방식으로 캐릭터의 다양한 움직임과 상태를 애님 그래프에서 시각적으로 정의하고 제어할 수 있습니다. 애님 그래프는 캐릭터 애니메이션의 복잡한 흐름을 직관적으로 이해하고 수정할 수 있게 해주는 강력한 도구입니다.
이번 절에서는 애님 블루프린트의 핵심인 애님 그래프의 기본 구성 요소와 간단한 상태 머신 예시를 통해 그 작동 원리를 알아보았습니다. 애님 그래프를 이해하는 것은 언리얼 엔진에서 캐릭터 애니메이션을 제어하는 데 가장 중요한 첫걸음입니다.