본문 바로가기
Unreal 게임 개발/Unreal Tool 활용

Unreal Inverse Kinematics(역 운동학)

by daisy0461 2023. 2. 13.

Unreal Animation을 공부하다가 Inverse Kinematics와 관련해서 공부를 하게 되서 블로그로 남기게 되었다.

 

현재 캐릭터가 서있는 모습을 보면 다리가 어색한 것을 확인할 수 있다.

이 자세에서 다리를 땅에 따라 자연스럽게 하기 위해서 Inverse Kinematics를 사용한다.

Inverse Kinematics

Inverse Kinematics는 Skeleton에서 특정한 bone을 움직일 때 사용하는 방법이다.

예를 들어 위 사진과 같이 나와 있는 다리의 bone을 조정해서 자연스럽게 만들어주는 것이다.

 

위 사진을 자연스럽게 만들기 위해서는 (편의상 계속 사진상으로 방향을 설명한다) 오른쪽 다리가 굽어져야한다.

굽이는 동작에서 bone을 위로 접어야 굽어지게 된다.

이 bone을 얼마나 굽혀야할지는 Inverse Kinematics가 필요한 계산식을 계산한다.

 

그리고 오른쪽 다리가 굽어지면 결국 캐릭터는 살짝 아래로 이동하게 된다.

그럼 그 살짝이란게 어느정도인지 알아야한다.

왼쪽 발에서 Sphere trace를 활용하는 것이다. 

Sphere trace란 왼쪽 발에서 땅을 향해 Sphere모양의 레이저가 발사된다고 생각하면 된다.

쭉 레이저가 발사되다가 땅과 충돌을 하게되면 지금 발이 땅과 얼마나 떨어져있는지 알 수 있다. 

즉, Sphere trace를 통해 Z축 Offset을 계산하게 된다. 

 

왼쪽 땅의 Z좌표가 0이고 오른쪽 땅의 좌표가 10이라면

ZOffset_Pelvis(골반)를 ZOffest중 작은 값(여기서는 왼쪽)만큼 아래로 이동시킨다.

Pelvis를 이동시키면 다른 bone들은 연결이 되어있기 때문에 모두 아래로 이동한다. 

 

이렇게 동작을 구성하는 것을 Inverse Kinematics를 사용한다.

그리고 더 부드러운 움직임을 활용하기 위해서 Interpolate(보간)을 사용한다.

Interpolate를 사용하면 목표값을 향해 부드럽게 이동한다.

 

이제 Inverse Kinematics를 활용하면 bone을 이동시켜 보다 자연스러운 Animation 연출이 가능하다는 것을 알 수 있다.

 

그렇다면 더 깊게 들어가보자.

 

Inverse Kinematics에는 더 정교한 계산이 필요하다.

위에서 설명했을 때 자연스럽게 생각을 했을텐데 bone을 접어 무릎을 굽힐 때

만약 무릎이 뒤로 꺾이거나 너무 부자연스럽게 접히지 않을지 생각해야한다. 

여기서는 Unreal 엔진에 내장되어있는 IK를 사용하면 된다.

 

이러한 Inverse Kinematics를 사용하기 위해서는 control rig라는 asset을 사용하면 된다.

 

control rig는 다음 글에서 이어서 설명한다.