Pull

Pull allows a joint to move the other joint chains in the character’s skeleton in order to reach its target position.

 

For example, in the image on the left, the green locator represents the Effector corresponding to the left wrist joint.

 

Even with the Reach Translation of the Effector set to its maximum value, the character’s arm is too short to reach the position of the Effector.

 

Applying an additional Pull constraint to the Effector causes the other joint chains in the body—in this case, the spine, hips, and perhaps even the legs—to rotate and translate such that the wrist can reach the position of its Effector.

It is important to note that Pull only applies when the Reach Translation applied to a Node is non-zero. If the Reach Translation value for an Effector is zero, the Pull value for that Effector is not taken into account.

Pull priorities

The inverse kinematics solver attempts to satisfy the Pull settings applied to all Effectors defining the target pose for your character. However, when all Pull values cannot be fully satisfied, the solver uses a hierarchy to prioritize the different joint chains. In this hierarchy, the hips are considered the most important joint; Pull values that you apply to the hips are always satisfied first. Other joints are prioritized according to their distance from the hips in the character’s skeleton: i.e., the chest has priority over the shoulders, which have priority over the elbows, etc.

The system of Pull priorities used by HumanIK can be summarized by the following rules:

In addition to taking advantage of the system of priorities outlined above, there are many other ways you can fine-tune the HumanIK pull engine to prevent unrealistic deformations of your character’s body. For example, you can set character properties that restrict the hips to positions between the feet that do not compromise the character’s center of gravity. See Character Properties, and General Properties.