당기기를 사용하면 관절이 대상 위치에 도달하도록 캐릭터의 골격에서 다른 관절 체인을 이동할 수 있습니다.
당기기는 노드에 적용된 변환 도달이 0이 아닌 경우에만 적용된다는 것을 알아야 합니다. 이펙터에 대한 변환 도달 값이 0인 경우 이펙터에 대한 당기기 값을 고려하지 않습니다.
역운동학 솔버는 캐릭터의 대상 자세를 정의하는 모든 이펙터에 적용된 당기기 설정을 충족시키려고 합니다. 그러나 모든 당기기 값을 완전히 충족시킬 수 없는 경우 솔버는 여러 관절 체인의 우선 순위를 정하는 데 계층을 사용합니다. 이 계층에서 엉덩이가 가장 중요한 관절로 간주됩니다. 엉덩이에 적용한 당기기 값을 언제나 제일 먼저 충족시킵니다. 다른 관절은 캐릭터 골격의 엉덩이에서 그 거리에 따라 우선 순위가 정해집니다. 예를 들어 가슴은 어깨보다 우선 순위가 높고, 어깨는 팔꿈치보다 우선 순위가 높습니다.
HumanIK에서 사용되는 당기기 우선 순위 시스템은 다음 규칙으로 요약할 수 있습니다.
이를 통해 필요에 따라 대상에 도달하기 위해 손으로 몸체의 나머지 부분에 당기기를 수행할 수 있습니다. 그러나 대상이 너무 멀리 떨어져 있는 경우 당기기는 캐릭터의 전체 골격을 기울게 하여 결과적으로 불안정하고 비현실적인 자세가 됩니다. 엉덩이에 대해 최대 도달 및 당기기 제약 조건을 설정하면 이 문제를 방지할 수 있습니다. 엉덩이가 손목보다 우선 순위가 높기 때문에 캐릭터는 가능한 한 상체만을 사용하여 문 손잡이 쪽으로 숙이며, 손목에 의해 적용된 당기기는 캐릭터의 엉덩이 또는 다리를 움직이지 않습니다.
또는 손목 기능이 엉덩이에 당기기를 수행하지 않도록 하려면 SetHandPullHips() 함수를 호출할 수도 있습니다.
이를 통해 캐릭터가 지면에 계속 닿아 있도록 하기 위해 발로 몸체의 나머지 부분에 당기기를 수행할 수 있습니다.
위에 간략하게 설명한 우선 순위 시스템을 이용하지 않아도 캐릭터 몸체의 비현실적인 변형을 방지하기 위해 HumanIK 당기기 엔진을 미세 조정할 수 있는 여러 다른 방법이 있습니다. 예를 들어 캐릭터의 중력 중심을 손상하지 않는 발 사이의 위치로 엉덩이를 제한하는 캐릭터 속성을 설정할 수 있습니다. 캐릭터 속성 및 일반 속성을(를) 참조하십시오.