动画设计是Blender的看家本领之一,大多数情况下,一些需要效果可控的动画都与关键帧设计息息相关,比如人物角色的动作就需要绑定骨骼后对骨骼做位置、旋转甚至缩放的关键帧,但并不是所有可控动画都有动作捕捉这种效率工具,比如我们本期想要制作的飞弹朝着某个目标连续发射的效果,就不可能每一帧都手动设置,那么我们应该如何设计这样一个在游戏里很常见的场景效果呢?

01

粒子系统很直观,但可控性不佳

飞弹齐射的效果在Blender里无非就是一个个的点,朝着目标物体飞去,想要实现这个目标其实并不算难,粒子系统就是最直观的答案。

在场景中新建一个猴头作为目标,为系统默认放置的立方体添加粒子系统,记得把粒子的生命值设置为可以完全覆盖整条视频的长度,接下来把粒子系统的物理类型修改为“群体”,如图1所示,将“群体行为逻辑”设置为“目标”并在下方将目标物体选择为猴头,这时候播放视频你会发现立方体喷发出的粒子会朝着猴头飞去。

打开网易新闻 查看精彩图片

图1

不过这时候可能会出现一个问题,那就是此时的粒子系统只会读取猴头的初始位置,如果猴头做了位置变化的动画效果,粒子系统就跟不上了,所以我们还需要如图2所示那样,给猴头再添加一个“力场”效果“谐振”,这个效果就可以把粒子吸引到猴头的表面上。记得要将谐振力场的“形状”设定为“每个点”,然后“力度/强度”来控制粒子飞行的速度。

图2
打开网易新闻 查看精彩图片
图2

接下来我们再为猴头添加一个碰撞效果,只需要勾选上“消除粒子”功能即可,这个操作的目的是让粒子在碰到猴头时就自动消失,如此以来就基本达到了我们一开始所设想的目的,然后就是将这些粒子都变成飞弹的形态。

在这里我们用柱体作为范例来进行测试,在场景中新建一个柱体,并将它沿Z轴缩放为一个长柱体,然后在粒子系统中找到“渲染”选项,把“渲染为”设置为物体,“实例物体”选择刚刚得到的长柱体,调整缩放后你可能会发现,这些发射出去的长柱体“飞弹”全都是竖着摆放的,此时我们需要进入长柱体的编辑模式,视你的具体设计情况,将其沿X轴或Y轴旋转90°,如此一来,你就能得到如图3所示的飞弹瞄准猴头发射的效果了。

打开网易新闻 查看精彩图片

图3

02

几何节点效果更丰富

但实现方法较复杂

从粒子系统的结果来看,似乎已经摸到了实用的门槛,但如果你想要更高的真实性,比如飞弹先从发射端弹出,然后再飞向目标,同时还想要做飞弹的尾焰喷射效果,传统的粒子系统都是几乎无法实现的,更何况每次修改粒子系统参数或者移动发射物体和目标的位置都需要重新烘焙,属于后续调整非常麻烦的方法,因此,这套系统还需要更高级的玩法——几何节点来提供思路。

首先,我们重新新建一个网格物体,比如立方体,然后在它的几何节点编辑器里使用“分布点于面上”,这个操作其实就是复刻粒子系统的效果,让这些点成为我们飞弹实例化所使用的顶点。

图4
打开网易新闻 查看精彩图片
图4

那么我们要如何让这些顶点飞起来呢,这时候就需要用到“模拟”节点组了,因为我们要让几何节点不断地在每一帧都生成新的顶点而不是只在第一帧生成,所以需要使用“合并几何”的方式,如图4所示那样与模拟节点的输入进行连接,大家可以注意到我们同时需要进行多项前置条件的设定,比如为用“场景时间”的“帧”作为“分布点于面上”的“随机种”,这个操作是让每一帧生成的顶点位置都不一样,再比如我们要提前将“场景时间”的“秒”存储为一个单独的属性,这个属性就是每一个顶点生成的时间,之所以要保存这个属性,是因为我们后续需要让顶点在沿发射体法向向外飞出N帧之后就朝着目标飞去,而用每个顶点已经出现的时间,减去它生成的时间正好就可以进行定义。

图5
打开网易新闻 查看精彩图片
图5

紧接着我们就需要让这些顶点都往发射体法向方向往外飞,同时还需要添加一些随机值,免得大家飞的方向太过于一致,此时我们需要先在“模拟”输入节点新建一个值,命名为V,接着将“分布点于面上”的“法向”通过“矢量运算”的“缩放”连接一个“随机值”,意思就是告诉Blender要朝着法向方向进行让每个顶点都以以一个随机数值向外发射,而发射的值就需要通过“矢量运算”的“相加”与V值连接,同时我们还需要再加一个矢量形式的随机值,这样就能为顶点的飞出效果添加XYZ方向的随机效果,最后连接到“设置位置”的“偏移量”,具体设置可以参考图5,同时注意,这个值还要连接到“模拟”输出节点的V值上,才能正确显示我们想要的效果。

图6
打开网易新闻 查看精彩图片
图6

这时候播放视频就能看到顶点往外不断飞出的效果了,然后我们需要如图6那样使用第二个设置位置,来实现每个顶点在生成后第N帧就向目标物体飞行的效果,具体的设计逻辑就是导入我们的目标物体,将它的位置信息,用“矢量运算”的相减来减去顶点的位置信息,这样就得到了顶点前进的方向,然后将其“规格化”为1,以免出现意外效果,再使用“缩放”来控制速度。

当然,我们还需要通过“选中项”来筛选哪些顶点进行这个操作,这就需要用“场景时间”减去我们一开始存储的生成时间属性,两者相减得到每个顶点已经生成了多少秒,将“大于”某个生成时间的顶点作为“选中项”,就能实现顶点朝发射体法向飞出一小段时间后就向目标物体冲刺的效果啦。

03

总结:两种方法都需要掌握

从生成效率来说,粒子系统无疑是更好的选择,但几何节点无需烘焙且随时可调整的优势也非常明显,更何况在下期我们还会介绍如何添加飞弹尾焰喷射和命中爆炸效果,这些都是粒子系统无法实现的。当然,我们并不提倡所有的动画系统都用几何节点来实现,毕竟它十分复杂,所以两种方法通通掌握,再根据具体项目条件择机使用才是更正确的思路。

微信订阅
打开网易新闻 查看精彩图片
微信订阅

邮发代号:77-19

单价:8元,年价:408元

编辑|张毅

审核|吴新

爆料联系:cpcfan1874(微信)

壹零社:用图文、视频记录科技互联网新鲜事、电商生活、云计算、ICT领域、消费电子,商业故事。《中国知网》每周全文收录;中国科技报刊100强;2021年微博百万粉丝俱乐部成员;2022年抖音优质科技内容创作者