Forward and Backward Reaching Inverse Kinematics solver. More...
Public Member Functions | |
void | SolveForward (Vector3 position) |
Solving stage 1 of the FABRIK algorithm. More... | |
void | SolveBackward (Vector3 position) |
Solving stage 2 of the FABRIK algorithm. More... | |
override Vector3 | GetIKPosition () |
Gets the IK position. NOTE: You are welcome to read IKPosition directly, this method is here only to match the Unity's built in IK API. More... | |
Public Member Functions inherited from IKSolverHeuristic | |
bool | SetChain (Transform[] hierarchy, Transform root) |
Rebuild the bone hierarcy and reinitiate the solver. More... | |
void | AddBone (Transform bone) |
Adds a bone to the chain. More... | |
override void | StoreDefaultLocalState () |
Stores the default local state for the bones used by the solver. More... | |
override void | FixTransforms () |
Fixes all the Transforms used by the solver to their initial state. More... | |
override bool | IsValid (ref string message) |
Determines whether this instance is valid or not. If returns false, also fills in an error message. More... | |
override IKSolver.Point[] | GetPoints () |
Gets all the points used by the solver. More... | |
override IKSolver.Point | GetPoint (Transform transform) |
Gets the point with the specified Transform. More... | |
Public Member Functions inherited from IKSolver | |
bool | IsValid () |
Determines whether this instance is valid or not. More... | |
void | Initiate (Transform root) |
Initiate the solver with specified root Transform. Use only if this IKSolver is not a member of an IK component. More... | |
void | Update () |
Updates the IK solver. Use only if this IKSolver is not a member of an IK component or the IK component has been disabled and you intend to manually control the updating. More... | |
void | SetIKPosition (Vector3 position) |
Sets the IK position. NOTE: You are welcome to set IKPosition directly, this method is here only to match the Unity's built in IK API. More... | |
float | GetIKPositionWeight () |
Gets the IK position weight. NOTE: You are welcome to read IKPositionWeight directly, this method is here only to match the Unity's built in IK API. More... | |
void | SetIKPositionWeight (float weight) |
Sets the IK position weight. NOTE: You are welcome to set IKPositionWeight directly, this method is here only to match the Unity's built in IK API. More... | |
Transform | GetRoot () |
Gets the root Transform. More... | |
delegate void | UpdateDelegate () |
Delegates solver update events. More... | |
delegate void | IterationDelegate (int i) |
Delegates solver iteration events. More... | |
Public Attributes | |
IterationDelegate | OnPreIteration |
Called before each iteration of the solver. More... | |
Public Attributes inherited from IKSolverHeuristic | |
Transform | target |
The target Transform. Solver IKPosition will be automatically set to the position of the target. More... | |
float | tolerance = 0f |
Minimum distance from last reached position. Will stop solving if difference from previous reached position is less than tolerance. If tolerance is zero, will iterate until maxIterations. More... | |
int | maxIterations = 4 |
Max iterations per frame More... | |
bool | useRotationLimits = true |
If true, rotation limits (if existing) will be applied on each iteration. More... | |
bool | XY |
Solve in 2D? More... | |
Bone[] | bones = new Bone[0] |
The hierarchy of bones. More... | |
Public Attributes inherited from IKSolver | |
Vector3 | IKPosition |
The IK position. More... | |
float | IKPositionWeight = 1f |
The IK position weight or the master weight of the solver. More... | |
UpdateDelegate | OnPreInitiate |
Called before initiating the solver. More... | |
UpdateDelegate | OnPostInitiate |
Called after initiating the solver. More... | |
UpdateDelegate | OnPreUpdate |
Called before updating. More... | |
UpdateDelegate | OnPostUpdate |
Called after writing the solved pose More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from IKSolver | |
static Transform | ContainsDuplicateBone (Bone[] bones) |
Checks if an array of objects contains any duplicates. More... | |
Properties inherited from IKSolver | |
bool | initiated [get, set] |
Gets a value indicating whether this IKSolver has successfully initiated. More... | |
Forward and Backward Reaching Inverse Kinematics solver.
This class is based on the "FABRIK: A fast, iterative solver for the inverse kinematics problem." paper by Aristidou, A., Lasenby, J.