스켈레탈 애니메이션(Skeletal Animation)은 관절체로 구성된 오브젝트의 움직임을 표현한 애니메이션을 말한다 언리얼 엔진에서 스켈레탈 애니메이션은 스켈레톤(Skeleton)에 등록되며 스켈레톤의 참조를 이용하면 해당 스켈레톤에 등록된 많은 애니메이션 중에서 상황에 따라서 특정 애니메이션을 선택하여 사용할 수 있다. 그러므로 스켈레탈 애니메이션을 화면에 보여주려면 반드시 스켈레톤(Skeleton)이 있어야 하며 캐릭터의 외형을 나타내는 스켈레탈 메시(Skeletal Mesh)도 반드시 필요하다 Skeleton은 뼈의 계층구조에 대한 정보만 있고 오브젝트를 표현하는 메시 정보는 가지고 있지 않다. Skeletal Mesh는 Skeleton(뼈의 계층구조 정보)을 적용하여 생성한 3D 메시를 말한다
언리얼 엔진을 설치하고 일인칭, 삼인칭 템플릿을 이용하여 프로젝트를 생성하면 엔진에서 제공하는 Skeleton, Skeletal Mesh 와 해당 스켈레탈 메시를 사용해서 만들어진 몇가지 스켈레탈 애니메이션이 제공된다.
블루프린트에서 스켈레탈 애니메이션을 화면에 출력하는 방법은 Play Animation 노드를 사용하는 것이 기본이다. 단순히 적절한 상황에서 특정 애니메이션을 보여주기만 한다면 그 이상의 수단은 필요 없을 것이다. 그러나 몇가지 애니메이션이 자연스럽게 연결되도록 보간(Interpolation)하는 방법을 제공하는 Blend Spaces 라는 수단도 있고 State Machine 을 사용하여 상태에 따라 다른 애니메이션을 선택하여 보여 줄 수도 있다. 또 Animation Montage를 이용하여 2가지 애니메이션을 동시에 실행하도록 혼합할 수도 있다
모든 스켈레탈 애니메이션의 실행을 위해서는 해당 스켈레텔 메시가 반드시 필요하며 Character를 상속한 클래스 블루프린트를 생성하고 Mesh 컴포넌트를 원하는 스켈레탈 메시로 지정해 주면 블루프린트 안에서 Mesh의 참조를 구할 수 있으므로 해당 Mesh에 등록된 모든 스켈레탈 애니메이션을 불러서 실행할 수가 있다.
여기서는 위에서 언급한 대로 Character를 상속한 클래스 블루프린트를 생성하고 Mesh 컴포넌트에 Animation Starter Pack에서 제공하는 SK_Skeleton 메시를 지정하는 방법에 대해서 알아본다
Animation Starter Pack을 다운로드 및 임포트했다면 콘텐츠 / AnimStarterPack / UE4_Mannequin / Mesh / 안에서 스켈레톤(UE4_Mannequin_Skeleton)과 스켈레탈 메시(SK_Mannequin)를 찾을 수 있다
Animation Starter Pack에 포함된 많은 애니메이션은 콘텐츠/AnimStarterPack 안에서 찾을 수 있다
일인칭 템플릿을 사용하여 새로운 프로젝트를 생성하고 [월드 세팅] / Game Mode / Game Mode Override : FirstPersonGameMode, Default Pawn Class : FirstPersonCharacter 으로 설정한다
CB의 적당한 폴더에서 마우스 우측 > 블루프린트 클래스 > 부모 클래스 선택 : Character > 블루프린트 이름: BP_Enemy_AI 등으로 지정
BP_Enemy_AI 를 더블클릭하여 에디터를 연다
에디터 왼쪽 컴포넌트 패널에서 Mesh 선택, 우측 [디테일] 뷰 / Mesh / Skeletal Mesh 항목에 Game/ AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin 선택
그 위에 있는 Animation / Animation Mode : Use Animation Asset 선택, Anim to Play : Idle_Rifle_Hip 선택, 툴바에서 [저장], [컴파일]
위와같이 설정하면 지정된 애니메이션이 뷰포트에서도 실행되고 있는 것을 확인할 수 있다
뷰포트 상의 캐릭터가 Capsule Component 의 위치와 일치하도록 캐릭터를 이동툴로 내려서 조정하고 캐릭터가 X축을 향하도록 회전툴을 사용하여 90도 회전한다
아래처럼 이미 AI Controller Class 항목에 AIController으로 설정된 상태이기 때문에 이 클래스에서는 AI 기능(Pawn Sensing, AI Move To 등)을 사용할 수가 있다.
컴포넌트 패널에서 CapsuleComponent 를 선택하고 우측 [디테일] 뷰 / Collision / 콜리전프리셋 : BlockAll 으로 설정
이벤트 항목에서 OnComponent Hit 의 초록색 버튼을 누른다
이벤트 그래프를 다음과 같이 작성한다. 캐릭터가 발사체(FirstPersonProjectile)를 맞으면 죽는 것처럼 쓰러지는 애님메이션(Death_Ironsights_1)이 실행되는 내용이다
지금까지 작성된 BP_Enem_AI 블루프린트를 CB에서 드래그하여 뷰포트에 배치하고 게임을 실행한 후 일인칭 캐릭터가 총을 조준하여 발사하도록 마우스 왼쪽 버튼을 누르면 적 캐릭터에 명중하면 쓰러지는 애니메이션이 실행되는 것을 확인할 수 있다