스토리지

언리얼 Inverse Kinematic 본문

Unreal Engine/0. Unreal 5

언리얼 Inverse Kinematic

ljw4104 2023. 7. 14. 20:02

1. 개념

왼쪽의 캐릭터는 IK 셋업을 사용하지 않은 것이고, 중간은 IK 를 사용하여 충돌하는 오브젝트에 발을 딛고 있습니다. 오른쪽은 IK 를 사용하여 캐릭터의 주먹이 움직이는 블록에 닿을 때 애니메이션을 중지시키도록 하고 있습니다.

Inverse Kinematics (IK, 역운동학)은, 조인트 로테이션을 직접 처리하지 않고 End Effector (엔드 이펙터)위치에서 조인트 로테이션을 처리할 수 있는 방편입니다. 실제적으로는, 이펙터 위치를 주면 IK 솔루션에서 조인트의 최종 위치가 그 위치와 가급적 일치되는 로테이션 값을 구합니다. 이 방법은 울퉁불퉁한 땅이나 기타 상황에서의 캐릭터의 발이 제대로 놓일 수 있도록 하여, 월드에 재대로 반응하는 듯한 느낌을 내 줍니다.

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

 

IK 셋업

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

docs.unrealengine.com

내가 이해한 것은 만약 내가 왼발을 침대에 올리고 있으면 오른쪽 다리는 그대로 일자로 유지되겠지만 왼쪽다리는 발이 올라감에따라 골반 - 무릎 - 발로 이어진 관절이 굽혀진다. 이러한 것을 처리해주는 것이 IK라고 이해를 했다.

 

2. 구현

아직 이해가 잘 안되서 강의를 따라 그냥 만들기만 했다.

1. 발에서 땅까지 떨어진 거리 구하기

각각의 왼쪽발, 오른쪽발에 대해 땅까지 닿는 부분을 구함.
FootTrace 함수

2. 양 발의 z값을 구한 것을 보간

3. 두 값중에 작은 값을 골반을 움직이는 값으로 설정

4. 위에서 구한 OFFSET 값들로 Transform의 Z값(상하축 값) 변경

5. Full Body IK 함수를 사용해서 위에서 수정한 Transform을 적용

 

3. 결과

 

'Unreal Engine > 0. Unreal 5' 카테고리의 다른 글

충돌 판정  (0) 2023.07.17
애니메이션 적용  (0) 2023.07.14
Character  (0) 2023.07.13
카메라 추가  (0) 2023.07.12
Pawn 움직이기  (0) 2023.07.12
Comments