SkeletonIK

Inherits: Node < Object Skeleton bone chain at a certain point in 3D by rotating all bones in the chain accordingly.

Description

Skeleton bone chain at a certain point in 3D by rotating all bones in the chain accordingly. A typical scenario for IK in games is to place a characters feet on the ground or a characters hands on a currently hold object. SkeletonIK uses FabrikInverseKinematic internally to solve the bone chain and applies the results to the Skeleton bones_global_pose_override property for all affected bones in the chain. If fully applied this overwrites any bone transform from Animations or bone custom poses set by users. The applied amount can be controlled with the interpolation property.

  1. # Apply IK effect automatically on every new frame (not the current)skeleton_ik_node.start()# Apply IK effect only on the current frameskeleton_ik_node.start(true)# Stop IK effect and reset bones_global_pose_override on Skeletonskeleton_ik_node.stop()# Apply full IK effectskeleton_ik_node.set_interpolation(1.0)# Apply half IK effectskeleton_ik_node.set_interpolation(0.5)# Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton)skeleton_ik_node.set_interpolation(0.0)

Tutorials

  • 3D Inverse Kinematics Demo

    Properties

    Methods

    Property Descriptions

  • float interpolation 1.0 will overwrite all skeleton bone transforms completely while a value of 0.0 will visually disable the SkeletonIK. A value at or below 0.01 also calls Skeleton.clear_bones_global_pose_override.

  • Vector3 magnet target property or target_node) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position.

  • int max_iterations Number of iteration loops used by the IK solver to produce more accurate (and elegant) bone chain results.

  • float min_distance The minimum distance between bone and goal target. If the distance is below this value, the IK solver stops further iterations.

  • bool override_tip_basis true overwrites the rotation of the tip bone with the rotation of the target (or target_node if defined).

  • String root_bone The name of the current root bone, the first bone in the IK chain.

  • Transform target override_tip_basis is true, how the tip bone is rotated. If a target_node path is available the nodes transform is used instead and this property is ignored.

  • NodePath target_node NodePath for the IK chain. If available, the node’s current Transform is used instead of the target property.

  • String tip_bone target transform (or target_node if defined).

  • bool use_magnet true, instructs the IK solver to consider the secondary magnet target (pole target) when calculating the bone chain. Use the magnet position (pole target) to control the bending of the IK chain.

    Method Descriptions

  • Skeleton get_parent_skeleton ( ) const Skeleton Node that was present when SkeletonIK entered the SceneTree. Returns null if the parent node was not a Skeleton Node when SkeletonIK entered the SceneTree.

  • bool is_running ( ) true if SkeletonIK is applying IK effects on continues frames to the Skeleton bones. Returns false if SkeletonIK is stopped or start was used with the one_time parameter set to true.

  • start ( bool one_time=false ) Skeleton bones but will only take effect starting on the next frame. If one_time is true, this will take effect immediately but also reset on the next frame.

  • stop ( ) Skeleton bones and also calls Skeleton.clear_bones_global_pose_override to remove existing overrides on all bones.