Animation Montage 란?

애니메이션 몽타주는 폭 넓은 애니메이션 이펙트가 가능해지는 다목적 툴로, 주로 코드나 블루프린트 안에서 애니메이션 컨트롤을 노출시키는 데 관련되어 있다.

애니메이션의 지능형 루프, 로직 기반 애니메이션 전환, 루트 모션 핸들링, 기타 여러가지 다영한 애니메이션 이펙트를 만드는 데도 사용 가능하다.

몽타주를 사용하면 블루프린트나 C++ 코드로 애니메이션 애셋을 바로 제어할 수 있다.

몽타주를 사용하면 애니메이션 시퀀스를 하나의 애셋으로 합칠 수 있으며, 이를 섹션 단위로 나누어 그 일부분이나 또는 섹션을 조합해 재생할 수 있게 된다.

몽타주 안에서 이벤트(Animation Notify, Delegate)를 발동시켜 다양한 로컬이나 멀티플레이용 리플레이케트 작업을 할 수 있는데, 예를 들면 사운드 큐를 재생하거나, 이펙트 재생, 탄환 수와 같은 값 변경, 심지어 네트워크 게임에서 루트 모션 리플레이션도 지원한다.

샷건 탄환을 재장전 하는 몽타주를 만들어 설명해보겠다. 샷건의 재장전은 총 3가지 단계로 나뉜다. 시작, 장전 루프, 끝

이렇게 나눠진 3가지의 애니메이션을 하나의 애니메이션 시퀀스를 갖고 섹션별로 구역을 나눠 사용하면 더 자연스럽게 표현이 가능할 수 있다.

몽타주를 만들어 시작 장전 끝이 모두 존재하는 샷건 장전 애니메이션을 넣어둔다.

그리고 몽타주에 섹션을 추가해준다. 오른쪽 클릭을 해보면 새 몽타주 섹션이 있다. 이걸로 섹션을 추가해주자.

섹션 이름을 추가하면 섹션이 생긴다. 나는 각각 Start, Loop, End 로 짓겠다. 맨 처음에 있는 Default는 삭제해주자.

섹션 3개를 만들어 적당한 위치에 모두 배치했다.

추가적으로 섹션을 아래와같이 붙여두면 의미가 없다. 왜냐하면 전부 다 순서대로 재생되기 때문이다.

x 표시를 눌러 섹션을 모두 분리하자.

섹션을 붙이거나 나누는 것은 필요와 상황에 따라 진행하면 된다. 나는 Loop 섹션을 따로 빼고싶어 이렇게 만들었다.

하지만 만약, 시작부터 Loop 까지는 섹션을 그냥 건너뛰고 Loop 부터 End 까지는 반복시키려면 먼저 모든 섹션 미리보기 밑에있는 Start를 누르고, 위에 있는 Loop 녹색 바를 선택해주면 된다. 그러면 Start옆에 Loop가 붙게 되고, 또 다시 한 번 Loop를 눌러주면 하늘색으로 변하면서, Start로는 다시 돌아오지 않는 루프를 만들 수 있다.

여기에 탄창이 꽉 찰 경우 넘어가는 로직 정도만 구현해주면 장전 몽타주는 끝난다.

루핑 애니메이션의 재생 속도는 원하는 대로 조정할 수 있어 재장전 모션을 빠져나와 대기 포즈로 돌아가는 시기는 언제든 맞출 수 있다.

비슷한 사용의 예로 캐릭터가 공중에서 점프할 때, 공중에서 허우적대거나 낙하하는 애니메이션을 반복 재생하다가, 착지 시퀀스를 재생할 때 등이 있겠다. 이같은 예에서는 공중에 있는 시간은 변수로 두고 언제든 빠져나올 수 있도록 몽타주로 작업하면 된다.

몽타주의 추가적인 사용 예는 아래와 같다.

  • 애니메이션 블루프린트 의 이벤트 그래프 에서 애니메이션 재생 가능
  • 복잡한 애니메이션 시퀀스를 체인으로 묶어 하나의 애니메이션으로 간주
  • 특정 애니메이션(들) 일부분만 코드나 블루프린트 스크립트로 반복
  • 코드나 블루프린트 스크립트에 따라 여러 애니메이션을 이벤트 기반 전환 처리
  • 복잡한 애니메이션 시퀀스를 네임드 슬롯에 할당하여 코드나 블루프린트로 전환
  • 코드나 블루프린트 스크립트에 따라 여러가지 애님 시퀀스를 전환

몽타주의 UI

몽타주의 UI는 크게 5가지로 나뉜다.

  1. 몽타주 (Montage)
  2. 섹션 (Sections)
  3. 엘리먼트 타이밍 (Element Timing)
  4. 노티파이 (Notifies)
  5. 커브 (Curves)

차례대로 설명해 보곘다.

몽타주

몽타주 영역은 다음과 같이 나뉜다.

  1. 섹션 – 몽타주 내 생성되어 있는 섹션을 표시
  2. 슬롯 – 현재 슬롯에 추가되어 있는 애니메이션을 표시
  3. 그룹/슬롯 – 현재 선택된 애님 그룹 및 슬롯을 표시

섹션 (Section)

섹션을 만들면 슬롯을 애니메이션 여러 부분으로 나눌 수 있다.

각 섹션에는 슬롯의 타임라인 안에 이름과 위치가 있고, 이름을 사용해서 특정 섹션에 바로 점프하거나 현재 섹션이 끝나면 다음에 재생하도록 대기열에 등록하거나 할 수 있다.

블루프린트에서 현재 섹션을 질의하거나, 한 섹션으로 점프하거나, 혹은 바로 슬롯내 다른 섹션으로 점프하도록 대기열에 등록시킬 수 있다.

각 항목에 대한 UI 설명은 이러하다.

  1. 디폴트 생성 / 비우기 – 디폴트 생성은 모든 섹션 사이 기본 연결을 생성해 서로 엮어주고, 비우기는 모든 연결을 지운다.
  2. 섹션 버튼 – 이 영역에서는 몽타주 영역에서 정의한 각 섹션에 대한 버튼을 볼 수 있고, 이를 통해 섹션 연결에 할당할 수 있다.
  3. 섹션 연결 트렉 – 여기셔는 모든 섹션 미리보기 또는 개별 트랙을 미리보기 클릭하여 애니메이션 섹션 사이 관계를 볼 수 있다.

섹션의 반복(Looping)

섹션은 무한 루프 설정할 수 있으며, 그렇게 하면 무한 반복하고자 하는 동작이 있을 경우에 매우 유용하다. 섹션 연결 트랙에 같은 섹션을 한 번 이상 연결하면, 루프로 실행되게 만들 수 있다.

그렇게 되면 섹션은 파랑으로 변한다.

아까 산탄총을 장전하는 예제에서 보았던 것과 같다.

슬롯 (Slot)

몽타주 안에서 슬롯은 애니메이션을 몇이든 담을 수 있는 트랙이다.

슬롯 이름은 아무렇게나 지은 뒤 그 이름을 사용하여 그 안의 다른 애니메이션에 블렌딩 할 수 있다.

재장전 몽타주를 예로 들면, 플레이어가 서있거나 엎드려있을 때 다양한 재장전 버전을 만들어 둘 수 있다. 이 경우에는 몽타주 내 별도의 슬롯 안에 각각에 대한 애니메이션을 넣어두고, 애니메이션 블루프린트의 애님 그래프에서 Slot 노드를 사용하여 캐릭터가 서있는지 엎으려있는지에 따라 어떤 애니메이션 세트를 사용할지 결정할 수 있다.

위의 경우에는 캐릭터가서서 재장전 할 때, DefaultProne, 엎드리면 Prone 슬롯을 사용한다.

슬롯이 할당되면, 에디터에서 미리 보고자 하는 슬롯에 Preview 버튼을 클릭하여 미리볼 수 있다.

추가적으로 다수의 슬롯을 사용할 때, 최적의 결과를 위해서는, 애니메이션 끝에서 끝까지의 길이가 서로서로 같도록 맞추는게 좋다. 그래야 추가적인 섹션 작업을 하지 않아도 되기 때문이다.

그룹 / 슬롯 (Group / Slot)

그룹은 슬롯들의 모음으로, 그룹 당 하나의 몽타주만 재생 가능하다. 동시에 다른 몽타주를 재생하려는 경우, 그에 맞는 새 그룹을 만들어주면 된다.

애님 그룹 및 슬롯은 매니저 탭 안에 모여 있으며, 돋보기 아이콘을 클릭하고 드롭다운 메뉴로 유효한 슬롯을 선택하면 된다.

새 몽타주를 생성하면 바로 정상 작동이 가능하도록 Slot 노드에 기본적으로 하나의 디폴트 슬롯이 갖춰져 있다.

엘리먼트 타이밍 (Element Timing)

엘리먼트 타이밍 트랙은 몽타주와 노티파이 영역에서 정보를 받아 각기 다른 섹션의 타이밍 정보를 시각화 해주며 설정을 도와준다.

트랙의 각 노드에는 몽타주 내 오브젝트 발동 순서를 나타내는 번호가 주어져 있으며, 각 색에 따라 다음과 같은 것을 나타낸다.

  • 빨강 – 노티파이, 노티파이 스테이트, 노티파이 스테이트 엔딩 마커
  • 연한 파랑 – 브랜칭 포인트
  • 초록 – 몽타주 섹션

노티파이 (Notify)

노티파이는 알려주다라는 뜻을 가진 단어이다. 그에 걸맞게 노티파이는 애니메이션의 특정 지점에 이벤트를 발생시킬 수 있다.

예를 들어 위 그림에서, 재장전 몽타주에서 클립을 잡아 재장전 애니메이션이 재생될 때 마다 사운드를 재생하도록 하는 노티파이를 배치할 수 있고, 월드에 탄환클립을 나타내는 메시 스폰에 사용할 수 있는 SpawnClip 이벤트를 호출할 수도 있다. 마지막엔 Branch 이벤트를 사용해 캐릭터가 대기 상태로 돌아가는 End Section으로 이동하게 도울 수도 있다.

커브 (Curve)

애니메이션 커브를 통해 애니메이션 재생 도중 머티리얼 파라미터 또는 모프 타겟 값을 변경할 수 있다.

그 작업방식은 변경하고자 하는 애셋(머티리얼 또는 모프 타겟)을 지정하고, 그에 맞게 커브 이름을 지은 뒤, 애니메이션 기간에 걸쳐 키프레임 값을 조정한다.

자손 몽타주 (Child Montage)

자손 몽타주를 통해 게임플레이에 영향을 주지 않고, 다수의 애셋에 노티파이나 기타 디테일들을 다시 만들어 유지할 필요 없이 애니메이션을 편리하게 다변화시킬 수 있다.

예를 들어 실시간 전력 게임에서 유닛들의 자동 공격 애니메이션을 다양하게 만든다던가, 롤플레잉 이나 액션 게임에서 캐릭터가 장착중인 무기나 갑옷에 따라 대기 애니메이션에 변화를 준다던가 할 수 있다.

자손 애니메이션 몽타주는 콘텐츠 브라우저에서 기존 애니메이션 몽타주에 우클릭하여 뜨는 컨텍스트 메뉴에서 Create Child Montage (자손 몽타주 생성)을 통해 생성할 수 있다.

새 몽타주는 원본과 이름이 같지만 끝에 접미사로 “_Child”가 붙는다.

자손 몽타주를 열 때, 몽타주 안의 모든 엘리먼트는 회색으로 탈색되며 그 위에 자손이라는 택스트가 표시된다.

슬롯 트랙의 애님 세그먼트를 우클릭해서 새 애니메이션으로 덮어쓸 수 있다.

슬롯 트랙에서 어느 애니메이션이던, 심지어 길이가 달라도, 다른 애니메이션으로 대체할 수 있다.

엔진에서는 대체 애니메이션이 원본과 같은 시간에 비례해서 맞는 부분을 사용하도록 재생 속도, 시작 시간, 끝 시간을 자동으로 조정해준다.

부모에서 변경되지 않은 애니메이션은 초록으로, 덮어쓴 부분이 있는 애니메이션은 노랑으로 표시된다.

위의 공격 애니메이션을 다양한 공격 애니메이션으로 대체한 경우.

자손 몽타주는 자손을 가질 수 없다.