초보 코린이의 성장 일지

UE4 FPS IK, Pistol 본문

언리얼

UE4 FPS IK, Pistol

코오린이 2023. 4. 1. 19:25

권총에 애니메이션 모션을 만들고 필요한 부위는 IK를 적용하여, 원만한 동작이 나올수 있도록 만들어 볼 것이다.

 

1. 장착 몽타주를 생성해주고, 노티파이와 커브를 생성해서 보간을 해준다.

1. 발사시 흔들리는 수치도 설정, 권총은 반동을 크게 해준다.

CWeapon_Pistol.cpp

1. 위에 만들어준 몽타주, Shake 레퍼런스 주소를 넣어준다.

 

1. 에임 오브셋에 정면 동작과 키를 추가해서 위아래 향하는 동작을 만들었을때, 몽타주로 특정한 애니메이션을 만들어야 할때 등등 이렇게 부자연 연출이 나오게된다.

2. 그래서 하나를 조정하게되면, 그 라인을 타고 타고 내려가 같이 움직이는 부위 전부를 움직여 줘여한다. 여기서 FK, IK가 들어간다.

 

1. 레이어를 하나 생성해준다.

 

 

1. 에임오프셋은 라이플꺼랑 동일하므로 그대로 사용한다.

2. 팔동작에서 왼쪽 어깨 오른쪽 어깨 둘다 사용되므로,  본마다 레이어에서 포즈를 하나 더 추가해준다.

3. 어깨를 섞을때는 그 부위를 섞는게 아닌 한칸 아래 부위를 섞어주는게 더 자연스럽고 좋다. 쉽게 말하자면, 어깨를 변경할것이지만 기준은 그 바로위에 부위인 가슴 부분, 섞을 부위는 바로 아래인 어깨가 된다는 뜻이다. 가슴에 어깨 양쪽이 붙어있기 때문에

4. 레이어 설정에서 Mesh공간 회전해준다. 틀어지지 않으면 자연스럽지 않기 때문

5. 본 트랜스폼은 위에가 왼쪽 어깨, 아래가 오른쪽 어깨가 된다. 이제 정면을 보는건 변하였다 위아래 방향을 적용만 시켜주면 된다.

6. FPS는 Pitch가 역방향이다. 아래를 보면 위로 올라가고, 위를 보면 아래로 내려가기 때문, 그래서 - 1을 곱해서 역방향으로 취해준다. Roll에 연결되는건 월드공간이기 때문.

1. 알맞게 변경된걸 볼 수 있다.

 

1. Eject -> Spawn -> Load -> End 순으로 노티파이를 넣어준다.

2. 커브도 알맞게 조절해준다.

 

CWeapon_Pistol.cpp

1. 리로드 몽타주를 넣어준다.

2. 탄창이 장전할때마다 떨어지게 된다.

 


이제 조준을 만들어 줄 것이다.

1. 1인칭 조준 애니메이션을 넣어줘야하지만 없다. 그래서 변형시켜 만들어줘야 한다.

2. 조준 자세인 애니메이션을 하나 복사 후 1프레임을 제외한 나머지를 잘라내준다. 조준하는 모션만 있으면 되기 때문

3. 3인칭으로 되어있기 때문에 1인칭으로 변경시켜줘야한다.

1. 우선 1인칭 Mesh에 릭 선택을 인간형릭으로 선택해준다.

 

1. 인간형으로 선택해준 1인칭 Skeleton으로 변경해준다.

2. 변경된 애니메이션을 들어와 보면 변해있다. 여기서도 문제가 있다 손가락이 부자연스럽기 때문 이걸 변경해줘야 한다.

1. 그전에 우선 리타겟팅을 하게되면 확인하면 좋은게 있다.

2. 리타기팅 옵션 표기를 눌러서 설정을 바꾼다.

3. 여기 옵션들중 중요한건 Animation, Skeleton 두개이다.

Animation = World 공간, 가상본을 넣고 실제 본을 불르기 때문.

Skeleton =  상대간격. Local * Animation * Parent.

 

 

1. 위 2개는 월드를 사용하고, 나머지는 상대간격을 사용하므로, 기능을 먹여야 하는 부분 즉 변형을 시켜야 하는 부위들은 전부 Skeleton이 되어야한다.

2. 마지막에 ik들은 월드여야하므로, 변경되면 안된다.

3. 손이 정상적으로 돌아온다.

1. Weapon에 따라 블렌드 포즈를 적용.

2. 리타겟한 애니메이션 연결

1. 다시 1인칭 Mesh로 온다.

2. 구조를 보면 위에 최상위 Root부터 어떠한 수치로 아래로 내려올수록 적용되는지 그림으로 볼 수 있다.

3. pelvis만 회전시켜준다.

1. pelvis를 클릭하고 상단에 키를 눌러 생성

2. X방향만 회전시켜주면 되므로, 90도로 돌려준다.

1. 조준할때 잘 나오는걸 볼 수 있다. 이제 총을 다시 넣어줄 소켓이 필요하다.

1. 1인칭 Mesh로 가서 소켓 생성.

CWeapon_Pistol.cpp

1. 소켓이름 설정해주면 조준시 잘 나오게 된다.

CWeapon.h
CWeaponComponent.h
CWeaponComponent.cpp

1. 왼손 IK가 아직 적용이 안되어있으므로, 부모로가서 넘겨줄 함수를 만들어준다.

2. 컴포넌트에서도 넘겨줄수 있도록 받아준다.

CAnimInstance_Arms.h
CAnimInstance_Arms.cpp

1. 암즈에 IK를 넣어준다.

 

1. hand_r을 본이 바뀔 공간으로 설정, hand_l이 어디까지 값이 가야하는지 upperarm_l 까지로 설정

2. Rotation을 복사해서 실제 본에다가 넣어주라는 설정이다. 그래서 LeftHand를 Transform으로 설정한 것이다.

1. 왼쪽 IK 팔까지 잘 적용된걸 볼 수 있다.

2. 조준시에도 자연스러워졌다.

 


CWeaponComponent.cpp

 

CUserWidget_HUD.h

1. 위젯에 오른쪽 하단에 무기에 따른 이름이 알맞게 변경되도록 만들어준다.

2. 하지만 문제가 있다. 이름마다 자리수가 달라서 UI 길이가 변경이된다 이걸 잡아줄 것이다.

1. 상하좌우 Padding 여백 수치를 조금 늘려준다.

 

https://www.youtube.com/watch?v=LprlXuQAunQ 

 

'언리얼' 카테고리의 다른 글

UE4 DrawDebugLine  (0) 2023.04.04
UE4 Slate UI, Plug In  (0) 2023.04.03
UE4 FPS Pistol  (0) 2023.03.31
UE4 FPS AK47, DotSight  (0) 2023.03.30
UE4 Miaxmo, AK47  (0) 2023.03.29
Comments