Choose your operating system:
Windows
macOS
Linux
애니메이션 블렌딩이란, 개념상 단순히 하나의 캐릭터 또는 스켈레탈 메시에 둘 이상의 애니메이션이 부드럽게 전환되도록 만드는 것을 말합니다. 언리얼 엔진 4 에는 그러한 블렌딩을 적용할 수 있는 방법이 여러가지 있는데, 블렌드 스페이스 를 통하거나, 애디티브 메서드 즉 말 그대로 가중 편향치나 알파값에 따라 두 애니메이션을 조합하거나, 심지어 기존 포즈를 직접 덮어쓰는 방법도 있습니다.
애니메이션을 스켈레톤 내 특정 본과 그 자손 전부에 직접 전송할 수도 있습니다. 예를 들어, 캐릭터가 달리는 애니메이션으로 시작했다가, 캐릭터 상체에 발사 애니메이션을 선택적으로 적용할 수 있습니다. 최종 결과는 아래 비디오와 비슷하게 달리면서 동시에 발사할 수 있는 캐릭터가 될 것입니다.
1 - 블렌딩할 애니메이션 구성
여기서는 기본 플레이어 캐릭터를 변경하고 이동 애니메이션 위에 레이어로 입힐 애니메이션에 대한 애님 몽타주를 생성합니다.
여기서는 블루프린트 삼인칭 템플릿 프로젝트에 Animation Starter Pack 을 추가하여 사용하고 있습니다:
Animation Starter Pack 은 에픽 런처의 마켓플레이스 탭에서 무료로 받을 수 있습니다.
-
프로젝트를 열고, 콘텐츠 브라우저 에서 Content/ThirdPersonBP/Blueprints 폴더 아래 ThirdPersonGameMode 블루프린트를 엽니다.
-
Default Pawn Class 아래 드롭다운 메뉴를 클릭한 다음 Ue4ASP_Character 를 선택합니다.
-
컴파일 , 저장 후 블루프린트를 닫습니다.
-
콘텐츠 브라우저 에서 Content/AnimStarterPack 폴더를 엽니다.
-
Fire_Shotgun_Ironsights 애니메이션에 우클릭 한 다음 생성 을 선택하고 애님 몽타주 를 생성합니다.
위와 같이 검색창에 Fire 라 입력하여 창에 필터를 적용할 수 있습니다.
-
새로 만든 애님 몽타주를 열고 확대경 아이콘을 클릭합니다.
그러면 애님 슬롯 매니저 가 열리며, 여기서 슬롯 을 생성한 뒤 이름으로 호출하면 블렌딩하는 데 사용할 수 있습니다.
-
슬롯 추가 버튼을 클릭하고, 슬롯 이름을 UpperBody 로 한 다음 저장 합니다.
여기서 이름을 UpperBody 라 하기는 했지만, 아직 그 부분을 직접 타기팅한 것은 아니며, 그저 타기팅할 부분을 알기 위해 이름을 할당한 것입니다.
-
Montage Group 섹션 안의 드롭다운을 클릭한 다음 DefaultGroup.UpperBody 로 변경하고 창을 닫습니다.
이 몽타주를 DefaultGroup.UpperBody 에 연동시켰으니, 슬롯을 호출하여 재생시키는 것이 가능합니다.
다음 섹션에서는 기본 플레이어 캐릭터를 변경하고 무기 발사 시점을 알아내기 위한 조정을 가하도록 하겠습니다.
2 - 캐릭터 블루프린트 업데이트
여기서는 캐릭터 블루프린트에서 약간의 스크립트 작업을 통해 무기를 발사하고 있다고 우리 블루프린트에 신호를 보낼 수 있도록 하겠습니다.
-
콘텐츠 브라우저 안에서 Content/AnimStarterPack 아래 Ue4ASP_Character 블루프린트를 엽니다.
-
Crouching 섹션을 찾은 다음 (경고! 가 있는) InputAction Crouch 이벤트 사인을 삭제합니다.
이 노드에는 경고가 있는데, 프로젝트가 InputAction 이벤트 "Crouch" 를 사용하도록 구성되지 않았기 때문입니다.
-
그래프에 우클릭 한 다음 C 키 이벤트를 추가하고 아래와 같이 연결합니다.
Crouch 동작을 C 키에 연동시켰으나, 이 입력은 원하는 대로 바꿔도 됩니다.
-
내 블루프린트 창에서 변수 추가 버튼을 눌러 Boolean 변수를 생성하고 Fire Button Down 이라 합니다.
-
그래프에 우클릭 한 다음 Left Mouse Button 키 이벤트를 추가합니다.
-
Alt 키를 누른 채 Fire Button Down 변수를 그래프에 끌어 놓아 Set 노드를 만듭니다.
-
기존 단계를 반복(하거나 Set 노드를 복사)하고 아래와 같이 연결합니다.
Left Mouse Button 이 Pressed (왼쪽 마우스 버튼이 눌렸으)면 Fire Button Down 이 True 이고, Released (떼었으)면 False 입니다.
-
컴포넌트 창에서 CapsuleComponent 를 선택한 뒤, 디테일 패널에서 Hidden in Game (게임에서 숨김) 옵션을 체크합니다.
그러면 캡슐 콜리전의 디버그 표시가 꺼집니다.
-
컴파일 , 저장 후 블루프린트를 닫습니다.
이제 웅크리거나 무기를 발사할 때 애니메이션 블루프린트에 신호를 보낼 수 있도록 하는 구성이 완료되었습니다. 다음 단계에서는, 애니메이션 블루프린트 내 애니메이션 그래프에서 애님 몽타주와 일반 동작 애니메이션이 어우러지도록 블렌딩 처리 구성을 해주도록 하겠습니다.
3 - 애님 그래프 구성
여기서는 애님 몽타주와 스테이트 머신에서의 동작 포즈 블렌딩 처리를 위한 애님 그래프 구성 작업을 해보겠습니다.
-
Content/AnimStarterPack 의 UE4ASP_HeroTPP_AnimBlueprint 애니메이션 블루프린트를 엽니다.
-
내 블루프린트 창에서 애님 그래프 를 엽니다.
-
Locomotion 스테이트 머신을 끌어 놓은 다음 New Save cached pose 를 검색 추가합니다.
여기서 Locomotion State Machine 의 결과 포즈를 얻어 다른 데서 사용할 수 있는 캐시 포즈에 저장합니다.
-
노드에서 F2 키를 눌러 캐시 포즈에 LocomotionCache 식으로 이름을 짓습니다.
-
그래프에 우클릭 한 다음 Use cached pose 'LocomotionCache' (또는 별도로 지은 이름)을 추가합니다.
-
Use cached pose 노드를 끌어 놓은 다음 Layered blend per bone 노드를 검색 추가합니다.
Layered Blend Per Bone 노드는 스켈레톤의 지정된 본에서 애니메이션을 블렌딩할 수 있도록 해 줍니다.
-
Use cached pose 'LocomotionCache' 노드를 복사/붙여넣은 다음, 거기서 끌어놓고 Slot 'DefaultSlot' 노드를 추가합니다.
-
Slot 노드에 대한 Settings 에서, 드롭다운 메뉴를 클릭한 다음 DefaultGroup.UpperBody 를 선택합니다.
이 슬롯을 사용하는 애니메이션 몽타주가 재생 호출되면, 애님 그래프 안에서 호출되게 됩니다.
-
Slot 을 Layered blend per bone 노드의 Blend Poses 0 핀에 연결한 다음, 그 출력을 결과 에 연결하고 컴파일 합니다.
우리 애님 그래프가 완료되었으나, 여전히 Layered blend per bone 노드에 몇 가지 세팅을 변경해 주는 마무리 작업이 남았습니다.
4 - 블렌드 세팅 마무리
이번 마지막 단계에서는 블렌딩된 애니메이션을 레이어로 놓는 방법 및 블렌딩 시작 본 위치를 정의합니다.
-
UE4ASP_HeroTPP_AnimBlueprint 의 애님 그래프 안에서, Layered blend per bone 노드에 클릭한 다음 Layer Setup 섹션을 펼치고 + 부호를 클릭합니다.
-
Bone Name 아래 spine_01 을 입력한 다음 Blend Depth 를 1 로 하고 Mesh Space Rotation Blend 를 체크합니다.
이 세팅으로 spine_01 본부터 시작해서 발사 애님 몽타주를 우리 스켈레톤에 블렌딩할 수 있습니다.
-
내 블루프린트 창에서 이벤트 그래프 를 엽니다.
-
Cast To Ue4ASP_Character 노드의 As Ue4ASP Character 핀을 끌어 놓은 다음 Get Fire Button Down 노드를 추가합니다.
그러면 플레이어가 버튼을 누르고 있는지 아닌지 알려줍니다.
-
B 키를 누르고 그래프에 좌클릭 하여 Branch (분기) 노드를 추가한 다음 Set Crouching 노드에 연결합니다.
Condition 에는 FireButtonDown 핀을 꽂습니다.
-
그래프에 우클릭 한 다음 Montage Is Playing 노드를 추가하고 Fire_Shotgun_Ironsights_Montage 를 할당합니다.
-
Montage Is Playing 노드의 Return Value 를 끌어 놓고 Branch (분기)를 추가합니다.
-
5 단계에서의 Branch (분기)를 아래와 같이 새로운 Branch (분기)에 연결하고 Montage Play 노드를 추가, Montage to Play 는 우리 몽타주로 설정합니다.
그러면 몽타주가 현재 재생중인지 검사한 다음, 그렇다면 재생하지 않습니다 (재생중이지 않으면 몽타주를 재생합니다).
-
컴파일 , 저장 후 블루프린트 를 닫고 레벨에 있는 기존의 ThirdPersonCharacter 를 지웁니다.
그러면 레벨에 배치된 캐릭터가 아닌 게임 모드에 정의된 캐릭터를 사용할 수 있게 됩니다.
-
에디터에서 플레이 합니다.
최종 결과
이제 왼쪽 마우스 버튼 을 누르면 캐릭터에 발사 애님 몽타주가 재생되는 것이 보일 것입니다. 발사하면서 돌아다닐 수도 있고, 심지어 발사하면서 ( C 키를 눌러) 웅크리는 것도 가능합니다. 이 방법을 사용하여 근접 공격이나 재장전 애니메이션은 물론 돌아다니면서 하고자 하는 어떤 애니메이션도 재생할 수 있습니다.
앞서 만들어 애니메이션 몽타주에 할당한 UpperBody 슬롯은 다른 애니메이션 몽타주에서도 할당할 수 있습니다. 애님 그래프에는 할당된 Slot 노드가 있으므로, 그 할당된 슬롯이 있는 애니메이션 몽타주 재생 호출을 할 때마다 정의된 세팅으로 재생될 것입니다.