Control Rig를 적용한 상태에서의 R&D

캐릭터의 Wall Climbing 경우에 벽을 향한 IK 적용이 필요한 상황

기본적인 Wall IK

  • 기본적인 Foot IK를 Hand와 Foot 모두에 벽면을 향해서 해주면 된다
  • 이는 비교적 간단하지만, 팔꿈치와 무릎 등 벽면에 닿을 수 있는 잠재적인 Bone이 더 많다는 점에서 추가적인 ik bone들이 더 필요했다
    • 팔꿈치나 무릎은 벽을 뚫고 들어가는 경우도 있었다

Tilt 적용

  • Control Rig를 통해 직접 Bone의 Rotation 및 Location을 조절하는 것은 올바른 접근은 아닌 듯하다
    • 상위 Bone에 의해 반영된 Local Space를 고려해야하는데, 이게 개인적으로는 좀 까다로웠다
  • 기본적으로 재생할 애니메이션을 손보거나 Additive Animation을 적용하는 게 더 낫지 않을까 싶다

Foot Lock & Hand Lock

  • ALS에서 적용하는 FootLock의 개념을 그대로 들고오려고 시도해봤다
    • ALS는 FootLock과 FootIK가 코드를 통해 정의하고 AnimaGraph로 정의되는데, 이미 ControlRig에서 정의된 IK의 위치를 코드에서 받아 Lock 위치을 정의해 다시 AnimGraph에서 반영하는 것은 잘못된 접근이었다
    • 코드와 AnimGraph 실행 순서를 알수 없고, 애초에 스레드도 달랐다

Note

문제 해결을 위해 Control Rig에서 필요한 커브를 받아 Lock을 걸 위치를 캐싱하는 방법을 시도해 봤으나, ControlRig 내에서 호출하는 Get Curve Value는 ControlRig에서 정의되는 Curve를 타겟으로 하는 노드였다.
Animation Curve를 받기 위해서는 ControlRig Node의 Input으로 받아와야 하는데, 이 때 변수를 float으로 정의해도 필요한 커브를 할당할 수 없었다.
확인해보니 BP float 변수의 실제 타입은 double이라 커브를 받기 위한 조건인 float 타입과 일치하지 않아서 발생하는 일종의 엔진 버그로 보인다