Mecanim动画

Unity动画系统,也称为“Mecanim”,提供了以下功能:

  • 简单的工作流程,设置动画的所有元素,包括对象,角色和属性。
  • 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段。
  • 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画。
  • 用于编辑动画状态的的简化工作流程,即动画控制器。
  • 方便预览动画片段,以及片段之间的插值过渡。 这使得动画师可以独立于程序员工作,在不运行游戏的情况下,可以对原型和预览动画进行预览。
  • 管理动画与可视化编程工具之间的复杂交互。
  • 不同的身体部位可以使用不同的动画逻辑控制。
  • 动画的分层和掩蔽功能。

关键字

animation 动画
avatar 替身
definition 定义
controller 控制器


今天又是新的一天,动一下手吧,快乐一下

新建场景

新建一个3D场景,使用到的资源都是3D资源。

导入模型

新建一个文件夹用来存放模型文件
image.png

找到你的导入模型根目录,包含了模型、材质贴图等相关文件。
有两种方法进行导入

  1. 在unity Project视图中右键文件夹->import New Asset进行导入
  2. 直接在windows文件管理器将文件复制到unity指定目录下

image.png

导入完成后会弹出提示框,询问材质关联,贤者fix now让编辑器自行判定。
image.png

模型基本设置

导入后在Project面板会出现很多.fbx的模型资源,我们选择第一个来来进行骨骼绑定。
image.png

Inspector面板中进行人形动画的骨骼绑定

Model中 有一个Scale Factor属性可以用来设置模型添加到场景中的比例,有时候动画师所提供的模型比例不合适,可利用该属性来进行调整,以便适应场景。Rig中 使用骨骼动画时需要指定几个参数。
image.png
image.png

Animation Type设置为Humanold,表示使用的是人形动画。
在Avatar Definition,骨骼设置中
Create From This Model,表示为该模型创建单独骨骼
Copy From Other Avatar,表示使用其他模型的绑定骨骼
由于可以复用的骨骼模型,在此我们选则第一项。
image.png

应用设置后,点击Configure进入骨骼设置界面。

由于“Avatar”是Mecanim系统的重要方面,也就需要您为模型配置合适的Avatar。 所以,无论自动创建Avatar失败还是成功,您都需要进入“Avatar配置”模式进行查看,以确保“Avatar”的有效和正确设置。 最重要的一点是,您的角色的骨骼结构需要与Mecanim的预定骨骼结构相匹配,并且该模型处于“T”形姿势。
如果Mecanim未能成功创建Avatar,您将在“Configure”按钮旁边看到一个”×”标记.
如果匹配成功,你会看到在”Configure”菜单边上出现一个”√”标记。

当您进入配置(Configure)菜单时,编辑器将要求您保存场景。 原因是在配置模式下,场景视图用于单独显示所选模型的骨骼,肌肉和动画信息,而不显示场景的其余部分。
像这样的界面就是您可以看见的,不同的版本的编辑器可能会略有区别。
image.png

您可以在右侧Mapping界面中,点击绿色小人的关节部分,找到指定属性,然后将左侧Hierarchy中对应的对象进行绑定,使用unity常用的对象绑定方式,拖拽对象放入相应的参数框内。
image.pngimage.png

常规情况下动画师提供比较标准的模型素材,能更方便您的3D制作。对于骨骼绑定,unity提供了自动识别的功能。
在Mapping下拉选择项中有如下选项,Clear能够清除所有的绑定关节
Automap可以进行自动绑定,自动绑定的情况下对模型的标准程度有一定的要求,可能出现个别绑定不合适的情况,请在启用该选项后一定要进一步的对绑定进行判断,进一步的进行调整。
image.png

Muscles中可以对当前模型进行关节活动,用这样动态的方式更容易看到骨骼适应性。
image.png

当你拥有了一个优秀的Avatar时,请点击Done选项,进入下一步。

Animator

在资源中新建一个Animator Controller
什么是Animator Controller?
在游戏中人物的动画会根据玩家操作的改变进行变化,意味着一个模型要在不同的骨骼动画中进行切换,而Animator Controller出现就是为了方便实现该功能。
想要Gameobject实现该功能就必须添加Animator Controller组件。
如果是已经设置好的模型对象,如上导入的模型,在添加到场景时便会自动添加Animator Controller组件。
image.png

双击Animator Controller资源文件,进入animator编辑界面
image.png

Layers/Parameters面板

该区域实际上由两个标签页构成,它们分别是 Layers 和 Parameters 。Layers标签页中的内容在小型项目中我们基本用不到,没有具体的人物模型也不好学习,暂时你可以忽略它。而另外一个Parameters标签页中的内容可以说是Animator必需的,包含了我们在Animator中使用的所有“参数”。在拥有多个动画短片的控制器中,正是通过Parameters中的参数实现了不同动画间的转变。

当前Layer状态机

该区域才是Animator中最重要的部分,之前我们称呼它们为“颜色各异的矩形区块”,实际上它们正式的名字为状态机(State Machine)。状态机包含了不同的状态(State)和状态间的过渡关系(Transition),如果你想了解关于状态机的详细内容,可以参考Unity官方手册中的 State Machine Basics, 本质无非是一个特殊的有向图。

现在将资源文件中的各种动画切片拖拽到当前的layer状态机中,第一个放入的动画默认设定为default state,右键不同的状态机->set as layer default state即可进行切换。

QQ录屏20210711105056.gif

右键->make transiton在不同状态机之间进行连线,连线的箭头代表状态机之间的转换方向。
image.png

在Parameters中添加变量,用来对转换过程进行判定,比如想要一个bool变量来判断角色是否奔跑,就可以在此添加一个bool变量,自定义命名为runing。
image.png

现在这样的状态及比较简单,只需要让其达到左转和右转的变化。为此添加一个float变量,命名为angular。
先理解一下变量的判断依据,

  • 当angular>0.1时为右转
  • angular<-0.1时为左转
  • -0.1<angular<0.1时不动

选择转换线(白色带箭头的线段),为其添加条件判断,选择判断变量以及比较符,Greater代表大于,less代表小于。
QQ录屏20210711111608.gif

在同一个transition中设定的多个判断条件为关系,如果添加关系条件,那就多连几根线吧。

将default Avatar放入场景,Animator组件conyroller属性指定为需要DefaultAnimator。
image.png

运行场景已经可以出现动画效果,但此时并没有动画状态的改变。

在脚本中修改状态机变量

新建一个脚本,可以挂到场景中的任意对象,一般来说对于要控制的对象,那么控制它的scripte组件也会在其自身。
编写如下脚本用于控制angular变量,
 Input.GetAxis("Horizontal")可以根据w/s键按下后,按下时间获取(-1,1)区间的一个float值。
animator.SetFloat()将指定值赋值给animator中的变量。
image.png

至此一个基本可运行交互的骨骼动画便完成了,如需更多了解更多使用方法可以参考官方文档。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享