Unity3d Final IK 插件的使用

本篇简单介绍Unity3d 插件 Final IK的使用

Final IK简介

Final IK是一个反向动力控制插件。(unity版本为5.1及以上版本)

反向动力控制:通俗的将就是通过子骨骼,推导出其所在骨骼链上n级父骨骼位置,从而确定整条骨骼链的方法。所以你只需要控制子骨骼进行运动操作。

Final IKIK类型

Final IK为我们提供了很多IK类型供选择,主要的IK类型。

  • Aim IK:是CCD算法的改进版本。可以设置一个目标,使关节末端始终瞄准该目标,可以用于武器的瞄准。它可以消除单一的向前瞄准,甚至可以瞄准角色的背后
  • Biped IK:它可以自动检测两足动物的骨骼,而且包括一个头部IK控制。可以使人物的姿势更加的自然。
  • CCD IK:将每个关节和末端对齐,使得最后一个骨骼迭代更接近末端。可以用来制作尾巴、机械臂(工业机器人)。
  • FABR IK:类似于CCD IK,但是相较来说每个关节不需要和末端对齐。所以更加的自由。可以用来制作绳索。
  • Limb IK:主要是用于3段手和腿或是其他肢体类型。
  • Look At IK:主要用于旋转一系列骨骼面向目标物体。

Final IK的使用

手动添加CCD IK

以CCD IK为例

  • 首先我们在3Dmax创建一个简单的机械臂。

  • 我们给Axis1添加一个CCDIK 你可以在插件的 RootMotion --> FinalIK --> IK Components 位置找到。然后依次添加三个Bones

ps: 你也可以通过添加不同的限制属性来限制每个轴的运动。

如图我们给Axis2添加了一个角度限制,限制它只能在荧光区域进行旋转。

  • 最后我们创建一个脚本来控制IK。

using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;

public class CCD : MonoBehaviour {

    CCDIK ccdIK;

    // 获取ccdIK
    void Start () {
        ccdIK = GetComponent<CCDIK> ();
    }

    // 设置ccdIK解算器的x 坐标为 -10
    void LateUpdate () {
        ccdIK.solver.IKPosition.x = -10;
    }
}

绑定并运行,我们发现棍子可耻的弯了。

上面的那个就是IK解算器

运行时添加CCD IK

  • 我们创建一个脚本

然后绑定到我们的棍子上,然后运行它又弯了。


using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;

public class CCD2 : MonoBehaviour {

    Transform obj1;
    Transform obj2;
    CCDIK ccdIK;

    void Start () {

        //给绑定的物体添加一个`CCDIK`
        gameObject.AddComponent<CCDIK>();

        //获取要添加的其他两个`bones`
        obj1 = GameObject.Find ("Axis_2_2").transform;
        obj2 = GameObject.Find ("Axis_2_2/Axis_2_3").transform;

        Transform[] tran = new Transform[] {gameObject.transform, obj1, obj2 };

        ccdIK = gameObject.GetComponent<CCDIK> ();

        // 使用`ccdIK.solver.SetChain()`绑定骨骼
        ccdIK.solver.SetChain (tran,gameObject.transform);
    }

    void Update () {
        ccdIK.solver.IKPosition.x = -2;
    }
}

原文地址:https://www.cnblogs.com/chenjy1225/p/9661378.html

时间: 2024-10-13 00:32:16

Unity3d Final IK 插件的使用的相关文章

Unity给力插件之Final IK

Final IK细节: 1.Aim IK:设定一个目标,关节末端始终朝向该目标,一般用来做头部的朝向. 步骤: a.在模型头节点处添加Aim空物体并reset b.给模型添加Aim IK组件,并填上Aim Transform及根脊椎到头的4节关节(可以设置权重) c.创建目标target(空物体)于脸的正前方, d.在模型上添加空物体Pin,位置与target一致 e.给target添加Aim Boxing脚本,参数为模型对象及pin f.运行后移动target,模型的脸带动上半身的身体并始终朝

[Unity菜鸟] Final IK

由于本人英文较烂,边翻译用户手册边学习. 用户手册  IK Components Final IK 包含许多强大高速的IK组件 Aim  AimIK solver是一个对CCD算法(cyclic coordinate decent循环坐标下降算法)的修正,通过旋转骨骼的层次结构,确定瞄准目标后子骨骼的Transform. 它不同于内置Animator的 SetLookAtPosition 和 LookAtIK 功能,因为它能对不一致的层级主轴进行精确的目标转换.(because it is ab

unity3d热更新插件uLua学习整理

前言 IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeDom.Compiler 无法使用这三个不能用,就把传统dotnet动态路径坑死了为啥“这三个不能用,就把传统dotnet动态路径坑死了”呢动态载入dll或者cs的方法就这几个, IOS 下不能动态载入dll或者cs 文件,已经编译进去的没事.=============================

Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放

问题描述:unity3d程序,使用uWebKit插件嵌入网页,用来播放FLV视频,有的电脑可以正常播放,有的电脑在网页中播放不了ps:网页中的播放器用的是player.swf解决方案:是由于网页中的播放器播放FLV需要Flash Player的支持,1.安装非IE内核版的Flash Player <ignore_js_op> 2.导入Flash Player dll到unity程序中的uWebKit插件文件夹下面NPSWF32_13_0_0_182.dll<ignore_js_op>

Unity3d官方测试插件学习-单元测试,集成测试

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多Unity3D资源.Unity3D培训视频.Unity3D教程.Unity3D常见问题.Unity3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 其实Unity很早就有测试支持,从mono编辑器的UnitTest选项,还有安装目录中的NUnit.dll都可以看出来.只是国内很少有人研究. 这次拿了AssertStore下的测试插件研究了一下,总结了一套可行的方案 htt

Unity3d官方单元测试插件学习

更多Unity3D心得:Unity3D心得分享 其实Unity很早就有单元测试支持,从mono编辑器的UnitTest选项,还有安装目录中的NUnit.dll都可以看出来.只是国内很少有人研究. 这次拿了AssertStore下的测试插件研究了一下,总结了一套可行的方案 https://www.assetstore.unity3d.com/#/content/13802 之前没有用过单元测试的童鞋可以用vs的单元测试先上手,下载一个vs2012 这个插件分为2种测试模式,单元测试UnitTest

Unity3D使用EasyMovieTexture插件播放视频

Unity3D对于视频的播放兼容个人感觉很差劲,之前写过一篇使用Unity3D自己自带的一些功能去播放视频,链接如下: http://www.cnblogs.com/xiaoyulong/p/8627016.html 今天我们使用EasyMovieTexture插件播放视频播放视频.个人觉得EasyMovieTexture插件还是比较好用的,里面封装了很多API,使用起来很方便.有一个不好的地方就是很多方法只有在视频播放时才有效果,就是觉得这个有点坑. 如上图,新建一个物体,挂上 MediaPl

elasticsearch ik插件

先来一个标准分词(standard),配置如下: curl -XPUT localhost:9200/local -d '{ "settings" : { "analysis" : { "analyzer" : { "stem" : { "tokenizer" : "standard", "filter" : ["standard", "

unity3d的playmaker插件使用教程,六、血量显示及处理

这里展示了如何处理和显示血量,如何使用全局变量在多个状态机下传递信息,如何使用类似if的判断,如何进行数据类型转换. 准备工作,血量显示的文本框 加血的道具 模拟玩家的桶 首先,新建一个空的Game Object,命名为HealthManager,管理整个过程 添加Setup.UpdateGUI.AddHealth.Listener状态. 添加Add_Health事件. 添加全局变量 如果在添加全局变量的时候,无法添加并出现以下错误 是因为少了一个目录,在Assets\Plugins\PlayM