Mecanim动画
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动画的更多相关文章
- 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 ...
- Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关
资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...
- Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)
认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什 ...
- Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统
Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...
- [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合
大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 这段时间博主将大部分的精力都放在了研究官方演示样例项目上,主要是希望能够从中挖掘出有价值的东 ...
- [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统
大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...
- Mecanim动画系统
序言:Mecanim动画系统是Unity4.0之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...
- 【Unity】第10章 Mecanim动画系统
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉 ...
- u3d Mecanim动画
作为Unity4.0的主要更新功能,Mecanim动画被寄予了很多的期望.系统有先进的地方,也有不足的地方.这些我们留到最后再来总结. 阿赵粗略的学习了一下,写下以下的教程.这篇教程简单的说明了Mec ...
- 01、Mecanim动画系统
序言:Mecanim动画系统是Unity4.0之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...
随机推荐
- @Inject 注入 还是报空指针
@Inject 注入 还是报空指针 发布于 572天前 作者 子寒磊 1435 次浏览 复制 上一个帖子 下一个帖子 标签: 无 @IocBean@Service("userM ...
- Android(java)学习笔记73:Intent启动Activity
1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...
- vue中css动画原理
显示原理: <transition name='fade'> <div v-if='show'>hello world</div> </transition& ...
- 【洛谷P1962】斐波那契数列
斐波那契数列 题目链接:https://www.luogu.org/problemnew/show/P1962 矩阵A 1,1 1,0 用A^k即可求出feb(k). 矩阵快速幂 #include&l ...
- LinkedHashMap使用心得
基本概念:https://www.cnblogs.com/xiaoxi/p/6170590.html 遇到问题: 1.构造方法 public static LinkedHashMap<Strin ...
- esdoc 自动生成接口文档介绍
原文地址:https://www.xingkongbj.com/blog/esdoc/creat-esdoc.html 官网 ESDoc:https://esdoc.org/ JSDoc:http:/ ...
- Smartforms 设置纸张打印格式
在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮——>选 ...
- oauth2.0协议接口-第一篇-api逻辑
开放平台是支持OAuth2.0和RESTful协议的资源分享平台,经过授权的合作伙伴可以读取和写入资讯.用户.文件.数据库等资源. 1.创建数据库表结构 CMSSyncClient(数据同步客户端) ...
- TCP/IP协议之http和https协议
一.TCP/IP协议 TCP/IP 是不同的通信协议的大集合. 1.TCP - 传输控制协议 TCP 用于从应用程序到网络的数据传输控制. TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们 ...
- 呕心沥血写的python猜数字
#猜数字 import random num_rd=random.randint(0,100) count=1 while 1<=count<=10: num_ip=input('请输入0 ...