AnyPortrait > 메뉴얼 > 개선된 IK 방식 : FABRIK

개선된 IK 방식 : FABRIK


1.5.0

AnyPortrait v1.5.0에서 IK 연산의 기본 알고리즘이 "CCD (Cyclic Coordinate Descent)"에서 "FABRIK (Foward And Backward Reaching Inverse Kinematics)"으로 변경되었습니다.
"FABRIK" 방식은 "CCD" 방식에서 보여주는 특정 상황에서의 움직임 문제를 해결하고 실행 성능이 더 좋습니다.
다만, 기존에 "CCD"를 이용하여 제작된 캐릭터 애니메이션을 유지하기 위해서, 사용자가 "CCD"와 "FABRIK"를 선택할 수 있는 옵션을 제공합니다.
- 기존에 작업한 캐릭터는 옵션을 변경하지 않는다면 "CCD" 방식으로 IK가 동작합니다.
- 새로 생성한 캐릭터는 "FABRIK"이 기본값으로서 사용됩니다.


이 메뉴얼에서는 추가된 "FABRIK"을 설정하는 방법과 변경된 알고리즘이 어떻게 다른지 보여드립니다.
IK에 대한 더 자세한 설명은 다음의 메뉴얼들을 확인해주세요.
- IK 설정
- IK 컨트롤러
- 의도한 대로 IK가 동작하도록 만들기




FABRIK 설정하기




IK 컨트롤러를 사용하는 간단한 예제를 위와 같이 준비했습니다.
보석을 본에 연결하였고, 해당 본은 키프레임 애니메이션에 의해 이동합니다.
기계 팔은 여러개의 본들로 이루어졌으며, 애니메이션 없이 오직 IK 컨트롤러에 의해서 보석을 잡기 위해 자동으로 움직일 것입니다.




기계 팔이 본들에 의해서 움직이도록 리깅까지 완료한 상태입니다.
이제 기계 팔이 움직이도록 IK 컨트롤러를 설정하기에 앞서, 기계 팔의 주요 본들을 IK 체인으로 연결합니다.
(1) 메시 그룹의 Bone 탭을 선택합니다.
(2) IK 체인의 시작인 본("Bone Arm 1")을 선택합니다.
(3) IK 방식을 IK Head로 변경합니다.
(4) Change IK Target 버튼을 누릅니다.
(5) IK 체인의 마지막, 즉 보석을 잡는 부분에 해당하는 본("Bone Arm End")을 선택합니다.
(6) 이제 기계 팔의 시작과 끝이 IK 체인으로 연결된 것을 볼 수 있습니다.




이어서 IK 컨트롤러를 설정합니다.
(1) 보석을 잡을 본("Bone Arm End")을 선택합니다.
(2) IK 컨트롤러의 타입을 "Position"으로 변경하고, Effector Bone을 보석에 해당하는 본("Bone Gem")으로 설정한 뒤, Default FK/IK Weight1로 설정합니다.
(3) 이제 "Bone Arm 1"에서 "Bone Arm End"로 이어지는 IK 체인은 보석 본("Bone Gem")을 향해서 자동으로 움직일 것입니다.




IK 방식을 변경해봅시다.
(v1.5.0 업데이트 이후에 캐릭터를 새로 만든다면 FABRIK이 기본값으로서 설정되어 있을 것입니다.)
(1) Bake 버튼을 누릅니다.
(2) Setting 탭을 선택합니다.
(3) IK Method 옵션에서 FABRIK 또는 CCD를 선택할 수 있습니다.






보석 본("Bone Gem")만 움직여서 애니메이션을 만들면 기계 팔이 IK 컨트롤러에 의해서 위와 같이 움직입니다.




동일한 애니메이션을 "CCD"와 "FABRIK" 방식으로 각각 재생해보면 위와 같이 조금 다르게 움직이는 것을 볼 수 있습니다.
보석의 위치가 같아도 기계 팔이 다른 형태로 움직이는 것을 볼 수 있습니다.


IK는 명확한 정답을 가지지 않기 때문에, 알고리즘에 따라 다른 결과를 보여줍니다.
"FABRIK"와 "CCD"는 각각의 특성을 가지고 있기 때문에 상황에 따라 적절한 알고리즘을 사용하는 것이 좋을 것입니다.
다만, AnyPortrait에서는 "FABRIK" 방식이 개선된 튜닝을 포함하고 있기에, 기존의 "CCD" 방식에 비해 향상된 움직임을 보여줍니다.
알고리즘의 특성과 튜닝의 차이에 의해서 두 방식은 다음의 차이를 가집니다.
- CCD에서는 IK 체인의 시작 부분이 많이 움직이는 반면, FABRIK에서는 IK 체인의 끝 부분이 많이 움직입니다.
- Effector Bone이 IK 체인에 가까울 때 발생하는 IK 에러가 FABRIK에서 많이 개선되었습니다.
- CCD에서는 "이전 프레임에서의 결과"를 참조하여 IK를 연산하도록 튜닝이 되었지만 FABRIK에서는 이를 참조하지 않고 동일한 상황에서는 동일한 결과를 만듭니다.
- CCD에서는 IK 연산의 시작 포즈를 "이전 프레임의 결과"와 "Prefer Angle"을 조합하여 사용하며, FABRIK에서는 옵션에 따라 IK 연산의 시작 포즈를 "FK", "Prefer Angle" 중에서 사용자가 결정할 수 있습니다. (관련 페이지)
- FABRIK에서 코드 실행 성능이 약간 더 좋아졌습니다.


아래의 동영상에서도 IK 방식에 따른 차이를 보실 수 있습니다.