애니메이션(Animation)
언리얼의 애니메이션 시스템은 복잡하고 상호작용적이며, 사실적인 캐릭터 애니메이션을 제작하기 위해 설계되었습니다. 언리얼 엔진에선 캐릭터의 다양한 애니메이션을 체계적으로 관리하는 도구인 **애니메이션 블루프린트(Animation Blueprint)**를 제공합니다.
애니메이션 블루프린트의 주요 구성
애님 인스턴스(Anim Instance)
클래스에서 애니메이션 블루프린트를 다루는 기반이 되는 형태입니다. 스켈레탈 메시는 기본적으로 애니메이션 기능이 탑재되어 Mesh 에 사용해야 할 애니메이션 블루프린트를 지정한다. 클래스에서 사용하기 위해 애니메이션 블루프린트 클래스를 인스턴스 하는 것이 애님 인스턴스(Anim Instance) 입니다.
애님 그래프(Anim Graph)
애님 그래프(AnimGraph)는 현재 프레임에 대한 스켈레탈 메시의 최종적인 포즈를 구하는데 사용합니다. 기본적으로 각각의 애니메이션 블루프린트에는 애님 그래프가 있으며, 그 안에는 애니메이션 노드를 배치하고 연결함으로써 스켈레탈 메시에 대한 포즈를 설정합니다.
이벤트 그래프(Event Graph)
애니메이션 블루프린트가 가진 변수가 특정 조건을 만족하는지 등에 따라 애님 그래프에서 사용할 값을 계산하고 애니메이션 블루프린트를 업데이트하는 데 사용되는 이벤트 기반 그래프입니다. 개발을 진행하면 애니메이션의 특정 지점에서 원하는 이벤트 혹은 메소드를 실행해야 할 필요가 있습니다. 그러나 언리얼 엔진의 애니메이션 시퀀스(단일 애니메이션)는 해당 애니메이션을 사용하는 블루프린트에서 직접적으로 함수를 호출할 수 없습니다. 대신, 애니메이션 시퀀스에서 타임라인의 타임라인의 특정 지점에서 Notify를 정의하고, 이벤트 그래프에서 해당 Notify 이벤트를 생성하고 C++의 메소드를 연결하여 실행할 수 있습니다.
※ 구체적인 동작과정
- 애니메이션 시퀀스: 먼저 특정 지점에서 함수를 호출하려는 애니메이션 시퀀스가 필요합니다. Unreal의 애니메이션 시퀀스는 본질적으로 개별 애니메이션 클립입니다.
- 애니메이션 Notify 추가: Unreal 애니메이션 편집기의 애니메이션 타임라인 내에서 시퀀스의 원하는 지점에 애니메이션 Notify를 추가할 수 있습니다. 타임라인을 마우스 오른쪽 버튼으로 클릭하고 "알림 추가"를 선택하면 됩니다.
- Notify 이벤트 생성: 타임라인에 알림이 배치되면 사전 정의된 알림 이벤트를 사용하거나 사용자 정의 이벤트를 생성하는 두 가지 옵션이 있습니다. 미리 정의된 Notify는 사운드 재생이나 입자 효과 같은 일반적인 작업을 다룹니다. 보다 구체적인 기능을 위해 사용자 정의 Notify를 생성할 수 있습니다. 여기에는 AnimNotify 또는 AnimNotifyState(프레임 범위에 걸쳐 있는 알림의 경우)에서 파생된 새 클래스를 생성하는 작업이 포함됩니다.
- 기능 구현: Custom Notify의 경우 C++ 또는 블루프린트로 원하는 기능을 구현합니다. 이 함수는 애니메이션이 타임라인의 Notify 지점에 도달할 때 실행됩니다.
- 게임 개체에 연결: Unity와 마찬가지로 기능을 수행하는 개체에는 관련 구성 요소가 있어야 합니다. 예를 들어 Notify가 소리를 재생해야 한다면 게임 개체에는 해당 소리를 재생할 수 있는 오디오 구성 요소가 있어야 합니다.
애니메이션 몽타주(Animation Montage)
애니메이션 몽타주(Animation Montage)는 여러 애니메이션 시퀀스를 하나의 에셋으로 합칠 수 있는 시스템입니다. 묶인 애니메이션 시퀀스들을 한번에 관리할 수 있으며, 이를 섹션(Section)으로 나누어 그 일부만, 혹은 조합하여 재생이 가능합니다. 위 이미지에서는 총 3개의 섹션으로 나뉘어 있으며, 이를 블루프린트 혹은 C++에서 섹션을 선택하여 애니메이션을 실행할 수 있습니다. 애니메이션 몽타주는 Notify를 통해 사운드 실행, 메소드 실행, 이펙트 생성 등 다양한 이벤트를 실행할 수 있습니다. 예를 들어, 현재 이미지의 notify는 다음과 같습니다.
이미지 속 섹션들 역할
- EnableCollision - 소유한 무기의 Collsion의 충돌체크를 실행합니다.
- DisableCollision - 소유한 무기의 Collision의 충돌체크를 해제합니다.
- sfx_Whoosh - 무기를 휘두르는 사운드를 실행합니다.
- Trail - 해당 구간을 실행하는 동안 소유한 무기의 특정 위치에 이펙트를 실행합니다.
'언리얼' 카테고리의 다른 글
[Unreal Engine] 루트 모션(Root Motion) (0) | 2024.04.03 |
---|---|
[Unreal Engine] IK 리타겟팅(IK Retargeting) (0) | 2024.04.03 |
[Unreal] 언리얼 오브젝트(UObject) (0) | 2024.04.02 |
[Unreal] 블루프린트 시스템 (Blueprint System) (0) | 2024.04.02 |
[Unreal Engine] 블루프린트 (Blueprint) (0) | 2024.03.28 |