由于本人英文较烂,边翻译用户手册边学习。

用户手册 

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系统标准的两足角色旨在复制和增强

[Unity菜鸟] Final IK的更多相关文章

  1. Unity给力插件之Final IK

    Final IK细节: 1.Aim IK:设定一个目标,关节末端始终朝向该目标,一般用来做头部的朝向. 步骤: a.在模型头节点处添加Aim空物体并reset b.给模型添加Aim IK组件,并填上A ...

  2. [Unity菜鸟] 协程Coroutine

    1.协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态. unity中StartCoroutine()就是协程,协程实际上是在一个线程中, ...

  3. [Unity菜鸟] Unity Web Player 相关问题 (待完善)

    1. 发布网页版Unity自适应网页大小 发布网页版,Unity3D自适应网页大小.这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下. 这里用Uinty4.0发布网页版,我去掉了里面的标题 ...

  4. [Unity菜鸟] Unity读XML

    1. 在Unity中调试可行,发布成exe可行,发布成web不行 Application.dataPath 在Unity中调试是在“..Assets”文件夹下, 发布成exe文件是在“..yourNa ...

  5. [Unity菜鸟] 笔记2 —— 问题篇

    记录在学习<Unity 3.x 游戏开发 经典教材>时遇到的各种问题与笔记 1. 初始不能降低Terrain的高度,需要到Terrain设置的第二个按钮中将Height从0调高 (注意:最 ...

  6. [unity菜鸟] 笔记1 —— 函数篇

    SendMessage() 调用其他物体中的指令,先在脚本中编写一个自定义的函数,然后使用SendMessage()命令来调用那个物体上的命令 //①将以下函数附给target对象 void Rena ...

  7. [Unity菜鸟] 摄像头

    1. 连接外置摄像头 2. Unity3D中调用外接摄像头,并保存为图片文件

  8. [Unity菜鸟] 射线

    1. 射线用 Physics.Raycast 都可以判断,用 collider.Raycast 只在某些(不明)情况下可以 void Update() { Ray ray = Camera.main. ...

  9. [Unity菜鸟] Character控制移动

    1. 给角色加角色控制器组件,然后用以下代码可以控制角色移动和跳跃 float speed = 6.0f; float jumpSpeed = 8.0f; float gravity = 20.0f; ...

随机推荐

  1. linux服务器git pull/push时提示输入账号密码之免除设置

    1.先cd到根目录,执行git config --global credential.helper store命令 [root@iZ25mi9h7ayZ ~]# git config --global ...

  2. TDirectory.GetDirectories 获取指定目录下的目录

    使用函数: System.IOUtils.TDirectory.GetDirectories 所有重载: class function GetDirectories(const Path: strin ...

  3. uWSGI uwsgi_response_write_body_do(): Connection reset by peer 报错的解决方法

    服务器架构是:Nginx+uWSGI+Django 某一天,发现服务器返回的response不完整,例如文档大小是200K的,但是只返回了100K给浏览器. 查了一下uWSGI的日志,发现以下错误: ...

  4. Mininet安装及使用

    最简单的方法是开始 下载一个预包装Mininet / Ubuntu VM . 这个虚拟机包括Mininet本身,所有预装OpenFlow二进制文件和工具,调整内核配置,以支持更大的Mininet网络. ...

  5. suse linux 操作系统下打BASH补丁

    1.检查当前版本信息: bash -version echo $BASH_VERSION   2.打4.3版本的补丁 在tmp目录下(保险起见,空间至少要100M以上)新建一个bash_upgrade ...

  6. 【学习总结】声明变量在@interface括号中与使用@property的区别

    方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变量 , 其他类无法访问,只能够该类内部 ...

  7. ASP.NET Web - 服务器控件

    控件 HTML 说明 Label <span> 返回一个包含文本的span元素 Literal static text 返回简单的静态文本.使用Literal控件,可以根据客户应用程序转换 ...

  8. iOS10 配置须知-b

    在iOS10中,如果你的App想要访问用户的相机.相册.麦克风.通讯录等等权限,都需要进行相关的配置,不然会直接crash.需要在info.plist中添加App需要的一些设备权限. NSBlueto ...

  9. Text Template Transformation Toolkit

    Text Template Transformation Toolkit       1.且算简介         笔者以一个英文字母和一个数字取了一个简单的名字.名唤"T4"(名 ...

  10. android聊天,存储聊天记录sqlite

    项目中有聊天模块,需要用到打开activity的时候初始化聊天记录的情况.大致情况如下: 辅助类:ChatSQLiteHelper   在第一次时会调用oncreate方法(判断的标准是schedul ...