[Unity菜鸟] Final IK
由于本人英文较烂,边翻译用户手册边学习。
用户手册
IK Components
Final IK 包含许多强大高速的IK组件
Aim
AimIK solver是一个对CCD算法(cyclic coordinate decent循环坐标下降算法)的修正,通过旋转骨骼的层次结构,确定瞄准目标后子骨骼的Transform。
它不同于内置Animator的 SetLookAtPosition 和 LookAtIK 功能,因为它能对不一致的层级主轴进行精确的目标转换。(because it is able to accurately aim transforms that are not aligned to the main axis of the hierarchy.)
AimIK能重定位角色动画产生非常稳定并且自然的样子,因此它在武器瞄准系统有巨大的潜能。使用AimIK我们能通过偏移单一的向前瞄准姿势或动画来瞄准目标,即使目标几乎在角色身后。它仅仅是对四元数奇点做180度的偏移,solver不知道把脊椎转向哪里。同LookAtIK一样,AimIK提供一个clampWeight属性来避免奇点问题。
AimIK还适用于旋转限制,然而它比其它约束solvers更容易阻塞,链条应该有很强的约束性。
Aim提供了高速高精度,仍须记住把目标的位置与aiming Transform维持在一个安全的范围。如果到traget的距离小于到aiming Transform的距离,solver会尝试卷向自身,可能不会产生预期的结果。
步骤:
· 把AimIK组件添加到角色上
· 把所有的脊椎骨(spine)骨骼节点赋给AimIK组件的Bones (如Bip002 Spine1 Spine2 Spine3 Neck)
· 给Aim Transform赋值 (你想瞄准的目标的Transform)
· 确保Axis代表你想要瞄准的Aim Transform的当前轴 (axis)
· 设置Weight为1,点击Play运行
改变瞄准目标 target
public AimIK aimIK; void LateUpdate () { aimIK.solver.IKPosition = something; }
改变Aim Transform
public AimIK aimIK; void LateUpdate () { aimIK.solver.transform = something; aimIK.solver.axis = localAxisOfTheTransformToAimAtTheTarget; }
在运行时增加AimIK
· 通过脚本添加AimIK组件
· 调用 AimIK.solver.SetChain()
AimIK slover 运行效果
Biped IK
IK系统标准的两足角色旨在复制和增强