开启辅助访问
切换到窄版
登录
立即注册
只需一步,快速开始
社区
BBS
找回密码
站务合作
搜索
搜索
在线大礼包
每日签到
本版
用户
引擎世界丨EngineWorld.CN
»
社区
›
3A引擎专区
›
Unity
›
Unity动画系统设计介绍分享
返回列表
发新帖
Unity动画系统设计介绍分享
[复制链接]
1599
|
0
|
2021-6-20 15:58:33
|
显示全部楼层
|
阅读模式
今天跟大家带来Unity动画系统设计介绍分享,感兴趣的朋友可以来看下!
一、动画系统
1、简介
Unity现存两套动画系统:Legacy动画系统和Mecanim动画系统。Legacy动画系统功能相对简单,核心组件Animation;Mecanim动画系统是Unity当前主要的动画系统,在Legacy动画系统上增加很多新的概念,功能相对复杂,核心组件Animator。
2、动画曲线(AnimationCurve)
Unity中的AnimationCurve是一根二维曲线,在动画文件中曲线根据作用被分成了不同类型类型,具体分类可用下图表示:
不同类型BindCurve在Animation窗口内有不同的图标,图标由Curve绑定的组件来决定,Curve前显示的图标表示其控制的内容归属组件,其中最需要关注的是TransformCurve和MuscleCurve,前者图标是Transform的图标,后者图标是Animator的图标,属于Mecanim机制的Generic和Humanoid动画片在运行时是不会保留原始动画曲线数据的(在编辑器下会)。
所以运行期不能在Legacy机制下采样播放(但编辑器下可以),RootMotionCurve是程序内部生成的对象,它的特殊之处在于储存的值是相对整个模型空间的变换,而不是相对父节点的局部变换。
二、动画资产
1、资产的导入
Unity会对支持的文件执行导入流程,实际在引擎中出现的文件是导入流程生成的Unity对象。Unity导入模型和动画文件之后提供了很多的设置,导入设置面板中Rig和Animation选项页大部分都与动画相关。
最重要的选项是Rig/Animation Type,除无动画的None以外有三个选项,分别代表:
Legacy – 模型和动画数据都会被处理为Legacy系统的动画数据;
Generic – 模型和动画数据都会被处理为Mecanim系统的非人形动画数据,需要配置或者自动为模型资产创建对应的Avatar实例;
Humanoid – 模型和动画数据都会被处理为Mecanim系统的人形动画数据,需要配置或者自动生成模型骨骼创建Avatar实例和Human实例。
2、动画片段(AnimationClip)
动画片段是AnimationClip类型的对象,.anim资产文件,是Unity中动画数据的存在形式,AnimationClip数据实际上就是以绑定对象为索引的AnimationCurve数据集合。
所有的动画Fbx文件导入后都是生成AnimationClip类型的对象,只是资源管理器里的文件后缀名并不是.anim,且在引擎内禁止修改。导入的动画片段拷贝副本后,可以进行曲线修改和删除,导入DCC文件会根据关键帧拟合得到动画曲线,
Unity
有三种曲线拟合方式,埃尔米特曲线拟合、线性拟合和离散值。
默认情况下都是埃尔米特曲线拟合,也就是根据关键帧拟合出三次曲线,但如果导入动画资产时开启了动画压缩,则根据误差设置,Unity会自动在误差允许内使用线性拟合乃至保留离散的关键帧。
Unity不会在导入流程中使用离散值拟合,所以DCC软件里做的数值离散动画在Unity内播放会出现不合理的插值帧。
3、动画的控制器
Mecanim的动画播放控制是由有限状态机和动画层级来完成,由Animator Controller做有限状态机层级的容器,Animator需要指定Animator Controller;
Animator Controller只能在编辑环境配置,运行期不可改,Animator Controller可以设置黑板参数(逻辑容器),可以在脚本中获取,也可以作为转移条件;如果黑板参数名字与播放的Custom Curve相同,则伴随动画播放动态修改。
Animator Controller核心概念就是Layer,State和Transition,就是层级,状态,转移,一个状态可以是播放一个动画片段的节点、一个子状态机或者混合树,Layer之间可以进行动画覆盖与附加,输出可以使用Avatar Mask进行剔除。
Sync选项可以让多个层级使用一个状态机,但是每个状态上可以播放不同的动画,Mecanim的IK也是以层级为单位。
State可以进行一些播放状态的设置,Mecanim的动画混合是使用BlendTree完成的,BlendTree可以作为一种State存在,Unity的BlendTree没有什么特殊设置。
Foot IK选项不意味着开启足部IK,而是启用足部IK相关的一些前处理,主要有两个:启用Human设置中的Feet Spacing,确保双足骨骼在Z轴上差距2倍Feet Spacing;根据Root Motion得到的速度进一步修正双足骨骼的位置。
Transition控制State之间的转移,主要依赖条件有两个,退出时间Exit Time以及参数条件Condition,两者均满足才会发生转移,转移有Solo和Mute标签,前者表示优先转移,后者表示禁用。
Animator Controller的动画融合是在转移的时候完成的;
可以在编辑器里配置转移打断相关的设置。
4、Avatar
Avatar文件是Mecanim方案里负责记录模型骨骼层级结构相关的数据合集,也会储存重定向方案相关的数据;
DCC文件导入时会生成或者依赖一个确定的Avatar文件完成动画数据的导入流程;
Animator组件可以通过指定Avatar文件完成骨骼层级结构的初始化,但也可以通过配合动画控制器查询当前模型子节点获取,所以Avatar文件并不是必须的。
回复
使用道具
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
星仔亮晶晶
37
主题
10
回帖
257
积分
初阶编码师
初阶编码师, 积分 257, 距离下一级还需 743 积分
初阶编码师, 积分 257, 距离下一级还需 743 积分
积分
257
加好友
发消息
回复楼主
返回列表
CryEngine
Lumberyard
Unity
Unigine
xenko