Final IK学习笔记6:Biped IK

Biped IK是标准Biped角色的IK系统,旨在复制和增强Unity内置角色IK设置的行为。

BipedIK还是FullBodyBipedIK?
最初BipedIK比FullBodyBipedIK的唯一好处是它的性能要好得多。但是,由于FinalIK 0.4,我们能够将FBBIK解算器迭代计数设定为0,在这种情况下,全身效果将不会被求解,而且其速度几乎与BipedIK相同。这样可以更轻松地对距离内的角色进行IK优化。因此,自0.4起,FullBodyBipedIK组件是解决Biped角色的建议解决方案。

BipedIK或Unity的Animator IK?

  • Animator IK不允许对任何最基本的求解器参数进行修改,例如肢体弯曲方向,这使得系统很难(如果不是不可能)在稍微更高级的用例中使用或扩展。即使在最简单的情况下,Animator也可以产生不自然的姿势或在不需要的方向弯曲肢体,并且没有任何办法可以解决问题。
  • Animator IK缺少脊椎解算器。
  • Animator的LookAt功能通常可以解决奇怪的姿势,例如在仰视肩膀时向后弯曲脊柱。
  • BipedIK还采用了AimIK。
  • BipedIK不需要Unity Pro。
    为了简化从Unity内置Animator IK的迁移,BipedIK支持相同的API,因此您可以从animator.SetIKPosition(...)转到bipedIK.SetIKPosition(...)。

与FinalIK软件包中的任何其他组件一样,BipedIK可以最大限度地减少设置所需的工作。 BipedIK会根据角色的骨骼结构和最常见的命名惯例自动检测Biped骨骼,因此,除非您使用中文命名骨骼,否则只要您可以放入组件,就应该准备好BipedIK。如果BipedIK无法识别骨骼参考,或者你只想更改它们,则可以在inspector中管理它们。


Final IK学习笔记6:Biped IK_第1张图片
BipedIK

使用步骤:

  • 将BipedIK组件添加到角色的根节点(与Animator / Animation组件相同的GameObject)
  • 确保自动检测到的Biped骨骼是正确的
  • 按下播放,检查solver的处理结果

使用Biped IK的sovler:

public BipedIK bipedIK;
void LateUpdate () {
    bipedIK.solvers.leftFoot.IKPosition = something;
    bipedIK.solvers.spine.IKPosition = something;
    ...
}

在运行时添加BipedIK:

  • 通过脚本添加BipedIK组件
  • 分配BipedIK.references
    (- 可选)调用BipedIK.SetToDefaults()将solver的参数设置为默认的BipedIK值。 否则使用每个sovler的默认值。

组件参数:

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

Solver 变量:

  • Left Foot
  • Right Foot
  • Left Hand
  • Right Hand
  • Spine
  • Aim
  • Look At
  • Pelvis - Pos Offset 和Rot Offset 可用于从角色的动画位置/旋转中偏移角色的骨盆。 Pos Weight和Rot Weight可用于将骨盆平移和旋转到bipedIK.solvers.pelvis.position和bipedIK.solvers.pelvis.rotation。


    Final IK学习笔记6:Biped IK_第2张图片
    BipedIK组件

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