IK 피벗 사용

IK 피벗은 이펙터가 회전하는 3D 공간에서의 가상점입니다. 이러한 IK 피벗을 사용하면 공간의 외부점에서 관절을 회전하는 애니메이션을 더욱 사실적으로 만들 수 있습니다. 예를 들면 다음과 같습니다.

IK 피벗의 효과

이펙터에 IK 피벗을 설정할 경우 이펙터 자체에 대한 전역 변환, 방향 및 배율 조정 값을 제공하는 동시에 전역 공간에서 3D 변환을 제공합니다. IK 피벗은 새로운 IK 목표점을 효과적으로 만들면서 HumanIK가 이펙터의 변환 및 방향 값을 계산하는 방법을 수정합니다.

이러한 최종 IK 목표점은 다음 프로세스에서 계산됩니다.

달리 말하자면 이펙터와 피벗점에 지정한 변환 값은 길이가 고정된 가상 선의 양 끝에 두 점을 정의합니다. 사용자가 이펙터에 지정한 방향으로 피벗점이 회전되면 이펙터를 3D 공간의 다른 위치로 효과적으로 이동하면서 이 가상 선도 함께 회전됩니다.

이펙터에 설정된 모든 IK 제약 조건(도달, 당기기 및 저항)은 일반적으로 IK 피벗을 사용할 때 적용되며, 동시에 캐릭터 골격이 최종 솔루션의 이 IK 목표점으로 얼마나 가깝게 이동하는지와 해당 점에 도달하기 위해 캐릭터 골격의 나머지 부분을 변형시키는 정도를 제어합니다.

IK 피벗 위치 설정 및 검색

이펙터에 대한 IK 피벗을 설정하기 위해 HIKSetEffectorPivotStatefv() 또는 HIKSetEffectorPivotStateTQSfv() 함수 중 하나를 호출할 수 있습니다. 이 두 함수 모두 네 개의 부동 소수점 값의 배열에서 IK 피벗의 변환을 제공해야 합니다.

예를 들면 다음과 같습니다.

const float pivotPointT[] = {124.3f, 253.8f, 604.4f, 0.0f};
HIKSetEffectorPivotStateTQSfv(myEffectorSet, LeftWristEffectorId, globalT,
                                                                  globalQ,
                                                                  globalS,
                                                                  pivotPointT);

해당 HIKGetEffectorPivotStatefv()HIKGetEffectorPivotStateTQSfv() 함수를 사용하여 IK 피벗의 위치를 검색할 수 있습니다.

자세한 내용은 API 참조에서 함수 설명을 참조하십시오.