Unity-动画系统-动画片段

动画片段简介

动画片段预览

动画片段设置

导入动画片段

创建和编辑动画片段

剪切动画片段

动画片段简介

动画片段是Unity动画系统的基础,无论是新版动画系统还是旧版动画系统都需要使用动画片段。

动画片段中包含了对象如何随时间变化其位置、旋转或其他属性的信息。每个片段可以被认为是一个单一的线性记录。

外部导入

动画片段可以从外部导入,源于外部的动画片段由第三方工具(如Max或Maya)制作,或来自运动捕捉等。

内部创建

也可以使用Unity内置动画编辑器创建和编辑,目前该动画编辑器不支持人形动画编辑及创建。

Unity-动画系统-动画片段_第1张图片

 动画片段文件后缀名为 .anim

动画片段预览

点击动画片段,可以直接预览。

有些动画文件是单独存在的,没有预览的模型,可以拖入其它模型或预制体进行动画预览。

人形动画也可以拖入其它人形导入模型或预制体进行预览(重定位)

预览模型选择:右上角,如下是Unity默认人形模型

Unity-动画系统-动画片段_第2张图片

动画片段设置

Humanoid 可以用动画控制人物运动(动画影响位移旋转缩放),但动画制作时可能出现问题,需要人工约束不必要的动作变化,达到正确效果。

在Perfab的Animations里面勾选不想发生变化的Rotation或者Position,将当前动画进行烘焙,运行动画时位置便不再发生变化

若勾选项目,角色还是产生不必要的运动,说明动画师没有让动画来控制运动,只能全部勾选Bake Into Pose,禁掉 全部旋转、位移,用代码控制运动

涉及到动画循环是否流畅,动作

示例:19帧 curves意为曲线

Unity-动画系统-动画片段_第3张图片

 1.Loop Time:勾选这个选项之后,如果Animator处于播放这个动画状态时,在播放完第一遍这个动画片段之后,会自动循环从起始帧再次开始播放动画,如此循环往复。

如果我们不勾选这个选项,例如Animator一直处于播放这个动画的状态,那么动画会定格在动画的结束帧,直到我们通过Animator切换这个Animator状态机的状态,切换到其他的动画

  • Loop Pose:用于控制动画循环播放时,从结束帧切换到起始帧时,动画的动作可以无缝的衔接上,循环姿势?
  • Cycle Offset:就是用于控制循环的时候起始帧偏移用的。动画循环开始时的偏移量。有用的同步循环动画。单位是标准化时间。需要勾选 Loop Time 才能使用循环偏移量,否则循环偏移量不会有任何影响。有效范围是0到1.0。

这里的实际效果好像是 0.1时开始点被移到了90%的地方,-0.1时开始点被移到了10%的地方,并不会剪切。

2.Root Transform Rotation 根旋转变换

  • Bake Into Pose(烘焙为姿势):勾选就是动画的旋转烘焙为姿势,就是动画不控制人物旋转。
  • Based Upon(基于XX点进行运算):Original 设计师设计的正前方、Body Orientation 模型正前方(默认)
  • Offset:调整旋转, 当动画和运动方向不匹配时,可调整offset数值,使其匹配。

3.Root Transform Position (Y) 根位置变换(Y)

  • Bake Into Pose(烘焙为姿势):勾选就是动画的Y轴位移烘焙为姿势,就是动画不控制人物的Y轴位移。
  • Based Upon(at Start):人物与地面的接触状态 Original 、Center of Mass 重心、 Feet 脚
  • Offset:调整到紧贴地面 ,当动画和运动方向不匹配时,可调整offset数值,使其匹配

4.Root Transform Position (XZ) 根位置变换(XZ)

(注:Original是角色原始位置,Center of Mass为角色重心在y轴的投影位置)

  • Bake Into Pose(烘焙为姿势):勾选就是动画的XZ轴位移烘焙为姿势,就是动画不控制人物的XZ轴位移。
  • Based Upon:Original 设计师设计的正前方、Center of Mass 重心

5.Mirror:是镜像的意思。可以实现动画的复用。例如左转动画中勾选这一选项,可以得到右转动画。

6.信息:可以看到当前动画片段对运动的影响,比如下面的速度X有值,那人就会斜着跑,怎么限制了?调整 Root Transform Rotation 的 Offset 即可。

平均速度

如果还是歪,还可以通过重力约束X轴位移来限制。

导入动画片段

源于外部导入的动画片段可能包括:

  • 动作捕捉获得的人形动画
  • 在外部3D应用程序(如3DS Max或Maya)中创建的动画
  • 来自第三方库的动画集(例如,来自Unity的资源商店)
  • 对导入的单个动画片段的时间轴进行切割后获得的多个动画片段。

源于外部的动画以普通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的动画编辑动画片段,此类动画可以变化以下内容:

  • 游戏对象的位置、旋转和比例。
  • 组件属性,如材质的颜色,灯光的强度,音量等。
  • 你自己脚本中定义的属性,包括float,int,Vector和bool变量
  • 你自己脚本中定义的定时调用函数

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.动画过渡不流畅

使用动画混合解决问题。做动作手是慢慢抬起来的。

你可能感兴趣的:(Unity,游戏开发,.NET,开发,unity)