zoukankan      html  css  js  c++  java
  • [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系统标准的两足角色旨在复制和增强

  • 相关阅读:
    Ubuntu 安装 NTP 服务
    Packer 如何将 JSON 的配置升级为 HCL2
    WinRM 如何设置 TrustedHosts
    Windows 10 如何设置网络属性为私有
    Windows 使用 PowerShell 来管理另外一台 Windows 机器
    Windows PowerShell ISE 是什么和 PowerShell 有什么区别
    Spring事务传播属性和隔离级别
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用
    杂文 | 如何在演讲中讲个好故事
    2.2 思考框架:什么样的代码才是高效的代码
  • 原文地址:https://www.cnblogs.com/code1992/p/FinalIK.html
Copyright © 2011-2022 走看看