什么是蒙太奇(Montage)
UE4的很多功能模块都会起一个非常文艺的名字(这体现了技术宅们深入骨髓的浪漫情怀):可视化的编程工具叫Blueprint、新粒子系统叫Niagara、动画系统叫Persona等等。蒙太奇也是其中之一,它借用了电影技术中的术语。简单的说蒙太奇就是一种动态播放角色动画的方法。
从状态机(State Machine)说起
状态机,相信大家都了解。UE4的动画状态机系统非常强大,仅使用它已经可以开发出功能复杂的角色动画了。
但状态机并不完美:
- 状态机的动画序列必须静态地放到每一个状态中,这些动画序列是不能够在运行时通过参数指定。
- 随着状态机功能的增加,它的状态网络也会越来越复杂,修改的时候容易牵一发而动全身,因此它的设计、维护以及扩展都是比较困难的。
- 我们还会遇到这样的情况:有些动画,它们数量很多,但每个动画可能仅在特殊的场合触发那么一两次(比如:角色遇到了特殊的机关要操作一下),把这些动画都放在状态机中不但工作量巨大,而且性价比很低。
- 还有些时候,我们想跳出状态机的控制,从而获得角色动画的直接控制权,用代码直接调用动画。
于是,蒙太奇就应运而生了。
看看蒙太奇的调用方法
在这么多方面能够胜过UE4的状态机系统,它一定很复杂吧?
为了不吓跑初学者,咱们先看看蒙太奇动画最常用的调用方法。
如此简单粗暴,调用Play Anim Montage函数播放指定的“蒙太奇动画”,完毕!
注:这里的“蒙太奇动画”并不完全等同于UE4中的Animation Sequence,需要对Animation Sequence进行一些“处理”。它的制作过程,老王将在后续文章中详细介绍,可以保证的是这个过程并不复杂。目前大家把它理解为Animation Sequence Plus版本就可以了 。
有些朋友可能拍案而起,惊呼:“这不就是在状态机诞生之前“最最最原始”的动画调用方式么?”
仅从调用方式来看确实非常返璞归真,和“最最最原始”的动画播放方式别无二致。但UE4的蒙太奇并不是完全独立于状态机的机制,它通过一种叫插槽(Slot)的东东又和状态机完美地水乳交融到了一起。
仅仅两行文字,读书不多的老王就用了三个成语,堪称本人写博客以来之最。看到此处各位看官如果不一键三联真是枉费了老王的满腔热血啊。
下图就是蒙太奇通过插槽和状态机结合的例子(黄框标记的都是插槽节点):
其实所谓插槽就是一个“位置标签”,我们在制作蒙太奇动画的时候,可以为每一个蒙太奇动画指定自己的插槽。这样它就有了自己播放位置。
- 如果我们把一段蒙太奇动画的插槽设置为紧挨着Output Pose的插槽,那么它会忽略前面所有节点运算的结果以绝对霸道总裁的姿态,只播放自己的动画片段。
- 当然,你也可以把插槽放置在状态融合的分支通道中,这样它忽略掉的就是这个分支上自己之前的节点,相当于区域副总裁了。归根到底一句话:蒙太奇就是可以忽略掉插槽之前的所有结果。
小结
今天我们大致了解了什么是蒙太奇,以及它在UE4动画系统中的作用和地位。道理不难理解,但是这个蒙太奇机制确实能够为UE4衍生出很多高级的玩法。后面的文章中老王会介绍蒙太奇动画的制作过程,以及通过一些案例让大家对蒙太奇爱不释手。