본문 바로가기
UE5 : 3D (Blueprint)/애니메이션

[UE5 : 3D(BP) - 애니메이션] Chapter 02. 애니메이션 몽타주

by song.ift 2024. 2. 21.

GitHub : https://github.com/developeSHG/UE5-3D_BP/commit/dcd1703c46f1cb1cff51e2baaab1a59b2807fd89

 

애니메이션 몽타주 · developeSHG/UE5-3D_BP@dcd1703

hokyung.song committed Feb 26, 2024

github.com

 

 

 


 

 

위처럼 가만히 서서 총을 쏘는 애니메이션을 추가한다고 치자.

 

어딘가에서 idle, move 상태가 있고, 그 다음 공격인 fire 상태를 만들어 변경시키면 되겠지만, 그렇게 됐을 때 문제는 이동을 하다 총을 쏠 때마다 제자리에 멈춰서 총을 싸야된다. (애니메이션을 보면 멈춰서 총을 쏘고 있기 때문)

총 게임은 대부분 움직이면서도 총을 쏘는게 보편적.

 

그래서 알아볼 새로운 기법인 애니메이션 몽타주라는 기법.

애니메이션 몽타주는 굉장히 기능이 다양한데, 대표적으로는 캐릭터 애니메이션을 섞어서 앞서 말한 예시처럼 상반신은 총을 쏘고, 하반신은 그대로 달리는 등 뒤섞어 주는 기능을 만들 수 있다.

 

근데 사실 애니메이션 몽타주의 원래 의도는 정확히 말하면 편집하는 개념에 가깝다.

(몽타주 뜻 : 영화나 사진 편집 구성의 한 방법. 따로따로 촬영한 화면을 적절하게 뗴어붙여서 하나의 장면을 내용으로 만드는 일)

 

애니메이션 몽타주를 만들어보자.

 

테스트로 각기 다른 3개의 애니메이션을 이어붙여봤다.

3개를 만들었다해서 무조건 시작할 때, 끝까지 가야 된다는 것은 아니다. 얼마든지 구분해서 부분별로만 재생할 수 있다.

 

언리얼 엔진 문서를 살펴보고 알아보면 애니메이션 몽타주에서 나오는 개념들을 음반이랑 비유한다.

몽타주는 먼저 디폴트 그룹이라 해서 그룹 하나를 설정해주고, 하나의 그룹 안에는 여러 개의 슬롯 들로 이루어져 있다.

그룹이 더 큰 개념이고, 그룹 안에 아주 많은 슬롯들이 있다.

하나의 슬롯은 또 여러 개의 섹션으로 이루어져 있다.

그 섹션 안에는 애니메이션 시퀀스가 연달아 있다는 걸 볼 수 있다.

 

요약하면 그룹, 슬롯, 섹션, 그 다음 실제 결과물이 있다는 얘기고, 음반에 비유를 하자면 그룹이라는 것 자체가 음반이라고 보면 된다.

하나의 음반 안에는 곡이 하나만 있을 수 있지만 굉장히 여러 개의 곡들이 있을 수 있고, 그 곡의 개념이 슬롯이다. 하위 개념인 셈.

하나의 곡 안에는 노래가 있지만, 그 노래를 처음부터 끝까지 다 들을 필요는 없고, 구간별로 설정을 해서 들을 수도 있다. (섹션을 이용해서 구간을 나눠줄 수 있음)

 

 

예시로 위의 섹션을 아래처럼 수정하면

Start를 실행하면 거기까지만 실행하고 끝내고, Cast는 Death까지 이어서 실행. (화살표가 연이어서 실행한다고 의미)

리무브 링크를 해줘서 영역을 끊어줄 수 있다.

 

이렇게 몽타주라는 게 이어붙이고 덧붙이고 한다는 의미가 구간별로 나눠줄 수 있다.

만약 RPG 게임에서 콤비네이션을 만든다고 가정. 1타,2타,3타,4타

한 번 딱 실행했다고 해도 무조건 4타까지 가는 게 아니라 연속해서 버튼을 눌러야지만, 그 다음 애니메이션을 넘어가야 된다거나 한다고 하면 구간별로 나눠서 코드에서 다음 구간으로 특정 조건에 의해 넘어가게끔 유도를 할 수도 있다.

 

 

그리고 슬롯이란 게 음반으로 비유하면 곡의 개념이라고 했다.

음반 안에도 대표곡이 있고, 부수적인 곡들이 있는데 슬롯을 굳이 구분해서 하는 이유는 뭘까?

슬롯의 이름이 인체 모양이랑 굉장히 이름이 비슷하게 지어져 있다. 이렇게 슬롯별로 나눠서 관리한 다음에 나중에 애니메이션을 섞을 때, 상반신은 어떤 애니메이션을 틀어주고, 하반신은 다른 애니메이션을 틀어준다거나 할 수 있기 떄문이다.

 

코드로 보자.

애니메이션 몽타주를 실행하는 함수가 당연히 있으며, 애니메이션 몽타주를 설정해주고, 특이점은 Section은 어느 지점을 실행할지 구간을 의미한다고 했기때문에 첫 시작 구간인 Start를 넣어주었다.

 

 

댓글