Unreal5 Foot IK

Unreal5 Foot IK

IK(Inverse Kinematics) 역운동학.

inverse Kinematics(역운동학, IK)는 일반적으로 로봇공학에서 사용되는 개념으로, 끝단의 위치가 주어졌을 때, 그 위치를 만족시키기 위해 로봇의 관절 각도를 계산하는 기술입니다.

게임 개발에서는 보통 캐릭터의 뼈대와 같은 스켈레톤을 이용하여 이를 구현합니다.

이번 글에서 말할 Foot IK를 예로 들면, 캐릭터의 발 위치를 자연스럽게 하기 위해 발이 지면에 닿는 위치와 방향을 계산하여 움직일 수 있습니다.

물론 이를 구현하기 위해서는 여러 가지 고려해야 할 것이 많지만 언리얼 엔진에서 이것을 어느 정도 도와줍니다.

 

Foot IK를 사용해 이런식으로 공중에 한 발로 서있는 것이 아닌 좀 더 자연스럽게 서있도록 만들어 보겠습니다.

근데 저번에 보면서 오홍 그렇구나 하면서 만들고, 이번에 다시 만들어보는데 이거 3인칭 예제에 있던거랑 똑같은거 아닌가유..?ㅋㅋㅋㅋㅋ

Foot IK구현 사전작업.

이런식으로 Control Rig를 하나 생성해 줍니다.

저는 CR_YinFootIk라고 이름 지었습니다.

ControlRig에 들어가서 왼쪽 하단쪽에 보이는 Rig Hierachy창에서 import 해줍니다.

아래 사진은 임포트 한 이후의 사진입니다.

이후 My Blueprint탭을 열고 Functions에 Function을 추가합니다.

저는 FootTrace라고 지었습니다.

(아래 변수들은 다 만들고 찍는거다 보니..)

FootTrace함수는 뼈를 입력받으면 Sphere Trace로 Z를 계산합니다.

이제 FootTrace함수는 끝났고, Forwards Solve Graph를 작성했습니다.

코드가 좀 길길래 이렇게 Sequence를 사용해 연결했습니다. 

1. Branch의 조건에 해당하면 FootTrace를 실행하여 Z값을 설정합니다. 

이 조건은 Jump중일때 Foot IK가 실행되지 않도록 합니다.

2. 값을 보간합니다.

3. 가장 낮은 값을 허리로 설정합니다.

4. 보간한 값을 IK_Foot bones에 더해줍니다.

5. Full Body IK를 이용해 inverse Kinematics를 적용합니다.

bool로 설정한 변수 눈깔도 하나 켜주고.

ABP_yin으로 들어가서 Control rig를 추가하고 Details창에서 변수를 켜줍니다.

이런 식으로 애니메이션 블루프린트를 만들었습니다.

움직이거나 점프 중엔 IK가 적용되지 않습니다.

결과.

공중에 떠있는 것보다 훨씬 자연스러운 모습입니다.

몬스터에도 하나 만들어서 적용해 봤습니다.

 

Designed by JB FACTORY