效果:一个发射器用于发射粒子,使用cpu计算,粒子碰到物体反弹并改变颜色,一个发射粒子,使用GPU来计算模拟,摩擦力比较大。一个接收碰撞并产生粒子。
碰撞查询是通过cpu上的线追踪或gpu上的深度缓冲区/距离场检查来完成的,查询结果被保存,也可供后续模块使用,该示例显示了一个碰撞事件被发送到另一个发射器,该发射器会根据该事件生成粒子。
碰撞在CPU和GPU发射器上都有效,尽管有些选项不同。例如,只有GPU发射器可以对场景深度或全局距离场进行采样。
一般来说,与GPU碰撞相比,CPU碰撞开销大,应该谨慎使用。
步骤:
1、使用fountain模板创建niagara system,先创建一个发射粒子的发射器。
调整参数,把Emitter State 的Life Cycle Mode设为System
每秒产生粒子数量改成3.5.
修改存在时间、大小
调整锥化速度参数
调整球形出生位置半径
粒子更新阶段所受重力不变
添加collision模块
根据官方文档要求collision模块必须刚好放在解算器模块前面。在CPU发射器中使用时,该模块将发射光线来计算其与场景的碰撞。在GPU发射器中使用时,该模块将使用场景深度或全局距离场来查找碰撞表面。
删除Scale color 模块
添加Generate collision Event模块,调整参数:碰撞事件之间的延迟是0.05,而粒子速度门槛是100,如果小于100,则无法发送事件。
发现粒子更新出现错误提示,
查看提示:
根据提示勾选参数
发射器属性中勾选需要持久ID,错误提示消失。
添加color模块,颜色改为线性插值,插值的值来自于布尔值决定的自定义值。
布尔值由是否碰撞的值决定
拖入场景中,观察效果
2、复制发射器,修改collision参数,让碰撞后被附着在物体表面。
注意改为gpu计算模拟,勾选固定边界。
修改每秒发射粒子数量。
修改粒子大小为3
修改粒子发射方向,和锥形差不多
修改碰撞的反弹力及摩擦力!
出现错误,原因:碰撞可以选择使用“生成碰撞事件”模块生成事件。这些仅在CPU上受支持。
删除Generate Collision Event模块,修改color
完成效果如图:
3、继续复制一个发射器,
删掉 Sphere Location 模块,添加粒子大小缩放模块
粒子的缩放受到粒子剩余寿命的影响,用新表达式。
碰撞模块参数设置
添加事件处理器,并添加接收事件模块
完成!