unity-Mecanim动画系统

目录:

概述

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这个动画片段等等。

猜你喜欢

转载自blog.csdn.net/scopperil/article/details/80480472