动画片段简介
动画片段预览
动画片段设置
导入动画片段
创建和编辑动画片段
剪切动画片段
动画片段是Unity动画系统的基础,无论是新版动画系统还是旧版动画系统都需要使用动画片段。
动画片段中包含了对象如何随时间变化其位置、旋转或其他属性的信息。每个片段可以被认为是一个单一的线性记录。
外部导入
动画片段可以从外部导入,源于外部的动画片段由第三方工具(如Max或Maya)制作,或来自运动捕捉等。
内部创建
也可以使用Unity内置动画编辑器创建和编辑,目前该动画编辑器不支持人形动画编辑及创建。
动画片段文件后缀名为 .anim
点击动画片段,可以直接预览。
有些动画文件是单独存在的,没有预览的模型,可以拖入其它模型或预制体进行动画预览。
人形动画也可以拖入其它人形导入模型或预制体进行预览(重定位)
预览模型选择:右上角,如下是Unity默认人形模型
Humanoid 可以用动画控制人物运动(动画影响位移旋转缩放),但动画制作时可能出现问题,需要人工约束不必要的动作变化,达到正确效果。
在Perfab的Animations里面勾选不想发生变化的Rotation或者Position,将当前动画进行烘焙,运行动画时位置便不再发生变化
若勾选项目,角色还是产生不必要的运动,说明动画师没有让动画来控制运动,只能全部勾选Bake Into Pose,禁掉 全部旋转、位移,用代码控制运动
涉及到动画循环是否流畅,动作
示例:19帧 curves意为曲线
1.Loop Time:勾选这个选项之后,如果Animator处于播放这个动画状态时,在播放完第一遍这个动画片段之后,会自动循环从起始帧再次开始播放动画,如此循环往复。
如果我们不勾选这个选项,例如Animator一直处于播放这个动画的状态,那么动画会定格在动画的结束帧,直到我们通过Animator切换这个Animator状态机的状态,切换到其他的动画
这里的实际效果好像是 0.1时开始点被移到了90%的地方,-0.1时开始点被移到了10%的地方,并不会剪切。
2.Root Transform Rotation 根旋转变换
3.Root Transform Position (Y) 根位置变换(Y)
4.Root Transform Position (XZ) 根位置变换(XZ)
(注:Original是角色原始位置,Center of Mass为角色重心在y轴的投影位置)
5.Mirror:是镜像的意思。可以实现动画的复用。例如左转动画中勾选这一选项,可以得到右转动画。
6.信息:可以看到当前动画片段对运动的影响,比如下面的速度X有值,那人就会斜着跑,怎么限制了?调整 Root Transform Rotation 的 Offset 即可。
平均速度
如果还是歪,还可以通过重力约束X轴位移来限制。
源于外部导入的动画片段可能包括:
源于外部的动画以普通3D文件的方式导入到Unity中。 这些文件,无论是通用的FBX文件还是诸如Maya,Cinema 4D,3D Studio Max等3D软件的原生格式,都可以在文件中以线性记录的形式存储对象运动的动画数据。
有些时候,执行运动的目标和与之相关的运动动画可以存在于同一个文件中。也有些时候,动画可能存储在独立的文件中,与目标模型分离。
有些动画是为特殊模型单独制作的,不能在其他模型上重复使用。例如,你的游戏中可能有一个终极Boss,是一个巨型章鱼,它会有独特的四肢和骨骼分布,以及属于它自己的一套动画。
在其他大部分情况下,您可能会有一个动画库,用于场景中各种不同的模型。例如,一些不同的人形角色可能都使用相同的行走和奔跑动画。在这些情况下,通常在动画文件中放置一个简单的替代模型,以便进行预览。甚至,即使它们根本没有几何模型,只包含动画数据,也同样可以使用这个动画文件。
导入多个动画片段时,每个动画片段可以作为项目文件单独存在。当从Maya、Max等3D动作编辑器的插件导出时,也可以导出多个动画片段到单个FBX文件中。如果你的文件包含在单个时间轴上排列的多个单独的动画片段,则可能需要执行此操作。例如,在一个捕获时间较长的动画时间轴中,可能包含几个不同的跳跃运动的动画,您可能希望将其中的某些部分用作单个片段,并丢弃其余的部分。 Unity通过允许您为每个片段选择帧范围,在导入所有动画一个时间轴上,提供动画剪切工具来实现区域裁剪。
在Unity中使用动画之前,需要先将其导入到项目中。 Unity可以导入原生的Maya(.mb或.ma),3D Studio Max(.max)和Cinema 4D(.c4d)文件,以及可以从大多数动画软件导出的通用的FBX文件。 要导入动画,只需将文件拖动到项目的Assets文件夹。 当您在“Project”面板中选择文件时,您可以在“Inspector”面板中编辑导入设置:
有关可用导入选项的完整说明,请参阅FBX导入页面。
从导入的动画文件查看和复制数据。 Ctrl + D 可以复制出FBX文件中的动画。
您可以在“Animation”界面中查看导入的动画片段的关键帧和曲线。 有时,如果这些导入的片段有许多关键帧和多个骨骼,信息量可能看起来非常复杂。 例如,下面的图像是“Animation”界面中一个人形的奔跑动画看起来的样子。【注意Animation不仅仅可以创建和编辑内部动画,也可以浏览源于外部导入的动画,此时动画为只读,不能编辑】
在Unity中可以创建空的动画片段。方式:
1.选中Assets 文件夹下文件夹右键(选中模型预制体等一样) - Create - Animation
2.Window - Animation - Animation - 选中场景中的物体 - 如果游戏物体上没有动画就可以Create,创建之后会自动添加Animator组件并自动创建动画控制器(名称就是物体名称)
新建的动画片段没有任何内容,文件的后缀名是(.anim)。
可以通过Unity的动画编辑动画片段,此类动画可以变化以下内容:
Animation 窗口功能:
1.建新动画片段
为选中对象创建新的动画片段,会自动添加为动画控制器的状态
2.添加属性
可以添加选中对象中支持动画控制的属性。
3.添加关键帧
方式1:在右边刻度下面右键 - Add Key,和当前线位置无关,鼠标在哪就在哪添加关键帧
方式2:拖动当前线到指定位置,点击左边的 Add KeyFrame 按钮
方式3:更常用,拖动当前线到指定位置,修改属性值
4.编辑关键帧
拖动当前线到指定帧,修改属性值
5.删除关键帧
选中关键帧第一个图标,删除即可。
6.添加事件
7.预览动画
拖动当前线,在Scene面板中就可以看到对象变化。
8.其它
帧速控制 SAMPLES 后面的值
帧数量 最后一个关键帧所在位置决定,拖动当前线即可看到。
剪切动画片段
如果一个动画片段整合了多个动画,这时就需要切割了。
貌似只支持在模型导入设置中剪切
点击模型---Inspector---Animation
在原有基础上修改
1.选中一个动画片段
2.拖动刻度或者修改Start,然后应用即可。
剪切动画片段
1.选中动画,然后点+号
2.拖动刻度或者修改Start,然后应用即可。
+:添加动画
Start:开始帧
End:结束帧
Loop Time:是否循环播放
Loop Pose:循环时动画播放更加平滑
Rotation:动画是否影响旋转
Position(Y):动画是否影响Y轴
Position(XZ):动画是否影响XZ轴
Mirror:镜像翻转动画
拖动更改动画开始帧和结束帧,获取匹配最好的点。
右边的亮灯表示匹配度,越绿越好。
在43和104帧时,基本动画完全平滑了。
常见问题
1.动画本身循环接不上
在模型导入设置 Animation 中设置动画开始帧和结束帧。
2.动画过渡不流畅
使用动画混合解决问题。做动作手是慢慢抬起来的。