레이어 애니메이션 사용하기

애니메이션끼리 블렌딩하는 방법, 여기서는 이동하면서 동시에 무기를 발사하는 캐릭터 만드는 법에 대해 알아봅니다.

Windows
MacOS
Linux

애니메이션 블렌딩이란, 개념상 단순히 하나의 캐릭터 또는 스켈레탈 메시에 둘 이상의 애니메이션이 부드럽게 전환되도록 만드는 것을 말합니다. 언리얼 엔진 4 에는 그러한 블렌딩을 적용할 수 있는 방법이 여러가지 있는데, 블렌드 스페이스 를 통하거나, 애디티브 메서드 즉 말 그대로 가중 편향치나 알파값에 따라 두 애니메이션을 조합하거나, 심지어 기존 포즈를 직접 덮어쓰는 방법도 있습니다.

애니메이션을 스켈레톤 내 특정 본과 그 자손 전부에 직접 전송할 수도 있습니다. 예를 들어, 캐릭터가 달리는 애니메이션으로 시작했다가, 캐릭터 상체에 발사 애니메이션을 선택적으로 적용할 수 있습니다. 최종 결과는 아래 비디오와 비슷하게 달리면서 동시에 발사할 수 있는 캐릭터가 될 것입니다.

1 - 블렌딩할 애니메이션 구성

여기서는 기본 플레이어 캐릭터를 변경하고 이동 애니메이션 위에 레이어로 입힐 애니메이션에 대한 애님 몽타주를 생성합니다.

여기서는 블루프린트 삼인칭 템플릿 프로젝트에 Animation Starter Pack 을 추가하여 사용하고 있습니다:

AnimationAssetPack.png

Animation Starter Pack 은 에픽 런처의 마켓플레이스 탭에서 무료로 받을 수 있습니다.

  1. 프로젝트를 열고, 콘텐츠 브라우저 에서 Content/ThirdPersonBP/Blueprints 폴더 아래 ThirdPersonGameMode 블루프린트를 엽니다.

  2. Default Pawn Class 아래 드롭다운 메뉴를 클릭한 다음 Ue4ASP_Character 를 선택합니다.

    Animations1.png

  3. 컴파일, 저장 후 블루프린트를 닫습니다.

  4. 콘텐츠 브라우저 에서 Content/AnimStarterPack 폴더를 엽니다.

  5. Fire_Shotgun_Ironsights 애니메이션에 우클릭 한 다음 생성 을 선택하고 애님 몽타주 를 생성합니다.

    Animations2.png

    위와 같이 검색창에 Fire 라 입력하여 창에 필터를 적용할 수 있습니다.

  6. 새로 만든 애님 몽타주를 열고 확대경 아이콘을 클릭합니다.

    Animations3.png

    그러면 애님 슬롯 매니저 가 열리며, 여기서 슬롯 을 생성한 뒤 이름으로 호출하면 블렌딩하는 데 사용할 수 있습니다.

  7. 슬롯 추가 버튼을 클릭하고, 슬롯 이름을 UpperBody 로 한 다음 저장 합니다.

    Animations4.png

    여기서 이름을 UpperBody 라 하기는 했지만, 아직 그 부분을 직접 타기팅한 것은 아니며, 그저 타기팅할 부분을 알기 위해 이름을 할당한 것입니다.

  8. Montage Group 섹션 안의 드롭다운을 클릭한 다음 DefaultGroup.UpperBody 로 변경하고 창을 닫습니다.

    Animations5.png

    이 몽타주를 DefaultGroup.UpperBody 에 연동시켰으니, 슬롯을 호출하여 재생시키는 것이 가능합니다.

다음 섹션에서는 기본 플레이어 캐릭터를 변경하고 무기 발사 시점을 알아내기 위한 조정을 가하도록 하겠습니다.

2 - 캐릭터 블루프린트 업데이트

여기서는 캐릭터 블루프린트에서 약간의 스크립트 작업을 통해 무기를 발사하고 있다고 우리 블루프린트에 신호를 보낼 수 있도록 하겠습니다.

  1. 콘텐츠 브라우저 안에서 Content/AnimStarterPack 아래 Ue4ASP_Character 블루프린트를 엽니다.

  2. Crouching 섹션을 찾은 다음 (경고! 가 있는) InputAction Crouch 이벤트 사인을 삭제합니다.

    Animations6.png

    이 노드에는 경고가 있는데, 프로젝트가 InputAction 이벤트 "Crouch" 를 사용하도록 구성되지 않았기 때문입니다.

  3. 그래프에 우클릭 한 다음 C 키 이벤트를 추가하고 아래와 같이 연결합니다.

    Animations7.png

    Crouch 동작을 C 키에 연동시켰으나, 이 입력은 원하는 대로 바꿔도 됩니다.

  4. 내 블루프린트 창에서 변수 추가 버튼을 눌러 Boolean 변수를 생성하고 Fire Button Down 이라 합니다.

    Animations8.png

  5. 그래프에 우클릭 한 다음 Left Mouse Button 키 이벤트를 추가합니다.

  6. Alt 키를 누른 채 Fire Button Down 변수를 그래프에 끌어 놓아 Set 노드를 만듭니다.

  7. 기존 단계를 반복(하거나 Set 노드를 복사)하고 아래와 같이 연결합니다.

    Animations9.png

    Left Mouse ButtonPressed (왼쪽 마우스 버튼이 눌렸으)면 Fire Button DownTrue 이고, Released (떼었으)면 False 입니다.

  8. 컴포넌트 창에서 CapsuleComponent 를 선택한 뒤, 디테일 패널에서 Hidden in Game (게임에서 숨김) 옵션을 체크합니다.

    HideCapsule.png

    그러면 캡슐 콜리전의 디버그 표시가 꺼집니다.

  9. 컴파일, 저장 후 블루프린트를 닫습니다.

이제 웅크리거나 무기를 발사할 때 애니메이션 블루프린트에 신호를 보낼 수 있도록 하는 구성이 완료되었습니다. 다음 단계에서는, 애니메이션 블루프린트 내 애니메이션 그래프에서 애님 몽타주와 일반 동작 애니메이션이 어우러지도록 블렌딩 처리 구성을 해주도록 하겠습니다.

3 - 애님 그래프 구성

여기서는 애님 몽타주와 스테이트 머신에서의 동작 포즈 블렌딩 처리를 위한 애님 그래프 구성 작업을 해보겠습니다.

  1. Content/AnimStarterPackUE4ASP_HeroTPP_AnimBlueprint 애니메이션 블루프린트를 엽니다.

  2. 내 블루프린트 창에서 애님 그래프 를 엽니다.

    Animations9b.png

  3. Locomotion 스테이트 머신을 끌어 놓은 다음 New Save cached pose 를 검색 추가합니다.

    Animations10.png

    여기서 Locomotion State Machine 의 결과 포즈를 얻어 다른 데서 사용할 수 있는 캐시 포즈에 저장합니다.

  4. 노드에서 F2 키를 눌러 캐시 포즈에 LocomotionCache 식으로 이름을 짓습니다.

    Animations11.png

  5. 그래프에 우클릭 한 다음 Use cached pose 'LocomotionCache' (또는 별도로 지은 이름)을 추가합니다.

    Animations12.png

  6. Use cached pose 노드를 끌어 놓은 다음 Layered blend per bone 노드를 검색 추가합니다.

    Animations13.png

    Layered Blend Per Bone 노드는 스켈레톤의 지정된 본에서 애니메이션을 블렌딩할 수 있도록 해 줍니다.

  7. Use cached pose 'LocomotionCache' 노드를 복사/붙여넣은 다음, 거기서 끌어놓고 Slot 'DefaultSlot' 노드를 추가합니다.

    Animations14.png

  8. Slot 노드에 대한 Settings 에서, 드롭다운 메뉴를 클릭한 다음 DefaultGroup.UpperBody 를 선택합니다.

    Animations15.png

    이 슬롯을 사용하는 애니메이션 몽타주가 재생 호출되면, 애님 그래프 안에서 호출되게 됩니다.

  9. SlotLayered blend per bone 노드의 Blend Poses 0 핀에 연결한 다음, 그 출력을 결과 에 연결하고 컴파일 합니다.

    Animations16.png

우리 애님 그래프가 완료되었으나, 여전히 Layered blend per bone 노드에 몇 가지 세팅을 변경해 주는 마무리 작업이 남았습니다.

4 - 블렌드 세팅 마무리

이번 마지막 단계에서는 블렌딩된 애니메이션을 레이어로 놓는 방법 및 블렌딩 시작 본 위치를 정의합니다.

  1. UE4ASP_HeroTPP_AnimBlueprint애님 그래프 안에서, Layered blend per bone 노드에 클릭한 다음 Layer Setup 섹션을 펼치고 + 부호를 클릭합니다.

    Animations17.png

  2. Bone Name 아래 spine_01 을 입력한 다음 Blend Depth1 로 하고 Mesh Space Rotation Blend 를 체크합니다.

    Animations18.png

    이 세팅으로 spine_01 본부터 시작해서 발사 애님 몽타주를 우리 스켈레톤에 블렌딩할 수 있습니다.

  3. 내 블루프린트 창에서 이벤트 그래프 를 엽니다.

    Animations18b.png

  4. Cast To Ue4ASP_Character 노드의 As Ue4ASP Character 핀을 끌어 놓은 다음 Get Fire Button Down 노드를 추가합니다.

    Animations19.png

    그러면 플레이어가 버튼을 누르고 있는지 아닌지 알려줍니다.

  5. B 키를 누르고 그래프에 좌클릭 하여 Branch (분기) 노드를 추가한 다음 Set Crouching 노드에 연결합니다.

    Animations20.png

    Condition 에는 FireButtonDown 핀을 꽂습니다.

  6. 그래프에 우클릭 한 다음 Montage Is Playing 노드를 추가하고 Fire_Shotgun_Ironsights_Montage 를 할당합니다.

    Animations22.png

  7. Montage Is Playing 노드의 Return Value 를 끌어 놓고 Branch (분기)를 추가합니다.

  8. 5 단계에서의 Branch (분기)를 아래와 같이 새로운 Branch (분기)에 연결하고 Montage Play 노드를 추가, Montage to Play 는 우리 몽타주로 설정합니다.

    Animations23.png

    그러면 몽타주가 현재 재생중인지 검사한 다음, 그렇다면 재생하지 않습니다 (재생중이지 않으면 몽타주를 재생합니다).

  9. 컴파일, 저장블루프린트 를 닫고 레벨에 있는 기존의 ThirdPersonCharacter 를 지웁니다.

    Animations24.png

    그러면 레벨에 배치된 캐릭터가 아닌 게임 모드에 정의된 캐릭터를 사용할 수 있게 됩니다.

  10. 에디터에서 플레이 합니다.

최종 결과

이제 왼쪽 마우스 버튼 을 누르면 캐릭터에 발사 애님 몽타주가 재생되는 것이 보일 것입니다. 발사하면서 돌아다닐 수도 있고, 심지어 발사하면서 (C 키를 눌러) 웅크리는 것도 가능합니다. 이 방법을 사용하여 근접 공격이나 재장전 애니메이션은 물론 돌아다니면서 하고자 하는 어떤 애니메이션도 재생할 수 있습니다.

앞서 만들어 애니메이션 몽타주에 할당한 UpperBody 슬롯은 다른 애니메이션 몽타주에서도 할당할 수 있습니다. 애님 그래프에는 할당된 Slot 노드가 있으므로, 그 할당된 슬롯이 있는 애니메이션 몽타주 재생 호출을 할 때마다 정의된 세팅으로 재생될 것입니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼