Animation Starter Pack에 포함된 Skeleton Mesh와 애니메이션을 이용하여 상황에 따라 다른 애니메이션을 보여주는 예제이다


Skeletal Animation은 Skeleton Mesh에 연결되어 있으므로 Skeleton Mesh를 클래스 블루프린트로 전환하여 Mesh 콤포넌트를 타겟으로 하여 Play Animation 노드를 사용하면 해당 스켈레톤에 연결된 모든 애니메이션을 플레이할 수 있다. 그러므로 상황에 따른 적절한 애니메이션을 선택하여 실행할 수가 있다


Mesh의 Collision Type을 Ragdoll 이 아닌 NoCollision으로  설정하였고 그 대신 Death_Ironsights 애니메이션을 사용하여 좀더 실감나게 할 수 있다.


AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin 위에서 마우스 우측 > 애셋액션 > 다음을 사용하여 블루프린트 생성... 을 선택하면 블루프린트가 생성되면서 SK_Mannequin 스켈레톤 메시가 블루프린트내의 Mesh 콤포넌트로 포함되면서 블루프린트가 생성된다. 이 Mesh를 타겟으로 하여 Play Animation 노드를 사용하면 애니메이션을 실행할 수 있다


그리고 이미 스켈레톤 메시를 이용하여 블루프린트 클래스가 생성되어 있다 AnimStarterPack / Ue4ASP_Character 가 그것이므로 이 클래스를 복제하여 그래프 내용을 모두 지우고 사용하면 된다


다음은 SK_Mannequin 과 Pawn Sensing을 사용하여 플레이어 캐릭터를 발견한 경우에 달려오다가 플레이어 캐릭터가 총을 쏘면 쓰러지는 내용이다.

사용된 애니메이션은 3가지인데, Idle_Rifle_Hip, Jog_Fwd_Rifle, Death_Ironsights 등이다


Floor 에 Nav Mesh Bounds Volumn을 설정해야 AI 캐릭터가 움직인다는 것도 주의해야 한다


1. Skeleton Mesh 파일을 찾아서 클래스 블루프린트를 생성한다


2. 생성된 블루프린트를 더블클릭하여 에디터를 열고 컴포넌트 패널의 Mesh를 선택한다


3. 우측 [디테일] 뷰 / Animation / Anim to Play : Idle_Rifle_Hip(총을 허리에 밀착한 자세의 애니메이션) 선택 혹은,

Animation Mode : Use Animation Blueprint를 선택하고 Anim Class : UE4ASP_HeroTPP_AnimBlueprint_C를 선택해도 된다


4. free3d.com 등의 사이트에서 소총 모델을 다운로드하여 압축을 해제하고 fbx 파일을 임포트하여 CB에 준비한다

fbx.zip

4-2. 임포트할 때 머티리얼과 텍스쳐가 임포된 경우에는 머티리얼을 더블클릭하여 머티리얼 에디터를 열고 포함된 텍스쳐를 적용해 주고 머티리얼을 소총 모델에 적용해준다


4-3. 에디터에서 애니메이션이 진행되는 중에는 마네킹에 소총을 결합하기가 어려울 수 있으므로 [컴포넌트] 패널에서 Mesh를 선택하고 우측 [디테일] 뷰 / Animation / Pause Anims 를 선택하여 애니메이션을 중지하고 작업을 하면 된다. 작업 후에는 반드시 선택을 해제해야만 실제 뷰포트에 놓았을 때 애니메이션이 작동한다


5. AnimStarterPack / Ue4ASP_Character(스켈레톤 메시)를 더블클릭하여 [스켈레톤] 탭을 누르고 [스켈레톤 트리] 를 선택하여 hand_l 노드를 찾아서 마우스 우측을 누르고 [소켓 추가]를 선택한다


6. 소켓 이름을 적절히 지정하고 [저장]을 누른 후 에디터를 닫는다


7. 스켈레톤 메시로부터 생성된 클래스 블루프린트를 더블클릭하여 열고 [컴포넌트] 패널 안으로 다운로드하여 임포트한 소총 fbx 를 드래그하여 놓는다


8. 컴포넌트로 추가된 소총을 선택하고 우측 [디테일] 뷰 / 소켓 / 부모소켓 : 추가된 소켓의 이름을 찾아 지정하고 트랜스폼 항목에서 x:0,  y:0,  z:0으로 설정하면 소총이 소켓의 위치에 놓인다


9. 스케일, 이동, 회전 툴을 사용하여 소총이 마네킹의 자세에 적절히 어울리도록 조정한다

그 외에 Pawn Sensing 컴포넌트를 추가하고 Floor에는 Nav Mesh Bounds Volumn 을 설정하는 것도 잊지 말아야 한다


완성된 블루프린트를 뷰포트에 드래그하여 놓고 게임을 실행하면 소총을 든 마네킹이 플레이어 캐릭터를 발견한 경우 달려오는 것을 확인할 수 있고, 플레이어가 총을 쏘면 실감나게 쓰러지는 것도 볼 수 있다





Posted by cwisky

Animation Blueprint에서 다른 액터의 참조 구하는 예




BP_Event 클래스의 내용


Posted by cwisky

언리얼 엔진에서 Blend Space는 2개 이상의 실행 속도가 다른 애니메이션을 연결하여 중간 속도의 애니메이션을 만들어 낼 수 있는 기술이다.

예를 들어, ASP에 포함된 애니메이션 시퀀스에는 Idle, Jog, Sprint 등의 애니메이션은 있지만 Idle과 Jog 사이의 실행속도를 가진 Walk 애니메이션은 포함되어 있지 않으므로 Walk 속도 애니메이션이 필요하다면 Blend Space 방법을 이용하여 Idle, Jog 애니메이션을 키 프레임으로 사용하여 그 중간 속도의 애니메이션을 생성해 낼 수 있다.


Blend Space 생성 절차

CB 에서 마우스 우측 > 애니메이션 > 블렌드 스페이스 1D > 파일 이름을 BS_EnemyWalk 등으로 지정

생성된  BS_EnemyWalk 을 더블클릭하여 페르소나 애디터를 연다




가로축의 이름을 Speed 등으로 지정한다

이 때 입력된 이름은 완성 후에 이 애니메이션을 사용할 때 노드의 입력핀으로 설정되어 임의의 값을 입력할 수 있다



키 프레임으로 사용될 애니메이션 시퀀스 설정하기

Blend Space 편집 창의 0.0 지점에 [애셋브라우저] 에 있는 애니메이션 시퀀스 중에서 정지한 상태로 있는  Idle_Rifle_Hip 을 드래그하여 놓고, 중간 지점에는 Jog_Fwd_Rifle, 100.0 지점에는 Sprint_FWD_Rifle 를 드래그하여 놓는다



중간단계 애니메이션 미리보기

중간에 있는 초록색 핸들을 마우스로 클릭하여 좌우로 드래그해보면 미리보기 화면에 중간단계의 애니메이션이 실행된다. 툴바에서 [저장] 버튼을 누르면 Blend Space 가 완성되고 애니메이션 블루프린트에서 사용할 수 있는 상태가 된다



애니메이션 블루프린트에서 블렌드 스페이스 애니메이션 사용하기

애니메이션 블루프린트에서 특정 스테이트에 앞에서 작성한 BS_EnemyWalk 를 드래그하여 넣는다



해당 스테이트를 더블클릭하여 들어가서 아래와 같이 적당한 Speed 값을 입력해주면 해당하는 속도의 애니메이션이 실행되는 것을 확인할 수 있다. 물론 애니메이션 블루프린트는 특정 Skeletal Mesh에 설정해주고 게임을 실행해보면 애니메이션이 작동하는 것을 확인할 수 있다


애니메이션 블루프린트에서 사용된 블렌드 스페이스 애니메이션


Posted by cwisky