粒子效果
可以看到有三种粒子:绿色粒子,蓝色粒子和橘黄色粒子,这三种粒子都会与场景中的球体和地板发生碰撞。另外橘黄色小粒子是绿色粒子发生撞击后从绿色粒子上迸发出来的。
Niagara蓝图部分
该例子使用了两种粒子——CPU粒子和GPU粒子,并分别以各自的技术实现碰撞。差别主要还是体现在性能和表现上面。CPU还是基于射线的方法,GPU的话可以采用深度缓冲或者是距离场的做法。
效果实现分析
CPU粒子碰撞:
在Particle Update里添加Collision,其内可以编辑碰撞的各种属性(包括是否启用碰撞,碰撞半径,弹性,摩擦力等等)。
另外注意到在这个发射器上面,还有两个比较有意思的功能:颜色可以将是否碰撞作为变量来进行动态的改变;以及生成碰撞事件,让我们去看一下,接收事件的发射器。
这正是从绿色粒子上撞击生成的橘黄色小粒子。也有可以继承碰撞速度的选项。
GPU粒子的碰撞界面有一点点的不同,不过大体上可调整的模块还是有一致的地方。
总结
其实碰撞的难点在于GPU粒子碰撞的实现,即深度缓冲实现碰撞和距离场实现碰撞。不过虚幻将这两者都封装成了完备的功能来直接使用,免掉了很大一部分工作。以后有实际应用的机会的话,还是希望能够对这两者进行更加深入的分析。