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

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

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

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

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

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

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

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

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

导入模型

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

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

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

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

动画导入设置

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

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

Rig

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

Animation Type 动画类型选项有4个:

  • None 不导入动画
  • Generic 通用动画:适用于所有的动画类型,特别适用于非人形的动画。
  • Humanoid 人形动画
  • Legacy 旧版本动画(为了兼容Unity3.x旧版本,不建议使用)

Avatar Definition 如果动画是骨骼动画,可以使用这个选项定义骨骼的来源。

  • Create from this model 基于当前模型
  • Copy from other Avatar 指向另一个模型的Avatar

Root node 当动画类型选择Generic时显示,可以用来设置动画的根节点。一般需要选中骨骼的根节点。

Configure… 选中Humanoid时显示。用来配置骨骼。后面动画进阶模块,讲解人形动画时会详解。

Skin Weights 设置有多少骨骼会影响蒙皮,骨骼数越多,动画越精准,但是计算量越大,对性能要求越高。

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

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

Optimize Game Object 选中时,导入的角色模型的层次结构将被删除,存储在Avatar和Animator组件中。角色的SkinnedMeshRenderers将直接使用动画系统内置骨架。该选项可提高动画的性能。在最终发布时你应该选中此选项。在此模式下,蒙皮网格的提取也是多线程的。

Animation

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

Import Constraints 是否导入Constraints(约束)。美术同学可能知道在3D建模软件中有Constraints设置,用来添加一些约束。Unity支持5种约束的导入。目前用到的较少。

Import Animation 是否导入动画,如果不勾选代表不导入动画,下面的选项也会隐藏。

Bake Animations 该选项只对Maya、3dsMax 、Cinema4D文件可用,对fbx文件不可用。选中时,Unity在导入模型时会将IK或模拟动画转为正向动力学动画。

Anim. Compression 动画压缩

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

Anim. Compression 不选择Off时,会显示下面三个选项:

  • Rotation Error 旋转变化小于这个误差的关键帧会被删除。值越小动画越精确。
  • Position Error 位置变化小于这个误差的关键帧会被删除。值越小动画越精确。
  • Scale Error 缩放变化小于这个误差的关键帧会被删除。值越小动画越精确。

Animated Custom Properties 是否导入自定义属性。在3D建模软件中可以设置一些自定义属性,这个选项可以将这些自定义属性导入进来。

Clips 动画片段,Start和End分别代表了该段动画在整段动画中的起始帧和结束帧。下面详细学习。

分割动画

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

创建一段新的Clip

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

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

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

Loop Time 如果动画需要循环播放时,勾选此选项。

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

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

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

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

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

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

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

总结

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

  • None 不导入动画
  • Generic 通用动画:适用于所有的动画类型,特别适用于非人形的动画。
  • Humanoid 人形动画
  • Legacy 旧版本动画(为了兼容Unity3.x旧版本,不建议使用)

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

今日思考题

大智:“导入Standard Assets中的Character包,看看里面的动画是如何设置的。”
小新:“好嘞~”

扩展阅读

  • 【建议收藏】找不到免费的角色动画?来试试mixamo
  • 2018.1之后Standard Assets如何安装?
  • 5分钟制作过场动画
  • 5分钟入门Cinemachine智能相机系统
  • Unity编辑器录屏神器:Unity Recorder

【扩展学习】在洪流学堂公众号回复动画可以阅读本系列所有文章,更有视频教程等着你!


呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。

我是大智(微信:zhz11235),你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

Unity动画系统详解2:如何导入使用外部的动画?相关推荐

  1. T4M插件放入unity后怎么找不到_Unity动画系统详解4:如何用代码控制动画?

    摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...

  2. Unity动画系统详解4:如何用代码控制动画?

    摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...

  3. Unity动画系统详解3:如何播放、切换动画?

    摘要:[长文预警,建议先收藏]有了模型和多个动画以后,在Unity中如何控制它们的播放和切换呢?本文带你一站式解析Unity的Animator模块. 洪流学堂,让你快人几步.你好,我是跟着大智学Uni ...

  4. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  5. Unity动画系统详解9:Target Matching是什么?

    摘要:在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置.比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁.Target Match就是让动画的特定片段去匹配特定的位置. ...

  6. Unity动画系统详解5:BlendTree混合树是什么?

    摘要:"Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树." 洪流学堂,让你快人几步.你好,我是跟着大智 ...

  7. unity velocity_Unity动画系统详解5:BlendTree混合树是什么?

    摘要:"Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树." 洪流学堂,让你快人几步.你好,我是跟着大智 ...

  8. Unity动画系统详解8:IK是什么?

    摘要:IK是Inverse Kinematic的缩写,也就是反向动力学.是根据骨骼的终节点来推算其他父节点的位置的一种方法.比如通过手的位置推算手腕.胳膊肘的骨骼的位置. 洪流学堂,让你快人几步.你好 ...

  9. Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

    摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的.每一帧Root Transform的变化实时计算.然后Transform的变化会被应用到GameO ...

  10. T4M插件放入unity后怎么找不到_Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

    摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的.每一帧Root Transform的变化实时计算.然后Transform的变化会被应用到GameO ...

最新文章

  1. php 7.2 兼容5.5吗,PHP5.5至PHP7.2 新特性整理
  2. Ubuntu Server 16.04 LTS上使用Docker部署Tomcat修改为80端口
  3. spring和ejb2.x集成共享applicationContext.xml的问题
  4. 监控h264视频不能正常解码怎么办
  5. C++ 偏微分数值计算库_一文带你了解计算流体力学CFD及其应用领域
  6. selenium与chromedriver的操作
  7. sql Server获取表中今天、昨天、本周、上周、本月、上月等数据
  8. modbus发送接收_自己编写MODBUS协议代码所踩过的坑
  9. 【芝麻背调百科】已婚员工入职新公司后申请休婚假,公司能否拒绝?
  10. 《未来世界的幸存者》读书摘录及笔记
  11. 视频教程-Windows程序设计应用开发-C/C++
  12. requests+xpath之贴吧图片爬取
  13. Ambiguous mapping Cannot map xxx method的解决方式
  14. 计算机可以谭音乐吗,谭晶怎么被叫谭哈哈 《歌手》谭晶演唱什么歌曲
  15. 万众瞩目之下,ANGULAR 2终于正式发布啦!
  16. Java算法——加一(LeetCode第66题)
  17. 电厂GPS北斗时钟同步(卫星时间同步系统)组成及配置
  18. firefox非量子版自定义搜索引擎
  19. 数据库只读问题解决!!!MySQL server is running with the --read-only option
  20. for循环的正确执行顺序

热门文章

  1. OWA 限制附件大小
  2. Transform中的Attention注意力机制
  3. 关于微信小程序的40029error(大无语事件)
  4. linux 卸载java jdk1.6_Linux jdk1.6安装与卸载
  5. 大数据开发工程师的面试题
  6. 农村合作医疗和公司交的社保(医疗保险)是否冲突
  7. 医疗保险公司资料外泄,你该知道什么?
  8. 复合索引(组合索引)
  9. 把两个C++项目编译成wasm
  10. 华为HCIP安全 723笔记