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之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...
随机推荐
- rsync安装配置实时同步
一.简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个主 ...
- 获取页面的url
设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.jb5 ...
- leanote开源云笔记
下载链接 http://yunpan.cn/cZ42hEEQcYMMz (提取码:16a1)
- 第42章 电源管理—实现低功耗—零死角玩转STM32-F429系列
第42章 电源管理—实现低功耗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- 关于新项目上传远程库报错 non-fast-forward
已有项目上传远程库会报错 non-fast-forward 首先使用命令行 git pull origin master --allow-unrelated-histories 之所以使用这个命令,是 ...
- 第一次发干货Observable.zip与Observable.forkJoin
在IT界已经混了5年了,5年中浏览了不少的网站,在上面查询自己想要的东西,解决工作中遇到的问题,心里总想有天自己能够有自己的博客,能给分享一些自己在生活中.工作中遇到的问题,让其他有类似经历的朋友能够 ...
- poj_1320_Street Numbers
A computer programmer lives in a street with houses numbered consecutively (from 1) down one side of ...
- LeetCode-177:第N高的薪水
第N高的薪水与第二高的薪水,解题思路是一样的,只要对LeetCode-176的SQL做一下变形,便可以满足这题,详见:https://www.cnblogs.com/zouqf/p/10282392. ...
- 基于mybatis设计简单信息管理系统2
1.空指针异常 public class CanvasServlet extends HttpServlet { private CanvasService canvasService; privat ...
- JS之执行上下文
执行上下文(execution context),是JS中的一个很重要的概念.它对于我们理解函数定义,执行时都做了什么有着很大的意义.理解它我们才能明白我们常说的函数声明提升,作用域链,闭包等原理. ...