전방 및 후방 도달 인버스 키네마틱 (Forward And Backward Reaching Inverse Kinematics, FABRIK) 은 체인에 최소 2개 이상의 본 링크가 있는 한 임의 길이의 본 체인에서 작동하는 IK 솔버 입니다.
개요
애니메이션 블루프린트의 애님 그래프 에 FABRIK 블루프린트 노드를 추가할 수 있습니다. 추가하고 나면 오브젝트 컴포넌트 포즈(Component Pose) 를 사용하여 애님 블루프린트에 FABRIK 노드를 통합할 수 있습니다.
FABRIK 노드의 Effector Transform 입력 핀을 사용해 트랜스폼 변수에 연결하여 상대적 또는 절대적 본 트랜스폼을 체인에 구현할 수 있습니다. 상대적 트랜스폼을 사용하여 같은 스켈레톤에서 다른 본을 참조하여 트랜스폼할 수도 있고, 절대적 트랜스폼을 사용하여 참조 없이 체인을 트랜스폼할 수도 있습니다.
적용된 스켈레탈 컨트롤(Skeletal Control) 강도를 결정하기 위해 Alpha 입력 핀에 수동으로 또는 애님 그래프에서 다이내믹 변수를 통해 알파 값을 설정할 수 있습니다. 알파 값이 클수록 스켈레탈 컨트롤 강도가 높아지고, 값이 작을수록 낮아집니다.
프로퍼티 및 세팅
FABRIK 노드의 디테일(Details) 패널 안에 보면 추가 세팅이 있고, 이 세팅을 사용하여 솔버 작동 방식을 조정할 수 있습니다.
엔드 이펙터(End Effector) 섹션에서 타깃 위치 및 회전을 결정합니다.
FABRIK 노드의 디테일 패널에 있는 엔드 이펙터 프로퍼티는 TwoBone_IK 노드의 프로퍼티와 매우 비슷합니다.
| 프로퍼티 | 설명 |
|---|---|
| 위치, 회전, 스케일(Location, Rotation, Scale) | 팁 본의 타깃 위치 좌표입니다. EffectorLocationSpace 프로퍼티가 bone 으로 설정된 경우, 타깃 본에서 이만큼의 오프셋 위치가 타깃 위치로 사용됩니다. 이는 노드의 핀으로도 설정 가능합니다. |
| 이펙터 트랜스폼 스페이스(Effector Transform Space) | SkeletalMeshComponent의 레퍼런스 프레임에서 본의 위치를 설정합니다. |
| 이펙터 트랜스폼 본(Effector Transform Bone) | 이펙터 트랜스폼 스페이스 프로퍼티가 bone 으로 설정된 경우, 이 프로퍼티에서 정의된 본이 사용됩니다. |
| 이펙터 회전 소스(Effector Rotation Source) | 회전을 제어합니다. 컴포넌트 스페이스 또는 로컬 스페이스를 유지하거나 엔드 이펙터 타깃 회전을 일치시킵니다. |
솔버(Solver) 섹션에서는 루트(Root) 부터 팁(Tip) 까지 사용할 본 체인을 정의합니다. 팁은 엔드 이펙터 위치에 도달하려 시도합니다.
| 프로퍼티 | 설명 |
|---|---|
| 팁 본(Tip Bone) | 스켈레톤 트리(Skeleton Tree) 에서 본을 팁 본 으로 정의합니다. |
| 루트 본(Root Bone) | 스켈레톤 트리 에서 스켈레톤의 루트 본 에 대한 레퍼런스를 설정합니다. |
| 정밀도(Precision) | 여기서는 이펙터 위치(Effector Location) 입력 핀의 최종 팁 본 위치 델타에 대한 허용치(Tolerance) 로 작동할 값을 설정할 수 있습니다. 허용치가 낮을수록 엔드 이펙터 타깃과 관련된 팁 본의 위치가 더 정확해지지만, 평가에 소모되는 퍼포먼스 비용이 더 커집니다. |
| 최대 반복작업(Max Iterations) | 여기서는 반복작업의 최대 허용 횟수를 설정할 수 있습니다. 이 값을 조정하여 평가에 대한 퍼포먼스 비용을 제어함으로써 큰 볼륨 사용으로 인해 프로젝트의 프레임 레이트가 저하되지 않도록 할 수 있습니다. |
| 디버그 드로 활성화(Enable Debug Draw) | 여기서는 조인트 회전 디버그를 위해 축 그리기를 토글할 수 있습니다. |
세팅(Settings) 섹션에서 적용 강도를 설정합니다.
| 프로퍼티 | 설명 |
|---|---|
| 알파(Alpha) | 현재 스켈레탈 컨트롤의 강도입니다. 노드의 핀으로도 설정 가능합니다. |
| 알파 스케일 바이어스(Alpha Scale Bias) | 최소(Minimal) 및 최대(Maximal) 입력 스케일 값을 설정합니다. |
| 노드(Node) | 부모 기준 로컬 회전(Local Rotation Relative to Parent) 이외의 값으로 설정된 경우, 이펙터 회전 소스(Effector Rotation Source) 를 리셋하는 데 사용할 수 있습니다. |