내일배움캠프 145일차 - 최종프로젝트 35일차: 애님몽타주의 슬롯을 이용한 상·하반신 애니메이션 분리 재생

애님몽타주의 슬롯을 이용한 상·하반신 애니메이션 분리 재생

일반적으로 연속되는 애니메이션을 재생할 때는 State Machine을 사용하지만, 단발성 애니메이션을 재생할 때에는 애님 몽타주를 사용하게 된다. 애님 몽타주는 스켈레탈 메시 내에 저장된 애님 슬롯을 통해 재생하는데, ABP(애니메이션 블루프린트)에서 애님 슬롯을 노드로 할당하여 재생할 수 있다.

예를 들어, 기존 State Machine을 통해 애니메이션을 출력하는데, 중간에 DefaultSlot을 노드로 할당할 경우, 몽타주 재생 시 DefaultSlot에 할당되었던 애님 몽타주가 State Machine으로 출력된 애니메이션을 오버라이드한다는 것이다.

State Machine의 애니메이션 포즈를 애님 몽타주 슬롯으로 덮어 씌울 수 있다.

나는 여기서 상반신만 몽타주를 재생할 예정이기 때문에 애님 몽타주 슬롯의 이름을 UpperBody로 고쳐 쓰도록 한다. (상반신만 움직일 몽타주 슬롯이라는 의미)

Layered blend per bone 노드를 활용한 상/하반신 애니메이션 별도재생

최종 애니메이션을 출력하기 전에 하반신 전용 애니메이션을 생성하도록 한다.

Layered blend per bone을 사용하면 지정한 본 부터 애니메이션을 추가로 담을 수 있게 된다. 해당 노드에 대한 자세한 사용법은 다음과 같다.

분기 필터로 지정된 본 (녹색), 해당 분기의 영향을 받는 본 (하얀색)

Layered blend per bone 선택 시 디테일 창에서 분기 필터를 지정할 수 있게 되는데, 스켈레탈 메시의 원하는 본을 지정하면 해당 본부터 노드의 영향을 받게 된다. 지정 본이 1단계 본, 자식 본으로 내려갈 수록 단계가 올라갈 때, 뎁스 블렌드에 따라 받는 영향은 다음과 같다.

뎁스 블렌드 [0]: 기본값. 지정 본을 포함한 모든 하위 본에게 가중치 1 적용. (애니메이션을 완전히 따라감)

뎁스 블렌드 [양수 n]: (1단계 본)지정 본 가중치 1/n부터 n단계 본 및 이후 하위 본 가중 치 n/n = 1 까지 점진적으로 증가한다. (예: Pelvis부터 뎁스 블렌드 3일때, Pelvis = 1/3, Spine01 = 2/3, Spine 02 = 1)

뎁스 블렌드 [음수 n]: 웨이트가 -1에 가까울 수록 Base포즈를 선호한다. (1단계 본) 지정 본 가중치 -1/n부터 n단계 본 및 이후 하위 본 가중치 -n/n까지 점진적으로 감소한다.

웨이트 적용 순서는 분기 필터의 인덱스 순서를 따른다.

적용 결과

위 본 블렌딩의 과정을 통해, 걷는 애니메이션을 하반신에, 서서 손을 드는 애니메이션을 상반신에 적용하면 다음과 같은 결과를 얻을 수 있다.

영상 애니메이션 순서
① 서서 손을 드는 애니메이션
② 걷는 애니메이션
③ 상·하반신에 1, 2번을 본 블렌딩한 애니메이션

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁