unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具


摘要:在Unity中只能制作比较简单的动画,要想要复杂的动画,比如人物跳舞的动画,那就得在外部的软件中制作并且导入到Unity中使用,那这个过程是什么呢?

洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统。


unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具_02


小新:“智哥,昨天我搞了一个美女的模型,如何让它动起来呢?”

大智:“你小子整个美女的模型想干嘛呢?”

小新:“我就是想让她跳一段舞蹈罢了。。。”

大智:“在Unity中制作动画的功能有限。类似角色的复杂动画,需要用到一种叫骨骼动画的技术,无法直接在Unity中制作,需要美术同学在外部建模软件中制作后导入Unity使用。”

今天我们来学习一下如何从模型文件导入动画。

在接下来学习之前呢,你需要准备好带动画的模型,如果你手边没有,可以看看大智之前的文章:

  • Unity2018.1后如何安装自带的Standard Assets中的Character包
  • 【建议收藏】找不到免费的角色动画?来试试mixamo

导入模型

导入动画和导入3D模型的流程一样,动画会包含在3D模型中。


unity 动画不能循环播放 unity中动画循环播放次数_unity 给模型绑定骨骼_03


大多数情况下,含动画的模型导出的fbx文件会同时包含网格信息和动画信息,但是也有一些情况fbx文件只需要导出动画信息。例如同一个模型有很多动画,网格信息只需要一个就够了,其他动画信息可以通过单独的模型文件(不包含网格信息)导出,可以减小Unity工程的体积。

有些情况下,动画是基于特定模型制作的,不能在其他模型上重用。例如,游戏中的终极Boss巨型章鱼会有独特的骨骼,以及自己的动画。

在其他情况下,美术同学在制作动画时应该考虑动画的重用,用于场景中同类的模型。例如,不同的人形角色可能都使用相同的走动和跑步动画。只要保持骨骼结构一致,动画就可以重用。

动画导入设置

首先将fbx文件导入Unity中,选中模型。在Inspector面板中会显示模型的导入设置,之前我们已经学习了Model和Materials页签,今天我们看下动画导入的设置。


unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具_04


和动画有关的设置包含Rig和Animation两个页签。

Rig

在Rig页签中可以设置动画的类型。

Animation Type

  • None
  • Generic
  • Humanoid
  • Legacy

Avatar Definition

  • Create from this model
  • Copy from other Avatar

Root node

Configure…

Skin Weights

  • Standard(4 Bones):4块骨头
  • Custom:自定义,可以设置最大的骨骼数量以及最小的影响权重

骨骼动画是一种动画技术,通过给模型绑定骨骼,通过骨骼的运动影响蒙皮(人形模型的皮肤)的变形动画。

Optimize Game Object

Animation

这个页签中会显示动画导入的设置。如果Rig页签中的Animation Type选择了None,则无法设置Animation相关的属性。


unity 动画不能循环播放 unity中动画循环播放次数_unity 动画不能循环播放_05


Import Constraints


unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具_06


Import Animation

Bake Animations

Anim. Compression

  • Off 禁用压缩。Unity不会减少关键帧,这个选项能提高动画的精度,但是会降低运行时性能,存储空间和运行时内存占用都会变大。一般不建议禁用压缩,但如果你需要非常精准的动画,禁用后可以得到原始动画,不会有压缩精度误差。
  • Keyframe Reduction
  • Optimal Unity自动决定如何压缩。根据设置的误差值移除关键帧并且压缩关键帧。这只会减小动画存储空间占用,运行时内存占用和 Keyframe Reduction

Anim. Compression

  • Rotation Error
  • Position Error
  • Scale Error

Animated Custom Properties

Clips

分割动画

从3D建模软件导入到Unity中的动画,有时是很多段动画在一起的一段很长的动画,可能包括走路、跑步、站立、跳跃等动画。但是在Unity中使用时,我们需要将长动画拆分为一段段短动画。

创建一段新的Clip


unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具_07


如上图,点击加号可以创建一段新的动画,可以在下方设置该段动画在完整动画中的起始帧和结束帧。设置时,可以下下方预览窗口查看当前移动位置的动画状态。


unity 动画不能循环播放 unity中动画循环播放次数_unity 批量导入模型工具_08


在拖动起始、结束箭头时,能看到下方会显示4条曲线,右方有4个灯,会显示绿色、黄色或红色。这是做什么用的呢?

其实这些是为了方便你在剪辑动画时,能更好地剪出循环的动画。比如一个跑步的循环动画,起始帧人物各个骨骼的位置应该和结束帧人物各个骨骼的位置一致,动画循环时才不会出现跳动的现象。绿灯代表开始帧和结束帧符合,黄灯代表有些不符合,红灯代表一点都不符合。但是也不能追求4个全绿灯,因为4个灯代表了4个不同的位置类型,有些情况下是不同的。后续动画模块会详细学习。

Loop Time

其他属性我们会在后续动画模块进行讲解。


unity 动画不能循环播放 unity中动画循环播放次数_unity 动画不能循环播放_09


最后,别忘了点击最下方的Apply保存对模型动画的修改。

如何在场景中使用外部导入的动画

对于从外部导入的模型及动画,如果直接拖到场景中,是不会自动播放动画的。原因是没有Animator Controller,那Unity当然不知道你要播放哪个动画啦。如下图所示:


unity 动画不能循环播放 unity中动画循环播放次数_unity 给模型绑定骨骼_10


那么如何实现最简单的动画播放呢?

只要按照以下几步做即可:
1、将模型拖到场景中
2、将Animation Clip拖到刚拖入场景的模型GameObject上。这时候Unity会自动帮你生成一个Animator Controller,这个Animator Controller中会自动把刚才拖的Clip作为默认动画进行播放。


unity 动画不能循环播放 unity中动画循环播放次数_unity 给模型绑定骨骼_11


这时候如果你再Play,就能看到模型就能动起来啦。(当然前提是这个Clip和这个模型是对应的哦!)

总结

大智:“今天讲了如何将外部模型动画导入到Unity中,希望你能记住以下几点:”
1、Animation Type选项有4个:

  • None
  • Generic
  • Humanoid
  • Legacy

2、在Unity中可以分割动画成为一个个片段。