Documentation / scene / TwoBoneIKSolver
Class: TwoBoneIKSolver
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:20
Two Bone IK solver for chains with exactly 3 joints (2 bones).
Remarks
This solver uses an analytical solution specifically optimized for two-bone chains like arms (shoulder-elbow-wrist) or legs (hip-knee-ankle). It's faster and more stable than iterative methods like FABRIK for this case.
The solver supports an optional pole vector to control the bending direction of the middle joint (elbow/knee).
Extends
Constructors
Constructor
new TwoBoneIKSolver(
chain,poleVector?,poleWeight?):TwoBoneIKSolver
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:35
Create a Two Bone IK solver.
Parameters
chain
The IK chain to solve (must have exactly 3 joints)
poleVector?
Vector3 = null
Optional pole vector position in world space
poleWeight?
number = 1
Weight of the pole vector constraint (0-1, default: 1)
Returns
TwoBoneIKSolver
Overrides
Properties
_chain
protected_chain:IKChain
Defined in: libs/scene/src/animation/ik/ik_solver.ts:11
The IK chain to solve
Inherited from
_maxIterations
protected_maxIterations:number
Defined in: libs/scene/src/animation/ik/ik_solver.ts:13
Maximum number of iterations
Inherited from
_tolerance
protected_tolerance:number
Defined in: libs/scene/src/animation/ik/ik_solver.ts:15
Convergence tolerance (distance threshold)
Inherited from
Accessors
chain
Get Signature
get chain():
IKChain
Defined in: libs/scene/src/animation/ik/ik_solver.ts:33
Get the IK chain.
Returns
Inherited from
poleVector
Get Signature
get poleVector():
Vector3
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:117
Get the pole vector position.
Returns
Vector3
Set Signature
set poleVector(
value):void
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:121
Parameters
value
Vector3
Returns
void
poleWeight
Get Signature
get poleWeight():
number
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:136
Get the pole vector weight.
Returns
number
Set Signature
set poleWeight(
value):void
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:140
Parameters
value
number
Returns
void
Methods
setMaxIterations()
setMaxIterations(
value):void
Defined in: libs/scene/src/animation/ik/ik_solver.ts:40
Set maximum number of iterations.
Parameters
value
number
Returns
void
Inherited from
getMaxIterations()
getMaxIterations():
number
Defined in: libs/scene/src/animation/ik/ik_solver.ts:47
Get maximum number of iterations.
Returns
number
Inherited from
setTolerance()
setTolerance(
value):void
Defined in: libs/scene/src/animation/ik/ik_solver.ts:54
Set convergence tolerance.
Parameters
value
number
Returns
void
Inherited from
getTolerance()
getTolerance():
number
Defined in: libs/scene/src/animation/ik/ik_solver.ts:61
Get convergence tolerance.
Returns
number
Inherited from
setTwistConstraint()
setTwistConstraint(
jointIndex,minTwist,maxTwist,smoothFactor?):void
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:70
Set twist constraint for a specific joint.
Parameters
jointIndex
number
Index of the joint (0 = root, 1 = middle)
minTwist
number
Minimum twist angle in radians
maxTwist
number
Maximum twist angle in radians
smoothFactor?
number = 0.3
Smoothing factor [0-1] (default: 0.3)
Returns
void
getTwistConstraint()
getTwistConstraint(
jointIndex):TwistConstraint
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:93
Get twist constraint for a specific joint.
Parameters
jointIndex
number
Index of the joint
Returns
Twist constraint or undefined if not set
removeTwistConstraint()
removeTwistConstraint(
jointIndex):boolean
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:103
Remove twist constraint for a specific joint.
Parameters
jointIndex
number
Index of the joint
Returns
boolean
True if a constraint was removed
clearTwistConstraints()
clearTwistConstraints():
void
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:110
Clear all twist constraints.
Returns
void
solve()
solve(
target):boolean
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:150
Solve the IK chain to reach the target position using Two Bone IK algorithm.
Parameters
target
Vector3
Target position for the end effector
Returns
boolean
True if the target is reachable, false if stretched to maximum
Overrides
applyToNodes()
applyToNodes(
weight?):void
Defined in: libs/scene/src/animation/ik/two_bone_ik_solver.ts:330
Apply the solved joint positions to scene nodes as rotations.
Parameters
weight?
number = 1
Blend weight (0 = original, 1 = full IK, default: 1)
Returns
void