🎮Unreal4/Basic

[UE4] IK란?(Inverse Kinematic), Bone 구조, Two Bone IK 솔버(IK+FK), 애니메이션 공간(Mesh/Local/Component)

공대 컴린이 2023. 2. 10. 19:38
728x90

📚 IK (Inverse Kinematic)

IK란 고르지 않은 지형에서 지형에 맞추어 발을 딛는  반응형 애니메이션을 구현할 수 있는 기능이다.

울퉁불퉁한 땅이나 계단을 오를 때 캐릭터의 발이 Rotation을 알아서 처리하여 제대로 놓일 수 있도록 월드에 반응하는 듯한 느낌을 구현할 수 있다.

📚 Bone 구조

-Root
    -Pelvis                      T (Transform)
         -Hips                    LT(Local Transform) * PT(Parent Transform)
             -Clavicle           LT(Local Transform) * PT(Parent Transform)

Bone의 구조는 트리형태로 저장되어 있는데 간략화하여 중요 내용만 설명하자면 트리구조가 위와 같다.

 

- Root는 액터와 호환작용 하기 위한 가상일 뿐 실제로는 존재하지 않는 Bone이다.

- Pelvis가 실제로 존재하는 가장 Root Bone이다.

- 따라서 Root와 Pelvis는 추후 계산 시 World로 계산한다.

애니메이션의 Bone 위치를 구할 때 Pelvis는 위에 Bone이 없으니까 그냥 자신의 Transform을 사용할텐데, Pelvis 아래에 있는 자식 Bone들은 부모 Bone의 Transform을 모두 곱한 값을 자신의 Transform 값으로 사용한다.

- 예를 들어 Hips는 자신의 Local Transform 곱하기 부모의 Transform 결과를 사용한다. 애니메이션이 된다면 이 결과에 애니메이션 행렬까지 곱한다. Clavicle은 Hips의 결과까지 곱한 결과가 나온다.

- 즉, 손(Hand_R/L)의 위치를 구한다면 Pelvis, Hips, Spine, Clavicle 등이 계속 누적되어 곱해진 값이 나온다.

- 따라서 Bone은 누적된 값이 곱해져오기 때문에 애니메이션의 수정이 불가능하다.
(Bone의 위치를 임의로 바꾸기 위해서는 Poseable Component를 사용해야 한다.)

- 이와같이 위에 Root에서부터 정상적으로 계산하여 내려오는 Bone 방법을 Forward Kinematics (FK, 정운동화)라고 한다.

- FK는 로컬/메시 공간에서 일어난다.

📚 Two Bone IK 솔버 (IK + FK)

캐릭터가 계단을 오르거나 울퉁불퉁한 땅을 걸을 때 발이 땅을 제대로 딛을 수 있도록 Bone을 움직여야 하는데, FK는 애니메이션의 수정이 불가능하다. 

이런 상황에서 사용할 수 있는것이 IK 라는 기능이다.

IK는 Inverse Kinematics 의 약자로, Inverse, 즉 역순으로 Bone이 계산된다는 것이다. 캐릭터가 지형에 발을 붙이면 발에서부터 역순으로 올라오는 연산이 이루어진다.

이때 IK로 Bone의 전체를 역순으로 계산하기에는 연산량이 너무 많이 때문에 특정 부분까지만 IK로 계산하고 나머지 부분은 FK로 계산한다. 이를 IK 결과와 FK의 결과, 두 개의 결과를 합친다는 의미에서 Two Bone IK 솔버라고 부른다.

 

언리얼5에는 Bull IK 솔버라는 것이 존재하는데, 이는 내리막길을 내려갈 때 허리는 꼿꼿하고 발만 회전되는 언리얼 4의 IK 문제점을 해결하여 허리까지 회전할 수 있는 기능을 구현할 수 있다.

📚 애니메이션 공간

애니메이션 공간은 Local, Mesh, Component 총 세가지로 나누어지는데, 이는 면접질문에서도 나올 수 있을 만큼, IK를 구현하는데 중요한 개념이기 때문에 잘 정리해두는것이 좋다.

  • Local
    - 애니메이션 수정 불가능
  • Mesh
    - 애니메이션 수정 가능, 그러나 제한이 있음
    - 에디터 설정으로만 수정 가능
    - Ex) 애니메이션 블루프린트에서 Mesh Space Rotation Blend 옵션을 체크하면 에디터를 수정할 수 있음
  • Component
    - 프로그래밍으로 애니메이션 수정 가능
    - 실제 컴포넌트 안에 Animation Blueprint가 붙어있기 때문에 Component 공간이라고 표현
    - Ex) Poseable Component

참조

https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/IKSetups/

 

IK 셋업

Inverse Kinematic 시스템으로 고르지 않은 지형에서의 발딛기같은 반응형 애니메이션이 가능합니다.

docs.unrealengine.com

 

728x90