改进粒子系统-状态相关粒子系统
碰撞
CPU
只能实现简单的即时碰撞,如球、平面。
GPU
还可以处理与高度图、即时生成的depthmap间的复杂碰撞。
1,与平面碰撞:
2,与球体碰撞:
3,与高度图碰撞:
点(面)发射器向下发射的粒子与右下角显示的高度图进行碰撞
4,与复杂模型碰撞:
(未完成)
力场
CPU
简单的力场。复杂力场参数太多,不好用公式来表示。
GPU
复杂力场。可以使用力场图,流场图而不是公式来模拟各种效果。
1, 点力场:
2, 线力场:
3, 按流场图运动:
TODO
1, 与即时生成depthmap的碰撞还没有调试正确
2, 根据碰撞信息动态更改粒子纹理(如雨点打到玻璃上溅起水花)
3, 寻找生成流场图的软件或算法
4, 支持为粒子属性设置关键帧,实现更灵活多变的效果
参考资料
[Latta04] Luta Latta, "Massively Parallel Particle Systems on the GPU Latta," <<ShaderX3>> 2004, 翻译
[McAllister06] McAllister, David K., Particle System API Version 2.0, http://www.cs.unc.edu/~davemc/Particle/