Using Roll Extraction

When HumanIK applies a roll rotation to your character’s shoulder, elbow, hip or knee, you can extract a percentage of that rotation and apply it instead to the next Node in the joint chain. Depending on how your character’s skinning is set up, smoothing the roll rotation over multiple joints in this way can improve the realism of your character’s mesh after the HumanIK solve. This type of roll extraction typically does not affect the final placement of limbs in the IK solution. Instead it is an optional method of controlling the smoothing or interpolation of roll rotations along the arms and legs.

For example, in the following images, the Effector for the character’s left wrist has been rolled forward 90 degrees, and its Reach Rotation value has been set to 1. In order to make the wrist Node reach this desired rotation, HumanIK applies a roll rotation to the elbow Node. The green lines show the approximate orientation of the local Y axes of the shoulder, elbow and wrist Nodes.

The image below shows the result without using any roll extraction. Because all the roll rotation is localized on the elbow, the skinning in that area has become severely deformed.

However, with 60 percent of the roll extracted from the elbow and applied instead to the next joint down the chain — in this case, the wrist — the result is a smoother, more realistic mesh:

Note that the final rotation of the wrist in global space in both images above is the same. However, in local space, the rotations of the elbow and wrist have been changed relative to their parents.

If you have characterized optional roll Nodes in your character’s arms and legs, the roll extraction engine applies the rotation to the child roll Node of the Node being rotated. For example, when the LeftShoulderNodeId is rotated, any extracted roll rotation is applied to the LeftShoulderRollNodeId if characterized, or to the LeftElbowNodeId if not. Similarly, when the LeftElbowNodeId is rotated, any extracted roll rotation is applied to the LeftElbowRollNodeId if characterized, or to the LeftWristNodeId if not.

See also Mapping Joints to HumanIK Nodes and Effectors for an overview of the roll Nodes supported by HumanIK, and their placement in the skeletal hierarchy.

Roll extraction and Degrees of Freedom

Roll rotation cannot be extracted and applied to a non-roll child Node if the child Node has been characterized with Degrees of Freedom.

For example, if the LeftElbowRollNodeId is not characterized, roll rotations applied to the LeftElbowNodeId will be extracted and applied to the LeftWristNodeId. In this case, if the LeftWristNodeId has any Degrees of Freedom characterized for it, the roll rotation will not be extracted from the parent.

If the LeftElbowRollNodeId is characterized, roll rotations can always be extracted from the LeftElbowNodeId and applied to it, regardless of the Degrees of Freedom assigned to the LeftWristNodeId.

Propagating roll extraction

When you use roll extraction in conjunction with roll Nodes, you can also extract a percentage of the rotation applied by the roll extraction engine to the roll Nodes, and apply that extracted rotation once again to the next Node down the joint chain. This can result in an even smoother interpolation of the rotation.

For example, in the image below, 60 percent of the roll rotation applied to the elbow is extracted and applied to the corresponding roll Node by the roll extraction engine. Although the resulting mesh for the elbow is much better than in the very first image shown above without any roll extraction at all, in this case the result still causes a noticeable deviation in the skinning around the roll Node.

However, in the image below, 50 percent of the roll rotation applied to the roll Node is extracted again and applied to the wrist. All in all, 60 percent of the original rotation applied to the elbow is first extracted and applied to the roll Node. Then, 50 percent of that rotation is extracted from the roll Node and applied to the wrist. The rotation is spread more evenly over the whole forearm, which produces a more realistic final effect on the mesh.

Roll propagation and Degrees of Freedom

Roll rotations cannot be extracted from the roll Node and applied to its child Node if the child Node has been characterized with any Degrees of Freedom.