Language:
Page Info
Skill Level:
Engine Version:
Share

动画蒙太奇综述

动画蒙太奇(Animation Montage)(简称 蒙太奇(Montage))提供了一种直接通过 蓝图(Blueprints) 或C++代码控制动画资源的途径。 你可以使用动画蒙太奇将多个不同动画序列 组合成一个资源。你可以将该资源分成若干 片段(Sections),选择播放其中的个别片段,或者选择播放所有片段。 你可以触发蒙太奇中的 事件(Events) 以执行各种本地或复制任务,例如播放Sound Cue或粒子效果,更改玩家数值(如弹药数量)等,甚至在动画启用“根运动”时复制联网游戏中的根运动

蒙太奇示例

以下角色给散弹枪装弹的动画序列是蒙太奇的一个实际用例:

在上面的视频中,角色拿起弹夹,开始装弹,然后返回闲散姿势。 它作为装弹动画是没有问题的,但使用蒙太奇可以更精细地控制。 例如,假设你希望角色不是每次装入相同数量的子弹,而是每次装入不同数量的子弹。 你可以将该动画分成三部分(拿起弹夹、开始装弹,返回闲散姿势),并将它们组合在蒙太奇中。你可以将它们分段,然后选择播放其中的个别片段,或者播放所有片段。

以下是一个给散弹枪装弹的蒙太奇示例,分为_开始(Start)循环(Loop)结束(End)_ 三个部分。

MontageExample.png

借助蓝图或C++,我们可以定义当玩家按下按钮时,动画从 开始 片段开始播放。 名为 循环 的循环中间片段紧跟在 开始 片段之后,在蒙太奇中设置为永久循环。 如下面的视频所示,如果玩家松开装弹按钮,或已给散弹枪装满子弹,动画将停止循环,并跳转到 结束 片段以退出动画。

装弹动作比烘焙序列略快。但是,我们可以根据需要调整循环动画的播放速度。这样我们就可以控制何时中断装弹动作以及何时返回到闲散姿势。 有一个类似的用例是,角色在空中跳跃,循环播放在空中或掉落的动画,然后再播放着陆序列。在空中的时间可以变化,以便随时从蒙太奇的某个部分中断。

蒙太奇的部分其他用途包括:

  • 可以在 动画蓝图(Animation Blueprint)事件图(Event Graph) 中播放动画。

  • 将复杂的动画序列串联起来,让它们成为一个动画。

  • 根据代码或蓝图脚本仅循环一个或多个动画中的特定部分。

  • 根据代码或蓝图脚本处理多个动画的基于事件的切换。

  • 将复杂的动画序列分配到可在代码或蓝图中切换的指定槽中。

  • 根据代码或蓝图脚本在各种动画序列之间精确切换。

蒙太奇UI

创建蒙太奇NEW! 并在动画编辑器 中将其打开。你可以使用 资源编辑器(Asset Editor) 部分来定义蒙太奇的工作方式。

MontageWindow.png

蒙太奇的“资源编辑器”面板分为以下几个主要区域:

  1. 蒙太奇(Montage)

  2. 片段(Sections)

  3. 元素计时(Element Timing)

  4. 通知(Notifies)

  5. 曲线(Curves)

蒙太奇(Montage)

“蒙太奇”(Montage)区域的组成如下:

MontageArea.png

  1. 片段(Sections) - 显示在蒙太奇中创建的任何片段。

  2. 插槽(Slot) - 显示添加到当前插槽的动画。

  3. 组/插槽(Group/Slot) - 显示当前选定的动画组和插槽。

片段

通过创建 片段(Sections),可将一个插槽分解为多个动画部分。每个片段都有一个名称,并且在槽的时间轴中有自己的位置。 你可以使用该名称直接跳转到某个特定片段,或将某个片段安排为接在当前片段结束时播放。 在 蓝图(Blueprint) 中,你可以查询当前片段,跳转到某个片段,或设置将要播放的下一个片段。

你可以把片段想象成音乐播放列表中的歌曲,而插槽就是音乐专辑。 你正在播放某个片段(歌曲)时,可以排队或在当前片段结束后跳转到插槽(专辑)中的另一片段,或者直接跳转到想要立即播放的片段。

插槽

在蒙太奇中,一个 插槽(Slot) 就是一条轨迹,其中可容纳任意数量的动画。你可以任意命名插槽,并使用该名称混合到其中的动画中。 回到装弹蒙太奇的例子,我们可以针对玩家站立时或匍匐时创建不同的装弹版本。 在这种情况下,我们将每个版本的动画单独放置到蒙太奇(如下)中的各个插槽,并使用 动画蓝图(Animation Blueprint)动画图(AnimGraph) 中的 插槽(Slot) 节点来决定使用哪个动画集,具体取决于角色是站着还是匍匐。

MultipleSlots.png

在上图中,我们在角色站立装弹时使用 DefaultProne 插槽,在角色匍匐装弹时使用 Prone 插槽。

如果指定了多个插槽,可单击要在编辑器中预览的插槽的PreviewButton.png预览按钮进行预览。

为了在使用多个插槽时获得最佳效果,请确保所涉及的多个动画的时间从头到尾长度相同。

组/插槽

组(Groups) 是一系列的 插槽(Slots),每组只能播放一个蒙太奇。如果要同时播放另一个蒙太奇,可以为其创建一个新的组。 动画组和插槽集中在 Anim Slot Manager 选项卡中。要打开它,请单击AnimSlotManagerButton.png图标。使用下拉菜单从可用插槽中进行选择。 在创建新的蒙太奇时,插槽节点在最初有一条 默认槽(Default Slot),这样它们就能立即发挥作用。

片段

片段(Sections) 区域中,你可以为在蒙太奇区域中定义的片段建立相互关系。

SectionsUI.png

  1. 创建默认/清除(Create Default/Clear) - “创建默认”在所有片段之间创建默认关联,并在“清除”将所有关联清除时将它们逐一串联起来。

  2. 片段按钮(Section Buttons) - 在此区域中,显示“蒙太奇”(Montage)区域中定义的每个片段对应的按钮。你可以将其分配给片段关联。

  3. 片段关联轨迹(Section Association Tracks) - 在这里,单击“预览所有片段”(Preview All Sections)可将动画片段之间的关系可视化,单击“预览”(Preview)可将各个轨迹可视化。

循环播放

可以将片段设置为无限循环播放,这对于任何需要重复的动作极为有用。 在一条片段关联轨迹中多次关联同一片段就可以使该关联循环运行。 片段将变为蓝色以表示循环。例如,假设一个动画中角色在给散弹枪装弹,一次装一发。 你可以提取出角色塞弹入膛的片段,让它循环播放。 然后,你可以使用 通知(Notifies) 在蓝图中创建通知事件,每当该动画播放一次就使弹药计数加一。 一旦该计数达到设定的数字(装弹已满),你就可以切换到角色关闭装弹口并恢复闲散姿态的动画。

元素计时

元素计时(Element Timing) 轨迹从“蒙太奇”(Montage)和“通知”(Notifies)区域提取信息,以帮助设定不同片段的时间。

ElementTimingTrack.png

轨迹中的每个节点都有一个号码,表示该对象在蒙太奇中的触发顺序,并按以下规则显示颜色:

  • 红色 - 表示通知、通知状态和通知状态结束标记。

  • 浅蓝色 - 表示分支点。

  • 绿色 - 表示蒙太奇片段。

单击元素计时轨迹上的ElementOptions.png按钮,将出现显示/隐藏其他信息的选项。

通知

NotifiesSection.png

动画通知 (简称 通知(Notifies))可以将事件设置为在动画中的特定点发生。 例如,在上图中,我们将通知设置为每次播放装弹动画时,在装弹蒙太奇中播放拿起弹夹的声音。 我们还调用了一个名为 SpawnClip 的自定义事件。它可以用来生成代表弹药夹场景的网格体。 最后,在循环部分中使用“分支”事件,决定是否退出循环并前进到动画的结束片段。角色在结束片段会返回闲散姿态。

曲线

CurvesArea.png

动画曲线 提供了一种在动画播放期间更改材质参数或变形目标值的方法。 这样便可指定要更改的资源(材质或变形目标),相应地命名曲线,并在动画持续时间内调整关键帧值。

播放蒙太奇

蒙太奇资源可以根据需要以各种不同的方式播放。 如果希望骨架网格体自动播放蒙太奇,可将其指定为骨架网格体的 要播放的动画(Anim to Play)。 但是,如果只想在满足某些特定条件时播放蒙太奇,可创建 蓝图(Blueprint) 脚本,使用 播放蒙太奇(Play Montage) 节点调用蒙太奇或蒙太奇中的片段。 你还可以使用C++代码让蒙太奇根据指定的条件播放。

有关更多信息,请参阅使用动画蒙太奇NEW! 页面。

子蒙太奇

子蒙太奇(Child Montages) 可以方便地创建千变万化的动画,而且不会影响Gameplay,也无需为多个资源重新创建或维护通知(或其他细节)。 例如,在实时策略(RTS)游戏中,你可以为单位制作各种自动攻击动画;或者在角色扮演游戏(RPG)或动作游戏中,根据角色手持的武器或佩戴的盔甲,更改角色的闲散动画。 在 内容浏览器(Content Browser) 中右键单击动画蒙太奇并使用 创建子蒙太奇(Create Child Montage) 情境菜单选项,可从现有动画蒙太奇创建子动画蒙太奇。

ChildMontageOption.png

新蒙太奇与原蒙太奇的名称相同,但最后添加了“_Child”。

NewChildMontage.png

当打开子蒙太奇时,蒙太奇中的所有元素都将显示为灰色,并在顶部显示说明其为子蒙太奇的文本。

GrayedOut.png

右键单击 插槽轨迹(Slot Track) 中的 动画片段(Anim Segment),可使用新动画将其覆盖。

RightClickChange.png

你可以使用其他动画替换 插槽轨迹(Slot Track) 中的任何动画,即使长度不同也无妨。 引擎会自动调整替换动画的播放速率、开始时间和结束时间,这样它就可使用与原始动画等效的部分,按照原始动画的播放时间进行播放。 与父级相同的动画显示为绿色,被覆盖的动画显示为黄色。

ReplacedMontage.png

在上图中,我们用另一个攻击动画替换了原来的攻击动画。

子蒙太奇不能用作其他子蒙太奇的父级。