Final IK学习笔记9:Trigonometric IK

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()


    Final IK学习笔记9:Trigonometric IK_第1张图片
    TrigonometricIK

组件参数:

  • timeStep - 如果为零,将更新每个LateUpdate()中的求解器,用于骨骼带动画时的情况。 如果大于零,将按频率更新,以便求解器将在所有对象上同时到达其目标。
  • fixTransforms - 如果为true,则将解算器使用的所有Transforms修复为每个Update中的初始状态。 这可以防止没有动画骨骼和animator的剔除的问题,并且性能成本很低。

求解参数:

  • bone1 - 第一根骨头(上臂或大腿)
  • bone2 - 第二骨(前臂或小腿)
  • bone3 - 第三骨(手或脚)
  • target - 目标transform。如果已分配,则解算器的IKPosition和IKRotation将自动设置为目标的位置
  • positionWeight - 求解目标位置的权重(IKPosition)
  • rotationWeight - 求解目标旋转的权重(IKRotation)
  • bendNormal - 由骨骼位置定义的平面的法线。当肢体弯曲时,第二根骨骼将始终位于该平面上的某个位置

你可能感兴趣的:(Final IK学习笔记9:Trigonometric IK)