1、基础

现在Animation编辑器给个模型设计一个动画,都会自动为此模型加上Animator组件,并产生一个controller后缀的控制器和一个相关的anim后缀的动画剪辑, unity根据Animator去播放动画,控制器去管理各个动画重定向(一个动画转到另一个动画),动画剪辑是展示是个什么样的动画效果,可以看出Unity建议我们使用Mecanim动画,而不再去使用老的动画了!

1、如果我们用Animation编辑器给一个Sphere球做一个改变位置的动画,那么unity会自动给此Sphere加上控制器等如上的操作,假如,我想用Animation老的动画,而不用控制器,那么就需要把此控制器删除,然后附加Animation组件,然后把改变位置的动画赋给Animation组件,运行可以发现,动画根本不起作用!只能用控制器!如果给一个胶囊Capsule添加一个Animation组件,并把这个改变位置的动画赋给此Animation,可以发现也是不起作用的!只能为这胶囊附加控制器,然后把此改变位置的动画放入控制器中,才可以正确的播放动画!

2、只有自己制作的模型(fbx)才能进行旧动画和新动画之间的转换,而像系统自带的模型制作的动画(Animation),是无法转换的!

3、如果一个人物模型使用的是老的动画系统,即人物模型的Inspector面板下选择Rig ->Animation Type为Legacy,表示使用老的动画系统,那么人物会使用Animation这个组件去播放动画,但是我们可不可以把上面的改变位置的动画赋给此Animation去使用呢?答案是”不可以“!我们选中人物,打开Animation编辑器,查看人物的Idle动画,可以看到此动画非常复杂,运用到了人物身上的每一个关节,同时自己也是无法再Add Curve添加动画的!可想而知,一个简简单单的站立动画都这么复杂了,那么上面的改变位置的动画必然无法运用到人物模型上!

4、如果一个人物模型使用的是新的动画系统,即人物模型的Inspector面板下选择Rig ->Animation Type为Humanoid,表示使用新的动画系统,那么人物会使用Animator这个组件去播放动画,同样Animator控制器也是无法使用那个改变位置的动画的

5、如果人物使用的是新的动画系统Animator,那么就可以使用其他模型的动画剪辑了,只要把其他模型的动画剪辑拖入此人物的控制器中即可!

6、如果人物使用的是旧的动画系统Animation,那么是无法使用其他模型的动画剪辑的,把其他模型的动画剪辑拖入此人物的Animation组件中,是无法使用的!

7、一般一个模型是由Transform、Renderer渲染、Mesh、动画组成(新的动画系统还包含Avatar):

    

8、在模型的Rig选项下,keep Additonal Bones保持额外的骨骼(有的模型是没有此选项),所谓的额外骨骼就是指模型的辫子,尾巴之类的骨骼!有的模型有optimize Game Objects优化游戏对象此选项

9、在Configuration的Avatar界面中,Mapping有四个选项,clear表示清除所有匹配,Automap自动匹配,Load加载匹配设置文件,Save保存匹配设置文件!如果想使匹配设置文件变的通用,就必须保证命名的规范性!

这篇文章后面也讲了不少Mecanim动画:http://www.cnblogs.com/MrZivChu/p/zoom.html

2、IK

1、在Animator窗口里勾选IK Pass

2、关键代码

void OnAnimatorIK(int layerIndex)
{
    animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1f);//设置权重
animator.SetIKPosition(AvatarIKGoal.RightHand, rightHand.transform.position);//设置右手IK的位置
}

权重值的范围在0~1,值越小,控制力就越弱,反之越强

例:当权重值为0.1,1时分别的效果情况如下

模型源动画:

权重值为0.1时:

权重值为1时:

可以看出,当权重值为0.1时,和模型原动画差不多,基本上是无法控制模型的右手的,而权重值为1时,模型的右手基本上被牢牢的控制在IK所设置的位置上那了,即小球的位置那,完全上不受其他动画影响!

3、Apply Root Motion

Animator组件中的Apply Root Motion选项如果我们勾选了的话,当播放动画时,是通过动画运动的幅度来改变角色的Transform的,如果我们不勾选,我们就可以用脚本设定此角色的Tranform。
  如果在Animator中我们勾选了Apply Root Motion,我们不必修改角色的Transform,依靠角色的动作本身的设计就能改变角色的Transform。但是如果我们没有勾选它,那我们就只能依靠程序来动态的改变其Transform,就像老式的动画系统一样。

根运动就是物体的整个网格的影响逐渐远离其创造的起点,但运动是由动画本身创建,而不是通过改变Transform的位置。

 详解:

在很多动画当中,模型的位置、旋转往往会发生变化,我们需要决定是否将模型在动画中发生的这些变换应用到实际模型。

例如我播放一个模型的动画,可以看到这个动画影响了此模型的位置和旋转:

Unity中有两个跟这个有关的设置。如下图:

 

1、不勾选右图的Apply Root Motion,就表示模型的位置和旋转不会受动画的影响(此时就和左图的设置没有关系了!)

2、如果勾选了右图的Apply Root Motion,那么就表示模型的位置和旋转受动画的影响,和左图的设置有关系,如下:

3、但有时我们想模型的位置受动画影响,但是旋转不受动画的影响,那么就要勾选右图的Apply Root Motion,并且勾选左图Root Transform Rotation下的Bake Into Pose(Root Transform Position(Y)下的Bake Into Pose不勾选,Root Transform Position(XZ)下的Bake Into Pose不勾选)

效果图如下:

 

同理:

勾选了Root Transform Position(Y)下的Bake Into Pose就表示模型Position的Y坐标不受动画影响

勾选了Root Transform Position(XZ)下的Bake Into Pose就表示模型Position的XZ坐标不受动画影响

另外、还有左图的Based Upon设置,总共有三个,因为有的模型的位置会有偏移,所以我们一般把此项设置成Original,即使模型基于原点!

Rotation下的Based Upon有两个可选值:Original(基于原点),Body Orientation(基于身体方向)

Position(Y)下的Based Upon有三个可选值:Original(基于原点),Center of Mass(基于质量中心),Feet(基于脚)

Position(XZ)下的Based Upon有两个可选值:Original(基于原点),Center of Mass(基于质量中心)

4、设置模型接收光照

有时候把模型放到场景中去,模型整体是暗色调的,这是因为模型没有接收光照的影响,找到们模型的Render组件,勾选User Light Probes即可!

参考:http://wiki.ceeger.com/script:unityengine:classes:animator:animator?s[]=ik

http://www.xuanyusong.com/archives/2264

http://blog.csdn.net/cubesky/article/details/39478207

Mecanim动画的更多相关文章

  1. Unity3D Mecanim 动画系统骨骼动画问题解决方法

    http://7dot9.com/2014/08/16/unity3d-mecanim%E5%8A%A8%E7%94%BB%E7%B3%BB%E7%BB%9F%E9%AA%A8%E9%AA%BC%E5 ...

  2. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  3. Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)

    认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什 ...

  4. Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

    Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...

  5. [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合

    大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 这段时间博主将大部分的精力都放在了研究官方演示样例项目上,主要是希望能够从中挖掘出有价值的东 ...

  6. [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统

            大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...

  7. Mecanim动画系统

    序言:Mecanim动画系统是Unity4.0之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...

  8. 【Unity】第10章 Mecanim动画系统

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉 ...

  9. u3d Mecanim动画

    作为Unity4.0的主要更新功能,Mecanim动画被寄予了很多的期望.系统有先进的地方,也有不足的地方.这些我们留到最后再来总结. 阿赵粗略的学习了一下,写下以下的教程.这篇教程简单的说明了Mec ...

  10. 01、Mecanim动画系统

    序言:Mecanim动画系统是Unity4.0之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...

随机推荐

  1. Hash模板

    ;//一般为靠近总数的素数 struct Hashtable { int x;//hash存的值 Hashtable * next; Hashtable() { next = ; } }; Hasht ...

  2. 【转】Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  3. 利用python的numpy创建矩阵并对其赋值

    创建一个3X3的矩阵并对其赋值: x = numpy.array([[1,2,3],[4,5,6],[7,8,9]]) print x print x.shape 运行结果: [[ ] [ ] [ ] ...

  4. 3.初识Cron表达式

    Cron: 计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思.在Linux中,我们经常用到 cron 服务器来完成这项工作.cron服务器可以根据配置文件约定的时间来执行特定的作务. ...

  5. git 简单使用(待完善)

    git是一个分布式版本控制器,简单来说就是可以记录每次代码的修改和提交,方便我们查看修改记录和版本的回退 工作流程 基本概念 仓库 git 是一个分布式版本控制器,其单位就是仓库,每个仓库就是当前gi ...

  6. EBS并发管理器启动失败,系统暂挂,在重置计数器之前修复管理程序

    今天EBS安装补丁之后,因为停并发管理器的时候,因为关闭EBS应用时,并发管理器没有在前台停止,就直接停了应用服务,导致启动时,并发管理器直接起不来了,使用adcmctl.sh也没有办法启动. 进入系 ...

  7. BZOJ1046: [HAOI2007]上升序列(LIS)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5740  Solved: 2025[Submit][Status][Discuss] Descript ...

  8. DCMTK读取DICOM文件头信息的三种方法

    Howto: Load File Meta-Header Here's an example that shows how to load the File Meta Information Head ...

  9. Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; 没有sessionFactory

    maven子项目spring配置文件创建bean 没有找到另一个子项目中的bean. 需要引入另一个子项目的配置文件,仅提供测试用 如下: <!-- 仅供测试用 --> <impor ...

  10. linux下csv导出文件中文乱码问题

    近日在服务器端通过导出csv文件,将数据从linux服务器端保存到windows桌面端,以便用户可以通过excel打开使用数据. 但是在使用excel打开csv文件时,出现了中文乱码的情况,但是使用记 ...