动画通知(通知)

通知是一个系统,其在动画序列中设置和接收事件,以执行外部操作。

Windows
MacOS
Linux

动画通知AnimNotifies通知)为动画程序员提供了一种方式,以便设置事件在 动画序列 中的特定点上发生。通知常用于在行走或跑步动画中添加脚步声之类的效果,或在动画中生成粒子系统。它们用途广泛,系统可随自定义通知类型进行延展,以满足各种游戏的需求。

添加通知

AddNotify_01.png

不同类型的通知会导致不同事件被触发。举例而言,相机效果、粒子效果、音效均可借助通知在动画中的任意点进行触发。在动画中需要触发通知的点上右键点击 通知 轨迹,选择通知类型,即可完成通知的添加。

如需了解通知添加/编辑的详情,请参见动画序列编辑器页面。

骨架通知

骨架通知 全面负责美术师在动画中特定点上 动画蓝图 中执行的操作。在通知轨迹上点击右键,从快捷菜单中选择 添加通知,然后选择 新建通知

Skeleton_01.png

弹出为新建通知输入命名的提示。 

Skeleton_02.png

创建的所有骨架通知都将显示在 骨架通知 菜单下。

Skeleton_03.png

选择一个骨架通知将把其添加至通知轨迹。

Skeleton_04.png

可利用骨架通知来创建一个 通知事件,其命名与骨架网格体动画蓝图状态机中的事件图表或过渡图表相同。在 事件过渡图表 中点击右键,从 添加动画通知事件 菜单中选择通知,即可添加骨架通知。

AddNotify_NewNotify_AnimBP.png

一个事件节点将被添加至图表;通知从其所处的动画中被调用时,此图表将被执行。

AddNotify_NewNotify_AnimBPEvents.png

布料模拟通知

有数个本地通知可被添加,以控制动画中给定点处的 布料 模拟。

Clothing_01.png

  • 暂停布料模拟 将暂停布料的模拟。

  • 继续布料模拟 用于继续已暂停的布料模拟

  • 重设布料模拟 将把布料模拟初始化为其默认状态。

以下视频展示了布料模拟通知的用法。 

播放粒子效果

播放粒子效果 通知在给定插槽位置和动画时间轴上的特定点处生成并播放粒子系统。实用的情况有:玩家移动时脚边出现沙尘效果;玩家使用氮气加速时排气管中喷出火焰;等等。

PlayParticleEffect_01.png

播放粒子效果通知不使用动画蓝图来控制行为。其将使用 细节 面板中定义的数个属性来确定使用的粒子系统和产生粒子的插槽。

PlayParticleEffectDetails.png

属性

描述

PSTemplate

保存粒子系统,此系统将在通知设置的时间点上生成。

插槽命名

其包含将用作粒子系统生成点的骨架网格体插槽。

附加

确定效果是否应附加到骨骼/插槽。

位置偏移

来自插槽的位置偏移。

旋转偏移

来自插槽的旋转偏移。

通知颜色

修改通知条上的通知颜色。

设置后,相关的粒子系统将开始播放,把插槽位置用作生成点。

DustyFeet.png

播放音效

播放音效 通知是使音效与动画保持同步的简单方式。与“播放粒子效果”相似,此通知的属性可在 细节 面板中进行设置,以便进行快速简单的音效设置。实用情况:机器人移动时的机械声;角色移动时布料的沙沙声;以及相似效果。

PlaySound_01.png

播放音效 通知使用在 细节 面板中定义的以下属性来确定使用的音效和产生音效的 插槽骨骼

PlaySound_02.png

属性

描述

音效

这是要播放的音效资源。

音量乘数

此缩放乘数将被应用至音效的音量。

音高乘数

此缩放乘数将被应用至音效的音高。

跟随

勾选后,音效源将跟随静态网格体移动。如未勾选,音效将保持在其生成的位置之后。

附加命名

其包含将用作音效生成点的骨架网格体插槽或骨骼。

通知颜色

修改通知条上的通知颜色。

重设力学

在动画中调用时,重设力学 通知可将应用到骨架网格体的所有AnimDynamics重新恢复为原始状态。

ResetDynamics_01.png

也可在 细节 面板的“通知轨迹(Notifies Track)”窗口中修改此通知的颜色。 

ResetDynamics_02.png

添加通知状态

NotifyStates_01.png

动画通知状态通知状态)与上方的标准通知相同。它们拥有3个独特事件:一个开始、一个tick,以及一个结束。它们将直接开始,在通知开始和结束时触发,其中的 事件图表 到达动画中特定时间时也会触发。每次动画更新均会触发tick,直到命中结束事件。普通通知和通知状态之间的主要差异是通知状态为自含式蓝图

使用通知状态时需要注意的其他事项: 

  • 必定以通知开始(Notify Begin)事件作为开始。

  • 必定以通知结束(Notify End)事件作为结束。

  • 必定将通知Tick包裹在在通知开始和通知结束事件之间。

  • 不同动画通知(普通或状态)之间的排序并非固定。如将两个动画通知状态放置在一起,第一个结束之后第二个并不一定会开始。只可将此用于不依赖于其他通知的单个操作。

  • 支持负播放率。但仍会首先调用Notify Begin,最后调用Notify End。

如果每帧进行修改,则应使用Tick蓝图。如果需要在tick命中之前将变量、标签或属性设为一定的值,则应使用Begin蓝图。最后,在最终tick命中后可使用End蓝图来修改变量、标签或属性。

定时粒子效果

定时粒子效果播放粒子效果 通知的相似之处在于两者均可实现在动画中的给定点处播放粒子效果;差异则是可通过定时粒子效果来定义通知自身中效果的长度。

NotifyState_Timed_01.png

下图中,定时粒子效果已被指定到动画。左键点击条的末端(或开端)进行拖动即可增加或减少效果的长度。

NotifyState_Timed_02.png

定时粒子效果的属性与播放粒子效果通知相同,可在 细节 面板中进行调整。

动画尾迹

动画尾迹(或简称 AnimTrail)是一种发射器,可在场景中移动物体后方形成尾迹。其原理是对每次tick时骨架网格体上两个插槽位置进行采样,并沿尾迹的长度方向将插槽之间的三角形结合起来。

NotifyState_Trail_01.png

下例是动画尾迹用于动画角色的效果。

使用AnimTrail发射器的注意事项:

  1. 须创建一个粒子系统,其包含拥有AnimTrail类型数据的发射器。

  2. 创建 尾迹 类型的通知状态,并将其添加到动画。

添加AnimTrail后,即可从 细节 面板调整其属性:

NotifyState_Trail_02.png

属性

描述

PSTemplate

这是包含上述动画尾迹的粒子系统。

第一个插槽命名

这是定义尾迹的第一个骨骼/插槽的命名。

第二个插槽命名

这是定义尾迹的第二个骨骼/插槽的命名。

上方的属性为必需,但下方的属性为可选。可通过它们来调整动画中尾迹的宽度。可根据需要将尾迹附加到插槽进行运动,但这并非理想操作。此方法的基础是提供一个宽度缩放值。宽度缩放为1.0时,尾迹将保持宽度相同;设为0.0时尾迹的宽度为0。

属性

描述

宽度缩放模式

这将调整宽度的应用方式。下图展示了其工作原理。此例显示了一条正弦曲线,从0到中间的1,然后再次回到0。

宽度缩放曲线

宽度值来自每次tick采样的曲线。此属性为该曲线的命名。请参见下方创建此曲线的详情。

WidthScaleMode.png

左图显示从中间向外缩放,中图显示从第一个插槽进行缩放,而右图显示从第二个插槽进行缩放。

以下为一些可用的调试渲染选项:

属性

描述

渲染几何体

这将切换主尾迹几何体的渲染。

渲染生成点

此属性切换尾迹主生成点的调试渲染。即每次tick时从插槽采样的位置。

渲染切线

此属性切换曲线切线的调试渲染。

渲染曲面细分

此属性切换曲线上所有顶点的调试渲染。这将显示曲线在生成点之间的曲面细分方式。

也可修改通知颜色,来修改“通知轨迹”窗口中使用的颜色。 

自定义通知状态

创建自定义通知状态(其与原生通知状态相同,但却是自定义蓝图,可提供动画中需要发生的逻辑)的方法与添加常规通知相同。在使用自定义通知状态之前,必须首先为动画通知状态类创建蓝图类。创建后,右键点击动画的 通知轨迹 并选择 添加通知状态,然后选择自定义通知。

NotifyState_Custom_01.png

上图中已创建一个名为 MyCustomNotifyState 的AnimNotifyState蓝图类,以便将其选为动画中使用的通知状态。创建动画通知状态蓝图后,即可将其打开,开始实现函数,确定通知使用方式(下图)。

NotifyState_Custom_02.png

无需实现每个函数,但至少应实现 Received Notify TickReceived Notify BeginReceived Notify End。如只实现了 Received Notify BeginReceived Notify End,则可使用标准动画通知。

以下是 Notify Begin 覆盖:

Recieved_NotifyStart.png

以下是 Notify End 覆盖:

Recieved_NotifyEnd.png

以下是 Notify Tick 覆盖: 

NotifyState_Custom_03.png

以下是每个引脚类型在覆盖函数中如何使用的描述:

引脚

描述

Mesh Comp

这是触发此动画通知状态的动画序列或蒙太奇的骨架网格体组件。

Anim Seq

这是触发此动画通知状态的特定动画序列。

Frame Delta Time

只存在于Received Notify Tick函数中,将给出上次动画更新后的时间。

当前无法获取蓝图中动画通知状态的长度。

添加同步标记

可将同步组用于同步关联动画。也可使用关联动画中的 同步标记(Sync Markers) 来同步动画。右键点击“通知轨迹(Notifies Track)”窗口并选择 添加同步标记(Sync Markers) 即可添加同步标记。
SyncMarker_00.png

将弹出为同步标记输入命名的提示:

SyncMarker_01.png

输入同步标记命名后,即可在子菜单 现有同步标记(Existing Sync Markers) 中找到它。

SyncMarker_02.png

然后可以将创建的同步标记添加到其他动画。

使用同步标记时需要考虑的一些因素:

  • 只有相同同步组中的动画才会被同步,领导者将在相同同步组中驱动跟随者的位置。

  • 播放率固定与主动画一致(播放率调整当前不可用)。

  • 只有组中所有动画通用的标记才会被同步。

    • 举例而言,如一个动画缺失“Right Foot Down”标记,确定帧的位置时所有动画中的这些标记都将被无视。

  • 位置将基于领导者的相对位置进行同步(相对于其通用标记)。

    • 举例而言,如果领导者左右脚标记之间为25%,那么跟随者将同步到其相应左右标记的25%。

  • 同步组中的动画拥有足够的匹配标记时,将自动使用基于标记的同步。否则将使用原始缩放长度同步行为。

  • 动画蒙太奇在混出时也支持基于标记的同步,因此可以无缝过渡回其他动画。

    • 可在动画蒙太奇中找到同步组设置资源细节面板。

在动画中设置并应用动画修改器也可自动添加同步标记。

管理通知

通知(Notifies) 轨迹上点击右键,选择 管理通知(Manage Notifies) 选项,即可对现有骨架通知进行新增、重命名,或移除。

ManageNotifies_01.png

动画通知(Manage Notifies) 窗口将出现,并显示已创建的通知。

ManageNotifies_02.png

点击右键新建通知,或在通知上点击右键进行重命名或删除。

管理通知(Manage Notifies) 窗口的 细节 面板中点击 扫描 按钮,即可查看当前哪个动画正在使用选中的通知。

ManageNotifies_04.png

使用选中通知的所有动画都将显示在 细节 面板中。

ManageNotifies_05.png

额外通知属性

除可在每种通知的 细节 面板的 动画通知(Anim Notify) 部分(适用时)进行修改的属性外,也可将以下属性用于定义通知的使用方式。

AdditionalProperites_01.png

触发设置

通知触发几率

定义触发通知的几率(0为无几率,1为固定触发)。

在专属服务器上触发

禁用后将在专属服务器上跳过此通知。

在跟随者上触发

启用后,动画为同步组中的跟随者时将触发此通知(默认只有同步组领导者通知触发)。

通知过滤类型

定义过滤通知的方法(使其停止触发)。可设为按网格体当前LOD进行过滤。

事件

触发权重阈值

决定动画序列触发通知所需的权重。

蒙太奇Tick类型

确定通知处理方式的方法,使用“队列”或“分支点”(参见下方的“蒙太奇Tick类型”部分)。

蒙太奇Tick类型

蒙太奇Tick类型“队列”和“分支点”设置的主要差异在于队列通知为异步,而分支点为同步。对于终端用户而言,分支点将更精确地表明其在动画时间轴上的发生位置。

需要跳转到极精确时间处的动画时,高准确性便显得尤为重要。而使用队列通知来执行相同任务时,其异步执行的特性意味着事件可能在错误的动画帧上触发,在运动中造成卡顿和瞬跳现象。

由于分支点为同步执行且精确度高,因此其性能开销高于队列。因此,需要在动画时间轴上的精确时间处触发事件时(如直接跳至帧与帧匹配的另一个动画时)使用方为可取之策。如相差一帧(或不到一帧)并无大碍,则应使用队列。

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见