HumanIK character structure

The HumanIK solver expects a character's nodes to be connected in certain typical arrangements. For example, the right shoulder is a parent node of the right elbow, which in turn is a parent node of the right wrist. The HumanIK bio-mechanical model is equipped with knowledge about the ways these nodes are able to move; when the solvers need to move one or more nodes to meet the requirements of an IK effect or a source animation at runtime, they use this built-in knowledge to construct new poses.

In order for HumanIK to apply this bio-mechanical model to your characters, you need to either create a default HumanIK skeleton with this mapping built-in for you (Create and define a HumanIK skeleton), or map the nodes understood by HumanIK to joints in your character's existing skeleton (Define an existing skeleton for HumanIK). (See also Create a HumanIK skeleton definition.)

If mapping an existing skeleton, you must map all fifteen nodes required by HumanIK. This identifies the main elements of your character's skeleton. You cannot use HumanIK to control your character at runtime if you do not provide a characterization for these fifteen required nodes. In the HumanIK window, you cannot save or lock a characterization until you have successfully mapped all of these required nodes.

It is highly recommended that you also map as many other bones in your character's skeleton as possible to other optional HumanIK nodes. This will enhance the quality and believability of the poses constructed by HumanIK at runtime. The following sections give you some guidance on how to decide what bones you should map to what nodes.

Note: If you haven't yet built a character skeleton and you plan to do so using Maya's Skeleton Generator, you won't have to explicitly map character joints to define the character structure. See Create and define a default HumanIK skeleton for more information.

Required nodes

The fifteen nodes required by the HumanIK solver display in the full-body layout of the Character view, and grouped together in the Required group of the Name Match view.

These required nodes identify the main joints in your character’s skeleton: its ankles, knees, hips, spine base, shoulders, elbows, wrists and head. Figuring out which bone in your skeleton map to each of these nodes is generally straightforward:

Node Maps to
Hips The bone that is the parent of your character’s spine and leg chains.
LeftUpLeg and RightUpLeg The first bones in your character’s upper legs.
LeftLeg and RightLeg The first bones in your character’s lower legs.
LeftFoot and RightFoot The first bones that extend from your character’s ankles into its feet.
Spine The first bone in the spine that is above the bone you map to the hips node. Represents the base of the spine.
LeftArm and RightArm The first bones in your character’s upper arms.
LeftForeArm and RightForeArm The first bones in your character’s forearms.
LeftHand and RightHand The first bones that extend from your character’s wrists into its hands.
Head The last full bone in your character’s spine, not the tip of the head, but the last full bone in the neck chain. This is typically the bone that controls the skinning of the head.
Note: Two optional nodes are also shown in the full-body layout: the Reference and HipsTranslation nodes. For details on these optional nodes, refer to "Special nodes", below.

Spine and neck nodes

The HumanIK solver supports up to nine additional spine nodes (Spine1 to Spine9), and up to ten neck nodes (Neck, plus Neck1 to Neck9). These nodes are numbered from bottom up, with lower numbers closest to the hips and higher numbers closer to the head.

Hand and foot nodes

Hands and feet are exactly equivalent in HumanIK; each foot and each hand can contain the same types of joints. However, you define each of your character's feet and hands independently. This allows for greater complexity within each character. For example, a pirate character could have one peg-leg with no joints at all below the ankle, one booted foot with a single joint at the base of the toes but without fully articulated toes, one fully articulated hand, and one injured hand missing some fingers.

Finger and toe nodes

The Definition tab in the HumanIK window lets you configure up to six toes or fingers for each foot and each hand. From left to right, the usual fingers and toes are referred to as the Thumb, Index, Middle, Ring and Pinky respectively. HumanIK also supports the use of an extra sixth toe or finger, referred to as ExtraFinger. However, the joints in the remaining fingers, as well as those of the right hand, left foot and right foot, follow the same naming conventions.

Finger-base and toe-base nodes

The optional finger-base and toe-base nodes provide joints inside your character's hands and feet, at the points where the fingers and toes bend. These nodes are used most often in situations where the full articulation of each toe or finger is not required, but where bending the hand or foot at the location of the knuckles increases realism. For example, in the case of a human character with a closed shoe, the toe-base node allows the foot to bend like a hinge at the base of the toes, even though no nodes are defined for the individual toes.

Special nodes

In addition to the nodes discussed above, HumanIK supports the following nodes for special effects.

Shoulder and ShoulderExtra nodes

HumanIK offers two shoulder nodes on each side of the body, which can help to simulate the movements of a human's shoulder as the arm rotates and raises.

If your skeleton contains bones that lie between the spine and the bone that is mapped to the LeftArm or RightArm node, you can map those bones to the LeftShoulder, RightShoulder, LeftShoulderExtra and RightShoulderExtra nodes. You must map the shoulder node first; you can only map the LeftShoulderExtra node if you have already mapped the LeftShoulder node.

Roll nodes

Roll nodes let you map bones for your character's upper arms, lower arms, upper legs and lower legs.

Whenever a HumanIK solver applies roll rotation to a node that has a child roll node, a percentage of that roll rotation can be extracted from the parent node and applied to the child roll node instead. This process is referred to as roll extraction. Roll extraction simulates the way biped and quadruped arms and legs actually rotate around their axes. It can greatly enhance the realism of the animations created for skinned characters by controlling skin deformations from more appropriate positions further along the limb. See also Define roll bone behavior.

You can map a maximum of five roll bones per limb. All roll bones are parented to the same limb bone, and the placement of roll bones along the bone and the percentage of rotation per roll bone is determined by the number of roll bones per limb. When limbs have more than one roll bone, the percentage of rotation is divided between the bones.

Reference

This node is intended as an optional repository for the overall translation, rotation and scale of your character. Consider it an abstract parent to your character's hips.

In most cases, you do not need to use the Reference node. It is intended primarily for certain specific situations, such as:

  • When your model's hips have a parent that defines the overall translation, rotation and scaling of the character. In this case, it can be convenient to use the Reference node to synchronize data from that parent into HumanIK.
  • When you are retargeting animation, you can instruct HumanIK to force the target character to follow the scale of the source character's movements exactly. In this case, using the Reference node is the only way to modify the overall translation, rotation and scaling of the target character.

HipsTranslation

This node is used as an independent repository for the translation of your character's hips. If you define this node for your character, and the HumanIK solver needs to offset the translation of your character's Hips node, the resulting translation is stored back in the bone that is mapped to the HipsTranslation node rather than the bone mapped to the Hips node.

By default, the rotation of the hips is still stored in the Hips node, even when the HipsTranslation node is defined. However, you can configure HumanIK to store the rotation of the hips in the HipsTranslation node instead. You can also use the HipsTranslation node to retarget the trajectory of a source character to a target character.

Related topics