粒子系统

维基百科,自由的百科全书

粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的游戏图形。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。

用于渲染火的粒子系统
用来渲染星系的粒子系统
abstract 粒子尾迹

典型实现[编辑]

通常粒子系统在三维空间中的位置与运动是由发射器控制的。发射器主要由一组粒子行为参数以及在三维空间中的位置所表示。粒子行为参数可以包括粒子生成速度(即单位时间粒子生成的数目)、粒子初始速度向量(例如什么时候向什么方向运动)、粒子寿命(经过多长时间粒子湮灭)、粒子颜色、在粒子生命周期中的变化以及其它参数等等。使用大概值而不是绝对值的模糊参数占据全部或者绝大部分是很正常的,一些参数定义了中心值以及允许的变化。

典型的粒子系统更新循环可以划分为两个不同的阶段:参数更新/模拟阶段以及渲染阶段。每个循环执行每一帧动画。

模拟阶段[编辑]

模拟阶段,根据生成速度以及更新间隔计算新粒子的数目,每个粒子根据发射器的位置及给定的生成区域在特定的三维空间位置生成,并且根据发射器的参数初始化每个粒子的速度、颜色、生命周期等等参数。然后检查每个粒子是否已经超出了生命周期,一旦超出就将这些粒子剔出模拟过程,否则就根据物理模拟更改粒子的位置与特性,这些物理模拟可能象将速度加到当前位置或者调整速度抵消摩擦这样简单,也可能象将外力考虑进取计算正确的物理抛射轨迹那样复杂。另外,经常需要检查与特殊三维物体的碰撞以使粒子从障碍物弹回。由于粒子之间的碰撞计算量很大并且对于大多数模拟来说没有必要,所以很少使用粒子之间的碰撞。

每个粒子系统都有用于其中每个粒子的特定规则,通常这些规则涉及到粒子生命周期的插值过程。例如,许多系统在粒子生命周期中对粒子的阿尔法值即透明性进行插值直到粒子湮灭。

渲染阶段[编辑]

在更新完成之后,通常每个例子用经过纹理映射四边形sprite进行渲染,也就是说四边形总是面向观察者。但是,这个过程不是必须的,在一些低分辨率或者处理能力有限的场合粒子可能仅仅渲染成一个像素,在离线渲染中甚至渲染成一个元球,从粒子元球计算出的等值面可以得到相当好的液体表面。另外,也可以用三维网格渲染粒子。

对艺术家友好的粒子系统工具[编辑]

在许多三维建模及渲染包内部就可以创建、修改粒子系统,如 3D Studio MaxMaya 以及 Blender 等。这些编辑程序使艺术家能够立即看到他们设定的特性或者规则下粒子系统的表现,另外还有一些插件能够提供增强的粒子系统效果,例如 AfterBurn 以及用于流体的 RealFlow。而2D的粒子特效軟體中particleIllusion最為出色,因為他的渲染比一般的3D軟體快較為平面化。Combustion 这样的多用途软件或者只能用于粒子系统的 Particle Studio 等都可以用来生成电影或者视频中的粒子系统。

外部链接[编辑]