虚幻4 蒙太奇

官网英文地址: https://docs.unrealengine.com/latest/CHN/Engine/Animation/AnimMontage/index.html#montagearea

 

AnimMontage

 

蒙太奇介绍: 是法语montage的译音,原是法语建筑学上的一个术语,意为构成和装配。后被借用过来,

引申用在电影上就是剪辑和组合,表示镜头的组接。在这里的意思是: 3dsmax里面的动画拼接成

新的动画.

. 概要

. 一. 系统说明

. 二. 蒙太奇属性

. 三. 蒙太奇UI

. 四. 蒙太奇区域

       . 片段

       . 插槽

       . 分支点

. 五. 片段区域

       . 循环

. 六. 元素计时区域

. 七. 通知区域

. 八. 曲线区域

. 九. 蒙太奇实例

       . 创建蒙太奇

       . 蒙太奇设置

       . 片段创建

       . 定义片段关联

       . 设置分支点

       . 设置动画图

       . 设置事件图

 

概要:

       动画蒙太奇 (或者简称蒙太奇) 是一个多用途的工具, 可以创建出各种动画效果, 首先与用代码和蓝图控制动画有关. 它也能用于创建各种各样的动画效果,

       包括动画的智能循环, 基于逻辑的动画切换, 根节点运动处理等等.

 

       动画蒙太奇 (译者注: 这里指ue4 里的一种存在形态) 是动画资源, 能够被创建并且存在于内容浏览器(ue4)里. 这些资源能够直接被插拔于动画图表上,

       并且在运行时修改它的所有状态. 例如, 你能够跳到不同的片段(ue4蒙太奇中的一种概念)或者重连接到不同的片段. 大多数情况下是代码驱动动画或是

       一次性动画(例如格斗), 允许你去控制动画触发器, 停止播放动画当你需要的时候, 或者是改变状态(循环播放或非循环播放), 如下图所示:

      

       上面的图片是一个格斗动画, 有3个片段[start, loop, and end]. 当玩家左键点击, 会默认触发这个start片段, 当你询问播放这个蒙太奇的时候. 现在这个中间片段

设置为循环. 当这个start片段播完, 它将转到 loop, 并且会在那里循环到永远. 如果玩家使用鼠标点击, 动画将会停止播放, 如果你不想动画播放到中间的时候

立即停止. 你可以重新连接loop片段到 end, 它将播放到end片段就结束动画.

 

下面是一些要注意的点:

       . 播放动画的能力来自于 动画蓝图 的事件图表.

       . 将一些动画序列连接成你想要的一个动画

       . 将一个动画的某一部分作为循环, 或者是一些基于c++代码或者是蓝图的动画来作为循环

       . 基于c++代码或者是蓝图的动画 可以处理多个事件开关

       . 为你的角色的 root motion 做适当的处理

       . 指定多个动画序列到一个命名的插槽上的能力, 能够被 c++代码或者蓝图控制.

       . 使用 c++代码或者蓝图 精确的控制各种各样的动画序列.

 

所以, 你能看到的是, 你能够利用蒙太奇做各种不同的事情. 甚至可以将蒙太奇作为一个系统. 这样, 你可以归结为, 蒙太奇使用代码或蓝图控制.

几乎所有的事情都遵循上面这一点.

 

一个示例: 在角色身上使用动画蒙太奇, 在 AnimationContent Examples.

 

一.  系统说明:

下面有一些关于蒙太奇的细节是需要记住的:

              . 在某一时刻, 只能有一个蒙太奇在播放. 如果开始播放第二个, 第一个将会被停止.

              . 此时, root motion 重复的去访问server, 尽管蒙太奇没有. 这意味着, 用户使用 root motion 将必须要清楚知道蒙太奇的状态会重复的访问网络

                     (如: 位置, play state 等等)

 

二.  蒙太奇属性

下面的图片是蒙太奇资源的属性, 在编辑器的内容浏览器中右键选择蒙太奇资源, 在弹出的上下文菜单中选择属性(我这里要选择编辑), 就能够看到下面的面板:

             

             

蒙太奇属性

 

Montage

 

Blend In Time

蒙太奇开始播放的时候, 混合开始的时间

Blend Out Time

混合结束的时间

Root Motion

 

Enable Root Motion

Translation

 

Enable Root Motion Rotation

 

Additive Settings

 

Preview Base Pose

为附加混合空间设置一个基本的预览pose

Animation

 

Rate Scale

一个关于蒙太奇播放多快的数字

Skeleton

和蒙太奇相关联的骨骼

 

 

三.   蒙太奇UI

当在列表里面选中一个蒙太奇资源的时候, 了解下图中每个区域的作用将是有帮助的.

 

 

1.Montage Area

2.Sections Area

3.ElementTiming Area

4.Notifies Area

5.Curves Area

四. Montage Area

这个蒙太奇区域像下面这样:

1.    Section Track – 显示所有定义给这个蒙太奇的片段. 片段可以使用鼠标左键被拖动到不同的位置.

2.    Slot Track – 显示当前的插槽, 这个插槽能够使用任意多你想要的动画来进行填充; 它们将按着顺序进行播放, 需要

注意的是, 多个动画在插槽上将有交替的位置- 上-下-上, 这样可以帮助你区分不同的动画.

3.    Branch Point Track – 显示定义给这个蒙太奇的所有分支点. 使用鼠标左键, 分支点能够沿着时间轴被拖放到不同的位置.

 

提示: 你可能有多个插槽在一个蒙太奇里面, 每一个插槽都有自己的名字和一系列动画.  即使这样, 你仍然可以在一个

        蒙太奇里面只有一个片段和一个分支点.

 

Sections

蒙太奇片段提供了一种将一个插槽分散到多个动画的方法. 每个章节在插槽的时间轴上有自己的名字和位置. 使用这个名字,

你能够直接跳转到一个指定的章节或者指定它成为下一个播放的对象. 在蓝图中, 你可以查找当前的片段, 跳转到指定的片段,

或者是 设置下一个要播放的片段.

 

你或许可以这样认为它: 片段像一个歌曲播放列表, 和插槽组成一张专辑. 就好像有很多的媒体播放器, 当一首歌播完之后,

你可以选择一首进行播放, 或者是跳转到一首你想听的歌曲.

创建片段的方法: 在片段轨迹上右键, 在弹出的上下文菜单上选择 “新建蒙太奇片段”.

             

 

             

插槽:

(插槽图片)

              在一个蒙太奇里面, 插槽就是一个可以容纳任意数量动画的轨迹. 你可以命名这个插槽, 然后通过调用插槽名字来混合插槽上的动画. 一个很好的例子是, 有一个角色和一个武器

              加载动画, 当角色站立, 蹲下, 和卧倒的时候都有不同的加载方式, 只要这三个动画都要相同的时机, 你可以在插槽上替换任意一个;  这些插槽可以命名为站立, 蹲下, 和卧倒.

              在你的动画蓝图上, 根据角色的当前状态, 你可以使用插槽节点来决定播放哪一个动画.(经试验, 在动画蓝图上我没找到蒙太奇和插槽) 当他们是站着的时候, 你在站立插槽上

              可以使用动画的结果.  同样, 当他们卧倒的时候, 你能看到卧倒插槽的结果.

 

              重点需要牢记的是, 虽然许多蒙太奇控制发生在动画蓝图的事件图表里, 但插槽实际上是在动画图表里处理的. 这是通过命名的插槽节点完成的. 通过在动画图表上策略性的使用

              插槽节点, 你可以让多个蒙太奇使用相同的插槽节点.

 

              分支点:

              分支点 允许你创建与动画播放同时发生的事件. 这些分支点事件能够在c++代码或蓝图中使用, 用来控制其它事情的发生, 具体的说就是, 分支点用来控制动画片段的播放.

 

              如果你已经熟悉 Animation Notifies(动画通知, 可以加在动画蒙太奇上或者是动画序列上), 你会注意到两个系统(动画通知 和分支点)非常的相似, 他们都有在脚本中控制的事件,

              不同的点是, 动画通知是异步的, 分支点是同步的. 这意味着, 分支点的触发在动画的时间轴上具有更高的精度.

 

              当你需要非常精准的跳转到一个指定的动画时, 高精度对你来说是非常重要的. 当你使用动画通知来做某些事情的时候, 异步的性质意味着不能在准确的动画帧上触发,

              这可能会导致一些麻烦.

 

              提示: 因为分支点的同步属性, 导致分支点方式比动画通知更高的性能损耗. 你只有在需要精确控制事件触发时机的时候才使用分支点方式, 例如跳转到另一个动画时需要

帧对帧对接. 如果不需要精确到帧, 可以有百分之几的误差, 那么就使用 动画通知.

 

 

五.  片段区域

片段区域能够帮助你建立片段之间的关联. 举个例子, 你可以使一个动画片段(或者是一组动画片段) 按着一个指定的顺序播放 或者循环播放.

1.     CreateDefault 按钮和 Clear 按钮 --- Create Default: 创建默认的关系关联所有的片段.  Clear:抹掉所有的关联关系.

2.     SectionButtons --- 在这个区域, 你可以看到每一个片段有一个按钮. 可以通过点击片段按钮而关联的它的轨迹.

3.     SectionAssociation Tracks --- 这是显示和预览动画片段的地方. 通过点击预览按钮, 你可以看到单个轨迹的效果;

点击 “Preview All Sections” 可以看到所有片段的播放.

 

 

              Looping

              片段可以设置为无限期的循环, 这对于你想重播动画时极其有用. 通过关联一个片断多次关联到片段轨迹, 可以让它在一个循环里播放. 这个片段将显示为蓝色.

              例如: 考虑一种情况, 一个角色给猎枪装弹, 一弹一次, 你可以用一个片段: 角色装一颗子弹, 然后让它循环. 然后, 通过使用动画通知, 你可以在蓝图中

              创建通知事件来实现弹药计数. 当弹药数量到达一定数量(满)的时候, 你就切换到idle动画.

 

 

 

六.  元素计时区域(可能是4.9 才有, 我现在 4.7.6 没有)

 

              元素计时区域的信息来自于蒙太奇区域和通知区域, 显示不同的片段的时间.

             

      

 

              每个节点在轨迹上都有一个数字, 表示在整个蒙太奇中触发的顺序, 并且用不同的颜色进行了标明:

                     . 红色 — 通知, 通知结束的点

                     . 浅蓝色 --- 分支点通知

                     . 绿色 --- 蒙太奇片段

 

                     提示: 这些颜色可以在 Animation Editor 里面进行编辑.

              当鼠标悬浮在这些节点上的时候, 将会出现一个提示框:

             

             

              下面是 在轨迹右边的三角形点击就会出现下拉菜单:

             

 

      

七.   通知区域

 

 

              动画通知 提供了一种方式 将事件挂接到动画序列的指定点上. 动画通知常常用来增加效果, 如 在walk 或者 run 动画上挂一个脚步声音, 或者是产生一个烟尘

              粒子特效. 然而, 他们还有其它的用途, 能够继承自引擎提供的通知类, 来满足自己的需要.

             

              获取更多的信息, 查看 Animation notifications(Notifies)

 

 

 

八.   曲线区域

 

 

动画曲线 提供了一种方式来改变材质参数, 或者是变形. 他们的工作方式非常简单, 你只要先选择这个你要修改的资源(材质或模型), 命名曲线, 然后在动画轴上

调整关键帧的值.

获取更多的信息, 查看 Animation Curves

 

九.  蒙太奇示例

 

在这个例子里面, 我们要有一个角色能在各个方向自由的奔跑, 还有一个攻击动画, 但是只能在上半身播放. 这个攻击将包含多个动画. 这是一个显示蒙太奇组成的

完美方式, 当然还有在事件图表中进行控制, 和在动画图表中进行混合.

 

              然而, 下面的一些事情我们必须要事先确定:

                     . 我们已经定义了一个状态机叫 locomotion,  这就像是一个第三人称工程模板.

                     . 我们有一些美术做的动画, 我们将这些动画串起来做成一个蒙太奇.

                     . 我们需要创建 character blueprint class, 我们可以从这个蓝图类里面获取输入信息.

 

                            . 例如, 当按下鼠标左键时, 设置变量 IsAttacking 为true, 松开设置为 false.

                                  

 

              创建蒙太奇

 

              创建蒙太奇是一件容易的事, 在内容浏览器窗口中右击, 在上下文菜单中动画 -> 动画蒙太奇.  也可以右击一个动画序列资源, 在菜单中选择 创建 -> 创建动画蒙太奇.

              这样就可以创建一个蒙太奇, 并且已经设置好动画序列 和默认的插槽.

             

 

 

              蒙太奇设置

 

              我们要做的第一件事就是命名我们的插槽, 在这个蒙太奇里只需要一个插槽, 我们需要这个攻击只影响上半身, 给插槽起名Upper Body 似乎再好没有,

              然后, 我们拖拽需要的动画序列到这个插槽上. 需要下面这些动画:

                     . 挥舞锤子从右到左 (1)

                     . 挥舞锤子从左到右 (2)

                     . 动作1从最后一帧回idle

                     . 动作2从最后一帧回idle

 

                     提示: 这两个挥舞的动作都结束在相同的姿势上. 这意味着这两个姿势能够倒着播.

 

              动画的顺序并不是特别的重要, 只需要一个接着一个就行了.

      

 

              片段创建

 

              我们的下一步是在蒙太奇中分出这些动画, 这样我们就能在蓝图代码中查询和调用他们. 这非常简单, 在 片段轨迹上, 右击鼠标, 在菜单中选择 “新建蒙太奇片段”,

             

              我们使用相当直白的名字给每个片段.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值