게임 엔진 프로젝트를 마치고 이번에는 새롭게 애니메이션 프로젝트를 진행해보려 한다.
Procedural Animation을 통해 스켈레탈 메시 애니메이션 캐릭터가 등산하는 시뮬레이션을 완성하는 것이 목표이다. 다양한 상황을 연출할 예정이며, 이를 구현하기 위해 다음과 같은 기술들을 사용할 예정이다.
미리 만들어진 애니메이션 클립 없이, 코드나 알고리즘을 통해 실시간으로 애니메이션을 생성하는 기술이다.
대표적인 기술로 IK(Inverse Kinematics)가 있으며, 물리(Physics)나 수학적 계산을 이용하는 방식도 있다. 주변 환경과 상호작용 하는 애니메이션을 실시간으로 만들 수 있다는 장점이 있고 그 예시로는 발 디디기, 피격, 흔들림 등이 있다.
IK는 역운동학(Inverse Kinematics)으로, 자식 계층의 위치를 통해 부모 계층의 각도를 구하는 기술이다. 반대 기술인 FK(Forward Kinematics)는 부모 계층의 각도를 통해 자식 계층의 위치를 구한다.
FK와 IK의 차이 참고 영상 (1:25~)
https://www.youtube.com/watch?v=c1iv0dbtMJ4
기존 애니메이션은 지형 지물과 상호작용하지 않아 어색할 수 있다. Foot IK는 발을 지면에 맞춰 이동한 후 부모 관절들을 자연스럽게 조정하여 이를 해결하는 기술이다.
Foot IK 적용 영상 (적용 전 00:00, 적용 후: 20:37)
https://www.youtube.com/watch?v=rGB1ipH6DrM
캐릭터의 특정 부위가 지정된 타겟에 접근하면, 해당 부위를 타겟 위치에 맞추고 부모 관절들도 자연스럽게 이동시키는 기술이다.
Foot IK와 비슷한 개념이지만 다른점은 Foot IK는 지면이라는 동적인 대상에 대해 작동하는 것이고 Target-based IK는 타겟을 정해놓고 해당 타겟에게만 작동하는 IK이다. 작동원리는 Foot IK와 비슷하다.
손에 Target-based IK를 적용한 모습 (00:00 ~ 00:31)
https://www.youtube.com/watch?v=_clM46cN_DY
Full-Body IK(FBIK)는 여러 개의 IK 체인을 사용하여 하나의 IK 처리로 인해 다른 체인들이 영향을 받게 하여 전신의 움직임을 자연스럽게 구현하는 기술이다.
Full-Body IK가 적용된 애니메이션 (27:33 ~ 27:59)
https://www.youtube.com/watch?v=Z8eqaFG7lZQ
IK와 Step Planning, Foot Trajectory를 섞는다면, 애니메이션 클립이 없더라도 아래와 같은 애니메이션을 만들 수 있다.
적용 예시 영상
https://www.youtube.com/watch?v=e6Gjhr1IP6w
애니메이션을 여러 층(Layer)으로 나눠 각 층의 모션을 혼합하거나 덮어 씌우는 기술이다.
현재 애니메이션 포즈를 저장해 다른 애니메이션 적용 후 원래 상태로 복원할 때 사용한다. 주로 피격 후 원상복구 시 사용된다.
캐릭터의 본마다 물리 엔진의 Rigidbody와 Joint를 연결하여 물리적으로 움직이는 시스템으로, 쓰러지는 연출을 자연스럽게 만든다.
위의 연출 리스트들을 Procedural Animation 기반으로 구현을 할 예정이다.
계획은 대체적으로 애니메이션의 기본인 Skeletal Animation 부터 Procedural Animation의 기본적인 상황들을 연출해보고, Procedural Animation에 대한 이해도가 오른 경우 이를 활용해 연출할 수 있는 상황을 만들어 구현해볼 예정이다.
이 과정에서 기본적인 구현 후 애니메이션의 자연스러운 움직임에 대한 연구를 통해 연출 상황을 구현할 예정이고, 최적화에 대한 고민도 빼놓지 않을 예정이다.