'Skeletal Animation/Socket, Rifle Attach'에 해당되는 글 1건

  1. 2017.09.23 Socket을 이용하여 캐릭터에게 총을 쥐어 주자

언리얼 엔진의 Skeleton 에 Socket을 추가하고 Skeletal Mesh를 참조하는 클래스 블루프린트에서 Socket에 총 모델을 연결하기


이전의 내용을 이해한 후에 여기를 참조해야 제대로 이해할 수 있습니다

이전의 내용 보기


특정 Skeleton을 이용하여 생성된 기본 캐릭터 모델(Skeletal Mesh)이 있고 그 모델에 다른 모델을 부착하려는 경우에는 Socket을 Skeleton에 추가해야 한다. 추가된 소켓에 무기나 다른 모델을 부착하려면 해당 메시를 참조하는 블루프린트에서 컴포넌트를 추가하는 방법을 사용할 수 있다.


여기서는 앞장에서 생성한 블루프린트를 사용하여 그 안에서 참조하는 Skeletal Mesh에 소총 모델을 부착하여 애니메이션과 함께 움직이도록 설정하려고 한다


준비물

Skeleton : Animation Starter Pack에 포함되어 있는 UE4_Mannequin_Skeleton

Skeletal Mesh : Animation Starter Pack에 포함되어 있는 SK_Mannequin

클래스 블루프린트 : 앞장에서 생성된 스켈레탈 메시를 참조하는 클래스 블루프린트

소총 모델 : free3d.com 등에서 배포하는 무료 모델 

fbx.zip



Skeleton파일을 찾아 더블클릭하여 페르소나 에디터를 연다

사용할 Skeleton파일이 저자된 곳은 다음과 같다

콘텐츠/AnimStarterPack/UE4_Mannequin/Mesh/UE4_Mannequin_Skeleton

스켈레톤 파일을 더블클릭하여 페르소나 에디터를 열고 아래의 그림과 같이 소켓을 추가한다. 아래의 그림에서는 왼손의 뼈에 해당하는 hand_l 에 소켓을 추가하고 있다


소켓의 이름은 자동으로 본의 이름을 따서 [hand_l소켓]으로 붙여진다

툴바에서 [저장] 버튼을 누르고 에디터를 닫는다


앞장에서 생성한 BP_Enemy_AI 클래스 블루프린트를 더블클릭하여 연다. 이 클래스는 위에서 소켓이 추가된 바로 그 Skeleton을 적용한 Skeletal Mesh의 참조를 사용하고 있으므로 소켓에 접속할 수가 있다


CB에서 소총 모델을 드래그하여 컴포넌트 패널에 있는 Mesh의 하위 컴포넌트가 되도록 놓고 우측 [디테일] 뷰 / 소켓 / 부모소켓 : [hand_l소켓] 으로 설정한다. 이 때 중요한 점은 소켓이 추가된 Mesh의 하위 컴포넌트가 되도록 설정해야 한다는 것이다. 그래야만 부모 소켓 항목에서 소켓을 선택할 수 있게 된다


추가된 소총모델을 선택하고 우측 [디테일] 뷰 /트랜스폼/ 에서 위치를 0, 0, 0 으로 설정하면 부모소켓의 위치에 소총모델이 위치하게 된다. 소총의 크기가 캐릭터에 비해서 너무 작기 때문에 스케일 툴을 이용하여 크기를 조정하고 소총모델을 회전하여 총구가 앞으로 오도록 설정한다. 이때 에디터 뷰포트에서 애니메이션이 실행 중이면 소총의 위치를 설정하기가 어려우므로 컴포넌트 패널에서 Mesh를 선택하고 우측 [디테일] 뷰 / Animation / Pause Anims 를 선택하여 애니메이션을 일시중지하고 소총의 위치를 설정한 다음에 Pause Anims 선택을 해제하면 된다. 실수로 Pause Anims를 선택한 상태로 게임을 실행하면 애니메이션이 실행되지 않는다

위와 같이 설정하고 Pause Anims 선택을 해제하면 뷰포트 상에서 지정된 애니메이션이 실행될 때 캐릭터의 움직임을 따라서 소총도 자연스럽게 따라 움직이는 것을 확인할 수 있다


캐릭터의 자세를 따라 소총이 따라서 움직이는지 확인하기 위해서 [이벤트 그래프]에 다음과 같은 간단한 내용으로 테스트해 본다. 적용해본 애니메이션은 Fire_Rifle_Ironsights 으로 견착사격하는 애니메이션이다


위의 내용을 [저장] [컴파일] 후에 게임을 실행해 보면 다음과 같이 캐릭터의 자세의 변화에 따라 소켓에 연결된 소총도 제대로 따르는 것을 확인할 수 있다



Posted by cwisky