Houdini 20.0 Nodes Geometry nodes

Full Body IK geometry node

Transfer a motion to a SOP-based skeleton using full-body inverse kinematics algorithm.

On this page
Since 18.5


Full Body IK Configure Targets and Configure Joints can be used to set up per-joint properties for the IK solver.


This dictionary point attribute configures how the joint’s goal transform behaves in a full-body inverse kinematics solver. This is only used when the joint has a goal transform (for example, if the joint is mapped to a joint on the source skeleton). For more details on the valid keys, see the targetoptions parameter for solvephysfbik and solvefbik.

This Configuration Attribute dictionary point attribute stores the configurations. For more details on the valid keys, see the jointoptions parameter for solvephysfbik and solvefbik.



The group of points to affect.

Root Constrain

When on, specifies the joint on the target skeleton that will be constrained to its driver prior to the full-body IK solve. This can be useful when retargeting to an animation in which the character turns around more that 180 degrees from the rest pose.


The joint you specify needs to be mapped to a joint on the source skeleton for the retarget.


FABRIK (Forward and Backward Reaching Inverse Kinematics)

A very fast, simple Full Body IK solver. This solver prefers to be very densely mapped with a high number of iterations to converge nicely and can behave less stably than the Physical Full Body IK solve. This solver is widely used across many different platforms so can be suitable for applications where compatibility is important or where the more physically based solve might be unsuitable.

Physical Full Body IK (Default)

A sophisticated and robust algorithm for solving the Full Body problem on a skeleton, this solver supports Center of Mass calculations and can provide an intuitive solve from very few target transforms. This solver prefers to be sparsely mapped with far fewer iterations that the FABRIK solve.


Increasing the iterations often requires a higher value to be set on the 'Damping' parameter.


The number of iterations of the solve to perform.


Damping factor for the solver. Larger values will produce more stable results when, for example, a target is unreachable. A value that is too large, however, will require more iterations to converge. Around 0.5 is typically a suitable initial value.


The margin of error that we allow the solver to work within. Once achieved, the solver can exit early from its iterations (setting this to 0 will force the solver to always perform the full number of iterations).

Pin Root

Pin the translation of any points without a parent.

Map Using

This parameter allows you to choose whether to use a dictionary attribute on the first input to look up the drivers on the second input, or simply match by an attribute that is present on both inputs. For example, the second option is useful when the second input contains a subset of the first input’s points.

Mapping Attribute

Use a dictionary point attribute present on the first input to look up the drivers on the second input. This attribute is created for you by the Map Points SOP, but any dictionary attribute matching the following format can be used:

Match By Attribute

Match points on the first input to corresponding points on the second input using a given point attribute. For example, if Attribute To Match is set to name, then the points on the first input will be driven by the points on the second input that share the same name.

Mapping Attribute

The name of the dictionary point attribute on the first input to use for mapping.

Attribute To Match

The name of the point attribute present on both inputs to be used to map points.

Delete Mapping Attributes

Clean up the attributes used to configure the solver.

Compute Local Transform

Recompute the local transforms after the solve.

Configuration Attribute

The name of the dictionary point attribute that stores the configurations. See the Configure Joints SOP .


Target Skeleton

The skeleton which we wish to run the Full Body IK solve onto. Typically this would be the skeleton of the character we wish to transfer animation onto having first mapped the two skeletons to each other use the Map Points SOP.


This input does not necessarily have to be static, an animated input can also be modified based upon the driver transforms on the third input.

Source Skeleton

The driver transforms for the Full Body IK solve.


First Output

The skeleton on the first input with the result of the Full Body IK applied.

Second Output

The unmodified Source Skeleton.

See also

Geometry nodes