Skip to main content

动画同步

概述

动画同步(Animation Syncing)支持基于比例的同步和基于标记的同步。使用该功能后,可以减少两个动画进行混合时的跳变。例如从行走切换到跑步时,使用动画同步后,可以让两个动画的脚步同步。

基于比例的同步

通过添加相同的同步组(Sync Group)可以实现基于比例的动画同步。

基于比例的同步可解决不同长度动画的同步问题。在同一个同步组(Sync Group)中的动画,按照相同的比例值进行播放。例如,总时长不相同的动画,其中一个播放到一半 ,另一个动画也将会播放到它自身的一半。从而可以解决动画混合时因为时长周期不同产生的脚步跳变问题,使得动画混合得更加自然。

动画编辑器(Animation Editor)中打开需要进行同步的动画资产,在资产细项(Asset Details)面板中的同步组(Sync Group)中输入同一个名称,将这些动画归为同一个组中。

注意:

  • 使用同步组(Sync Group)的动画需要有类似的动作
  • 在同一组中的动画时长不能相差过大

在行走和跑步动画序列资产的资产细项(Asset Details)面板中,将同步组(Sync Group)的名称设置为同一个。

动画树编辑器(Anim Tree Editor)中,创建一个状态机节点并连接到最终动画姿势(Final Animation Pose)节点,双击进入到该节点的状态图中,创建行走到跑步的状态迁移。状态机的相关操作可参考状态机节点

image-20230517102623211

image-20230517102823867

双击walk状态节点,添加walk序列播放节点并连接至最终动画姿势(Final Animation Pose)节点。

image-20230517154650696

image-20230517154713073

双击run状态节点,添加run序列播放节点并连接至最终动画姿势(Final Animation Pose)节点。

image-20230517154737380

动画参数(Animation Parameter)窗口中,添加一个浮点型参数Speed。

image-20230517103136498

设置walk→run的状态迁移条件为:Speed大于0.1。

image-20230517103641398

设置run→walk的状态迁移条件为:Speed小于0.1。

image-20230517103734828

动画树编辑器(Anim Tree Editor)上方,将初始对象(Init Object)切换为预览对象(Preview Object),用于后续预览效果。

image-20230517104707789

点击应用(Apply)后,通过在动画参数(Animation Parameter)窗口的参数实例值(Parameter Instance Value)中输入不同的值来切换状态。值的输入参考状态迁移条件的设定。

image-20230517104717983

基于标记的同步

除了可以使用同步组(Sync Group)进行基于比例的同步外,引擎还提供了基于标记的同步功能。

动画编辑器(Animation Editor)中动画资产的通知(Notify)处可设置同步标记(Sync Marker),在不同动画中的相同动作处添加同步标记(Sync Marker),播放动画时将会根据相同的同步标记(Sync Marker)完成动画同步。

在动画编辑器中的通知(Notify)轨道上右击打开快捷菜单,依次选择添加同步标记(Add Sync Marker) -> 新同步标记(New Sync Marker),在弹出的新同步标记(New Sync Marker)窗口中输入同步标记名称后点击确定(OK)按钮完成创建。

注意:使用同步标记(Sync Marker)的动画须确保它们在同一个同步组(Sync Group)中,引擎只会匹配同一个同步组中的相同同步标记。

根据上述方法在行走和跑步动画中相同的动作处(两脚落地时)添加对应的同步标记(Sync Marker)

image-20230517160354206

image-20230517160544026

资产细项(Asset Details)面板中将这两个动画置于同一个同步组(Sync Group)

将所设置的动画资产全部保存后,在动画树编辑器(Anim Tree Editor)中,切换状态可看到同步后的效果。

效果

未使用同步标记(Sync Marker)同步组(Sync Group)

NoSyncGroup

使用同步组(Sync Group)

SyncGroup

使用同步标记(Sync Marker)同步组(Sync Group)

SyncMarker