[UE5.0-EarlyAccess] Control Rig과 Full-Body IK 적용기 (2)
팔과 다리가 모두 잘 움직인다면 이제 Bone Settings을 할 차례이다. 아래와 같이 ik_foot_l을 Z축으로 올려보면, 허리가 휘어 진다. Bone Settings를 통해 이러한 문제들을 고칠 수 있다.
Hips Bone에 Rotation Stiffness를 0.8로 주어 잘 휘어지지 않도록 하였다. 참고로 Stiffness는 0~1.0사이의 값으로 세팅할 수 있다.
허리의 휘어짐이 어느 정도 고쳐졌다.
이제 ik_foot_l을 뒤로 빼보면, 무릎이 반대로 꺾이게 되는데, 각도의 제한을 주기 위해 X축을 Limited로 바꾸고 0 ~ 90의 범위를 주었다.
다리가 뒤로 꺾이는 문제는 이제 더 이상 나타나지 않는다.
이런 방식으로 하나씩 Bone을 세팅하는 방식은 생각보다 어려웠다. Limited를 적용하기 위해 적당한 값을 구하는 것도, Stiffness와 각도 사이의 관계를 고려해 값을 세팅하는 것도 쉽지 않았다. 그래서 ik_hand_l을 위해 Bone을 세팅하다가 지우고 다시 하는 과정을 여러 번 반복하게 되었다. 아래 그림은 설정을 잘못 했던 것들로, Spine이 너무 휘거나 팔이 거꾸로 접히거나 목이 꺾이는 것들을 볼 수 있다. 물론 모델링을 다루는데 숙련되지 못한 나의 탓도 크리라.
여러 차례의 시도 끝에 정확하지는 않지만 어느 정도 수렴 가능한 값을 세팅해보았다. ik_hand_l을 위해 LeftShoulder > LeftArm > LeftForeArm으로 이어지는 Bone Settings는 아래와 같이 설정하였다.
ik_hand_r도 동일하게 세팅하였다. (RightForeArm의 Z축만 반대)
중간에 하나 빠진 것이 있는데, Spine 세팅도 추가하였다.
아직 부족한 것이 많지만 그런대로 움직여서 동작을 만들어 보았다. 양 손과 발 모양을 설정하지 않아서 구부러져 있지만, 이것들은 차후에 좀 더 세밀하게 작업을 해볼 예정이다.
마지막으로 Settings를 보면, Solver Iterations이 Default로 20으로 되어 있는데, 이 값을 높일 수록 더 정확한 포즈를 만들 수 있다. 성능상의 Trade-off가 발생할 것이나, 언리얼 라이브스트림에서 에픽 개발자의 얘기로는 생각보다 크게 작용하지는 않을 것이라고 한다.
그리고 FullBodyIK 노드에 Effector와 Bone Setting을 추가하다 보면 화면을 몇번 스크롤 해야 볼 수 있을 만한 긴 노드가 만들어 진다. 이것 또한 차후 버전에서는 개선이 있을 것이라고 한다.