Final IK学习笔记9:Trigonometric IK
2019-05-11 本文已影响0人
AlpacasKing
Trigonometric IK是最基本的IK解算器,它基于余弦定律并解决了3段骨骼层次结构。 (IKSolverLimb扩展IKSolverTrigonometric只是为了添加一些额外的参数,比如弯曲修改器)
使用步骤:
- 将TrigonometricIK组件添加到第一个骨骼。
- 在TrigonometricIK组件中指定bone1,bone2和bone3
- 运行游戏
使用脚本控制:
public TrigonometricIK trig;
void LateUpdate () {
// Changing the target position, rotation and weights
trig.solver.IKPosition = something;
trig.solver.IKRotation = something;
trig.solver.IKPositionWeight = something;
trig.solver.IKRotationWeight = something;
trig.solver.SetBendGoalPosition(Vector goalPosition); // Sets the bend goal to a point in world space
}
在运行时添加TrigonometricIK:
- 通过脚本添加TrigonometricIK组件
-
调用TrigonometricIK.solver.SetChain()
TrigonometricIK
组件参数:
- timeStep - 如果为零,将更新每个LateUpdate()中的求解器,用于骨骼带动画时的情况。 如果大于零,将按频率更新,以便求解器将在所有对象上同时到达其目标。
- fixTransforms - 如果为true,则将解算器使用的所有Transforms修复为每个Update中的初始状态。 这可以防止没有动画骨骼和animator的剔除的问题,并且性能成本很低。
求解参数:
- bone1 - 第一根骨头(上臂或大腿)
- bone2 - 第二骨(前臂或小腿)
- bone3 - 第三骨(手或脚)
- target - 目标transform。如果已分配,则解算器的IKPosition和IKRotation将自动设置为目标的位置
- positionWeight - 求解目标位置的权重(IKPosition)
- rotationWeight - 求解目标旋转的权重(IKRotation)
- bendNormal - 由骨骼位置定义的平面的法线。当肢体弯曲时,第二根骨骼将始终位于该平面上的某个位置