关于Unity中Mecanim动画的重定向与动画混合
应用
一个RPG游戏,里面有100种怪物,每种怪物其实都差不多的,行走,跳跃,攻击,难道动画师要调100次动画吗?其实不需要
Unity抽象出人形动画系统,用Unity简化版的骨骼来进行统一的管理,只要是使用人形动画系统做的角色动画,可以使用其他角色进行播放,应用到不同的角色里面,这个就是重定向技术。
动画本身是控制骨骼在那里运动,同样的都是人体,其实动作差别并不大,都是行走,这时候就可以由一种动画重定向到不同的角色模型上。
人形动画可以理解为Unity为人物角色而抽象出来的一个动画模板,专门做的这一套动画系统,是为了减轻工作负担。
重定向
1:在人形动画系统中,所有的角色动画都属于unity定义的统一的人形,而我们的角色动画都是征询这个规矩做的,
Avatar文件做好映射,那么如果我们是基于人形而调的骨骼动画,动画师调出了角色A的动画,那么角色B也可以使用这个动画师做好的动画,
他们使用同样的动画和动画控制器,这样简化了动画的工作,解绑了动画师和建模师之间的工作依赖。
2: 传统的动画,每个模型要做一个动画,而人形动画可以解决这个问题。
3: 能够使包体大小变小。
重定向实例
1.创建Unity工程和文件目录,保存场景
2.导入资源文件包body_anim.unitypackage(第57)
3.打开Models文件夹,点击模型Boy,设置Rig---->Animation Tyoe---->Humanoid(人形动画)
4.配置Avatar
5.把模型Boy拖进场景中,会自己挂载一个Animator的组件
6.在res文件夹下创建一个动画控制器Create---->Animator Controller,叫做anim_ctrl,双击打开,可以用鼠标中键按下拖动背景
7.动画控制器配置,将动画文件拖入到Animator窗口,创建一个idle动画状态单元,动画控制器anim_ctrl关联组件Animator的Controller
8.其实到这里已经有用到动画重定向的技术了,就是Assets\Animations\AnisForFight\Boy@Idle这个里面的角色模型和我们实际运行的角色模型Boy是不同的。
9.再导入一个资源文件包girl.unitypackage(第57)
10.把Assets\Models里面的Girl模型拖进场景中,配置Avatar,再把刚才的动画控制器anim_ctrl关联到Girl模型的组件Animator的Controller
11.运行,发现和Boy模型动作一样,重定向完成
12.如果觉得重定向后动作过于夸张,可以使用模型的Muscles & Settings栏,调整骨骼的运动范围的参数,旋转运动的幅度
角色动画的混合
1:游戏开发过程中,有时候会有将两个动画混合成一个动画的需求,比如编写一个边跑边招手的动作,开发好了跑步的动作,和招手的动作,按照传统的方式需要重新再开发一个动作,Unity提供了角色动画的混合,能把两个动画合成一个新的动画;
2:混合动画基于混合动画树完成,混合动画树是 动画状态的其中一种,可以加入到动画状态机,可以看作是混合后新的一个动画;
3: 创建步骤:
(1)创建Blend Tree, Create State---> From New Blend Tree,(它自己实际上也是一个动画状态单元)
(2)双击Blend Tree进入Blend Tree面板,右边属性面板有一个Motion的动画列表
(3)添加要混合的动画到动画列表,可以添加,也可以删除,曲线取两者重叠的那一列就是两个动作混合。
(4)配置混合参数,Threal是阈值,调整曲线。像闹钟一样的标志的那一列是播放时间,越大,播放速度越快。也可以勾选Automate Threshold进行自动配置。
(5)配置好参数后记得要把Parameters面板下面的自动生成的Blend参数的值设置成和Blend Tree子树混合值一样的数值,不然运行时候无效
(6)BlendTree支持子树
动画混合算法
1: 1D混合方式: 最简单的和常用的混合方式,每个被混合的子动画都会被分配一个可以修改的Float的值,开发人员可以修改这个值来改变混合动画的效果,混合结果中比例越大,就越靠近那个动画;
2: 2D Simple Directional混合方式:以两个混合参数作为混合结果的横竖坐标值,混合的动画以正方形的方式混合在面板中。各自的混合比例用正方型外围的圆圈表现出来;每个动画的分布也以颜色的深浅表现出来;白的比例高,黑的比例少
3: 2D Freeform Directional混合方式:每个源动画都有一个放射性的显示面板,颜色越白权重越大。反之越小,可以通过移动源动画点,对现实面板进行调整;白的比例高,黑的比例少
4: 2D Freeform Cartesian混合方式: 源动画相连渐变表示,混合面板中颜色的深浅表示了各自动化的在混合动画中的权重;白的比例高,黑的比例少