본문 바로가기

블루프린팅/17. 애니메이션 블루프린트

5부 추가도구 [17장 애니메이션 블루프린트] 애니메이션 개요

1. 시작 컨텐츠가 있는 삼인칭 템플릿을 사용해서 프로젝트를 만든다.

2. 플레이 버튼을 눌러 삼인칭 템플릿에 내장된 기본 게임플레이를 시도한다 .WASD키를 사용하여 플레이어를 이동하고 마우스를 움직여 주변을 둘러불 수 있다. 스페이스바를 눌러 캐릭터가 점프한다.

 

스켈레톤및 스켈레탈메시

언리얼에서 스켈레톤은 스켈레탈메시와는 별개의 에셋이다. 애니메이션이 스켈레톤에서 수행되기 때문에 애니메이션은 동일한 스켈레톤을 사용하는 다른 여러 스켈레탈 메시에서 공유할 수 있다. 

삼인칭 템플릿에서 사용하는 스켈레톤을 시각화해본다. 다음과 같은 폴더로 접근해 SK_Mannequin_Skeleton을 선택한다.(V5.2라서 그런가 교재와 폴더및 파일명이 달라 가장 비슷한 걸 골랐다)

왼쪽 패널에는 이 스켈리톤의 일부인 본의 계층 구조를 가진 스켈레톤 트리가 있다. 본을 선택하고 스켈레톤을 기준으로 본의 위치와회전을 조정할 수 있다.

애니메이션 블루프린트 만들기

1. 콘텐츠브라우저에서 추가 버튼을 클릭하고 애니메이션 하위 메뉴에서 애니메이션 블루프린트를 선택한다.

2.  팝업메뉴가 뜨면 적당한 Skeleton파일을 선택하고 Create한다.

3. 더블클릭해 에디터를 연다. 먼저 이벤트그래프를 분석해 본다.

이벤트그래프

창에는 이미 2개의 노드가 있다.

Blueprint Update Animation Event : 이 이벤트는 매 프레임 실행되며 변수를 업데이트할 수 있다. Delta Time X는 마지막 프레임 이후 경과된 시간의 양이다.

Try Get Pawn Owner : 이 함수는 애니메이션 블루프린트 인스턴스를 사용하는 Pawn또는 Character레퍼런스를 가져오려고 시도한다. 애니메이션에 사용할 캐릭터 데이터를 가져올 수 있다.

애니메이션에서 초기화를 수행해야 할 경우 Blueprint Initialize animation이벤트를 사용할 수 있다.

다음과 같이 Speed변수를 만들고 애니메이션 블루프린트 인스턴스를 사용하는 폰/캐릭터의 데이터를 사용해서 값을 업데이트해본다.

다음은 예제를 만드는 단계다.

1. 변수+ Speed라는 변수를 만들자 타입은 플로트

2. 다음과 같이 노드를 추가해 방금 만든 Speed변수에 폰의 속도벡터의 길이를 설정해보자

 

애님그래프

AnimGraph에서 노드를 사용해서 애니메이션 시퀀스및 블렌드 스페이스를 재생한다. 스테이트 머신을 만들어 애니메이션을 스테이트로 구성할 수도 잇다.

AnimGraph는 애니메이션 블루프린트의 변수에만 접근할 수 잇으므로 이벤트그래프를 사용해서 폰에서 업데이트된 값을 가져온다.

애니메이션 그래프의 마지막 노드는 최종 애니메이션 포즈이며, 애니메이션 그래프에서 노드를 사용해서 애니메이션 시퀀스및 블랜드 스페이스를 재생한다.

AnimGraph탭을 선택한다.

디테일패널 아래쪽 에셋브라우저가 있다. Run애니메이션을 선택

애니메이션 에셋을 끌어다 그래프의 OutputPose 앞에 놓고 연결해준뒤 컴파일 하면 동작을 확인할 수 있다.

맨위의 WalkRun과 같은 블렌드 애니메이션을 끌어다 놓고

다음과 같이 연결해준다

컴파일 해보면 걷지 않지만  Speed의 디폴트값을 디테일에서 200정도로 세팅하면 걷기 시작한다. 500정도로 높히면 뛰기시작한다.