캐릭터 애니메이션의 발 미끄러짐 해결을 위한 IK 및 발 잠금 기법
Inverse Kinematics and Foot Locking
Hacker News캐릭터 애니메이션에서 흔히 발생하는 '발 미끄러짐(foot sliding)' 현상을 해결하기 위해 역운동학(IK)과 발 잠금 기법을 결합한 통합 솔루션을 제시합니다.
- 목표 발끝 위치를 기준으로 목표 뒤꿈치 위치를 계산하고, 두 개의 관절에 대한 IK 솔버로 자세를 잡은 후, 시선 처리(look-at) 기법으로 발가락 방향까지 정교하게 보정합니다.
- 단순히 관절만 움직이는 것이 아니라, 최대 신장 길이 제한 및 지면 충돌 감지 로직을 추가하여 애니메이션의 물리적 안정성과 리얼리티를 극대화합니다.
- 이 기법은 벡터 및 쿼터니언 기반의 고급 수학 지식을 요구하며, 애니메이션 시스템에 적용하기 위해서는 복잡한 계산과 로직 구현이 필수적인 기술입니다.
애니메이션 시스템에서 발생하는 '발 미끄러짐(foot sliding)' 현상은 시각적 품질에 큰 영향을 주지만, 이를 해결하는 방법은 아티스트와 프로그래머마다 상이하여 학문적인 자료를 찾기 어렵습니다. 본 글에서는 발 미끄러짐을 해결하기 위한 여러 레시피 중 하나로, 목표 발끝 위치 설정부터 시작하여 다리 체인(leg chain)의 자세를 잡고, 관절 잠금 및 지면 충돌 처리까지 포함하는 통합 솔루션을 제시합니다.
다리 체인을 원하는 발끝 위치에 배치하기 위해서는 여러 단계를 거칩니다. 먼저 목표 발끝 위치에서 기존 포즈의 벡터를 이용해 목표 뒤꿈치 위치를 계산합니다. 이후 이 목표 뒤꿈치를 기준으로 두 관절(엉덩이와 무릎)에 대한 역운동학(IK) 문제를 해결하여 다리 체인을 배치합니다. 이때, 최대 신장 길이 제한(`maxExtension`)과 소프트닝 로직을 적용하여 과신장을 방지하고 물리적 안정성을 확보하는 것이 중요합니다.
뒤꿈치 위치를 잡은 후에도 발가락이 목표 방향을 바라보도록 정렬해야 합니다. 이를 위해 `QuaternionBetween` 같은 'look-at' 기법을 사용하여 발목 관절의 회전을 보정할 수 있습니다. 또한, 애니메이션 데이터에 지면 충돌(Ground-Plane collisions) 처리를 추가하여 바인드 포즈에서 얻은 최소 높이 값으로 목표 위치를 클램프함으로써 캐릭터가 땅에 붙어 움직이는 현실적인 동작을 구현합니다.