粒子效果
大量粒子在原点附近一个区域内生成,粒子的运动呈现很大的随机性,随时间不同,其速度大小、方向、颜色等均在改变,总体的轨迹仿佛是海面上的浪花。
Niagara蓝图部分
这个Niagara System中引入了GPU粒子,意味着可以以较高的性能随意把玩千到十万级别的粒子了(中等配置电脑)。系统和发射器级别的脚本还是运行在GPU上的,而粒子级别的操作则都是由GPU完成的,所以如距离场、纹理采样等操作,都只能在粒子级别(Particle spawn,Particle update)的操作上才可以进行。
效果实现分析
将粒子切换到GPU粒子
新的粒子生成方式——Spawn Burst Instantaneous。相比较于普通的Spawn Rate来生成粒子,这个新的方式强调的是爆发性,即如果同样是生成10000个粒子,Spawn Rate是一个从1到10000的增长的过程,而Spawn Burst Instantaneous则是瞬间生成10000个粒子。从消耗上来看,两者近乎没有差别(Spawn Rate要稍微低一点点点点)。
和之前的以一个点为出生点不同,这里用一个球体范围作为了粒子出生区域
此外,令粒子的运动产生破浪的感觉主要是几个力模拟组件的功劳:Curl Noise Force噪声力,Drag阻力,Point Attraction Force点吸引力。Curl Noise Force增加了粒子运动的随机性,Drag给了一种粘稠的液体的感觉,而Point Attraction Force则是整体给一个范围衰减的引力(有点黑洞的感觉)。最后,所有的这些力经由Solve Forces and Velocity进行最终的解算。
颜色的变化也是利用曲线工具,将粒子生命周期作为横坐标
总结
单单这个例子可能还看不太出来GPU粒子的强大,其诱人的地方就是可以实时去以粒子模拟流体等需要大量粒子的效果,而往常这些往往是只能在DCC软件里离线渲染好使用。一些距离场,深度场也可以应用于GPU粒子之上。当然GPU粒子相比于CPU粒子在某些地方还有不足之处,例如去做碰撞时性能表现就远不如CPU粒子优秀(在本例中并没有体现),当然随着技术的不断跟进,相信会寻找到二者间最佳的平衡点的。