目录:
- 概述
- 游戏设定
- 模型导入
- 创建Avatar
- 配置Avatar
- 设置Muscle参数
- AVatar Mask
- 重定向
- 逆向运动学(IK)
- Animator组件
- 状态机
- 混合树
- 通过脚本控制
概述
Mecanim是unity一个集成的丰富的动画系统,它的工作流主要分为三个:
模型导入
,角色建立
,角色运动
。它支持很多功能,包括:运动重定向
(即把动画从一个模型应用到另一个模型上去 );动画片段工作流
(可以很好的衔接动画片段 );管理动画可视化
(类似UE4的蓝图 );逆向动力学功能
等。而且针对人形角色提供了一种特殊的工作流,包括Avater的创建和对肌肉定义的调节。
游戏设定
现在大多数游戏分为第一人称游戏和第三人称游戏,区别很简单:视角不同
。第一人称游戏常用在FPS射击类或者VR游戏,它要求代入感很强,3D游戏易产生眩晕,你一般看不到自己或者只能看到一双手。而第三人称游戏常常是那种策略型或者动作类游戏,易于分析观察以及操作,类似上帝视角。这里主要以第三人称视角和人形动画设计为例。
模型导入
三个概念: 建模
:创建模型的过程就是建模,网格模型一般是由多边形或者三角形网格组成。 骨骼绑定
:为了控制角色的运动,必须为其创建一个骨骼关节层级,该层级定义了网格内部的骨骼结构和相互运动关系。 蒙皮
:人形网格模型必须与关节层级关联起来,通过指定关键的动画来控制特定网络的运动。
创建Avatar
Avatar
:将Mecanim简化的人形骨架结构到用户实际提供的骨架结构的映射。
在导入模型后,在Rig
选项卡中选Humanoid
,骨架结构进行匹配,成功匹配就会在资源文件夹Avatar
中添加。
配置Avatar
在Avatar
的配置面板,包含了一个反映关键骨骼信息的视图,视图中包含必须匹配的骨骼(实线圆圈)
,可选匹配的骨骼(虚线圆圈)
。用户提供的骨架必须包含所有必须匹配的骨骼,而可选匹配的骨骼会根据必须匹配的骨骼状态自动插值计算。
设置Muscle参数
Mucanim
使用肌肉来限制不同骨骼的运动范围,可以让骨骼运动看上去真实、自然。
AVatar Mask
unity可以使用遮罩的方式选择控制身体的某一部分是否受动画的影响,比如说,正常行走动画手臂是来回摆动的,你想让其边走边双手抱着某个东西,只需要在Mask中禁用手臂运动。然后添加IK。
重定向
注意
:重定向只应用于人形模型。作用前面说过了。
逆向运动学(IK)
大多数角色动画是通过将骨骼关节角度旋转到预定值来实现的,一般的,骨骼子关节的位置是由父节点旋转角度决定。比如说,挥手动作,是先由肩部关键旋转,手举起来,然后肘部关节旋转,达到挥手的效果。这个过程中,腕部关节都是被动的移动,这种叫做前向运动学
。
但是,想想,如果我们要去用手拿起一个东西。是怎么运动的呢?是我们手指关节先弯曲,握住物体然后拿起来,这个过程中,我们肩部和肘部都会有一个移动,但此时他们是被动的了,这种由于子关节运动导致父关节调整适当位置,叫做逆向动力学(IK)
。
Animator组件
该组件是关联角色及其行为的纽带,行为包括:状态机、混合树、通过脚本控制的事件。
状态机
状态机
的基本思想是使得角色在某一时刻进行一个特定的动作。比如开始是站立(idle),然后走(walk),最后跑(run)。这每一个动作就是一种状态,角色从一种状态切换到另一种是需要条件的,比如,idle->walk,是speed从0变成大于0的数,而walk->run,也肯定是速度大于某个界限后变成跑的状态。把这些状态以及过度条件用可视化的顺序图来表示,减少底层代码的实现。过渡条件可能是某个事件参数,某个变量大小,某个可选的参数值等等。可以拖动重叠区域的起始值和终止值来调节过渡情况。
混合树
游戏中,我们可能需要将多个动画进行混合,比如,跑步时向左或者向右倾斜转弯。使用插值技术完成对多个动画片段的混合,每个动作的效果取决于混合参数
。
通过脚本控制
相比上面,就麻烦的多,方法是捕获输入,做出相应的动作,比如:按下W键,就播放walk这个动画片段等等。