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