基于粒子系统建模原理
2016-10-11赵柏宇全吉成王平
赵柏宇 全吉成 王平
【摘 要】介绍了粒子系统特点,建模原理,基本模型和对于物理方法的优越性。并阐述了粒子系统中粒子的一些属性,并给出了粒子产生的流程图
【关键词】粒子;粒子系统;建模;流程图
如今,计算机图形学技术发展迅速,自然场景景物的模拟渐渐的成为人们关注的交点,利用物理模型进行模拟可以达到较好的绘制效果,但是会消耗大量的时间。相反的粒子系统的提出很好的解决了耗时的问题,但是对于复杂的场景运用粒子系统模拟会丢失一些细节,使模拟效果不够真实,因此本章先对粒子系统和物理模型分别进行介绍,再将粒子系统与物理方法相结合建立模型。
1 粒子系统建模原理
1.1 粒子系统理论概述
为了解决由大量小颗粒组成的自然场景在电脑屏幕显示的模拟[1]与显示的问题,在1983年Reeves[2]提出粒子系统这一重要理论,该理论有效的利用简单的算法来实现具有不规则形状且变化复杂的自然场景[3],例如大规模爆炸、烟雾[4-5]、火焰、雨雪及云的模拟都可以利用粒子系统来模拟完成。
粒子系统具有很大的随机性,是由大量的粒子元素构成的,这恰好满足了自然场景随机运动以及扩散的条件,随着时间的推移,粒子数目不断增多,从自然场景的局部构建到整体构建,形成了完整的建模过程。
1.2 粒子系统的特点和缺点
与传统的物理方法建模相比,粒子系统有着自身独特的优势:
(1)选择灵活性:粒子系统是通过大量的粒子或几何图元组合在一起形成大规模的自然场景,对于场景的不同,粒子数量和粒子基本图元的选择都具有很大的灵活性,我们可以使用点作为基本图元,也可以使用多变性作为基本图元,这样就可以不必按照传统图形学的严格用多边形的方法来描述。当然,我们可以选择用10000粒子模拟战场中的大规模爆炸,也可以用3000粒子模拟蜡烛的火焰,粒子数目的多少取决与场景的大小,这些灵活的处理会在算法上得到简化,提高实时性。
(2)动态灵活性:与传统的建模方法不同,粒子系统的建模是一个动态的过程,摒弃了原有的静态系统。粒子系统可以模拟物体的动态特征,粒子都是随着时间的推移而发生变化,位移的变化,速度的变化,颜色的变化以及形状的变化等等,粒子属性的不断变化使得整体系统形态发生变化。
(3)随机灵活性:粒子系统的运行符合随机过程,粒子的各种属性值是在一定范围内通过随机过程随机产生的数值,并且随着时间的推移各种属性都在进行随机的变化,通过调整参数可以改变视觉效果。
尽管粒子系统在模拟不规则物体方面有着很大的优越性,但是还是有一定不足之处:
(1)粒子系统中粒子的数量直接影响渲染的实时性,一些大规模的场景需要大量的粒子绘制,这样整个系统的开销十分庞大,降低了实时性。因此,在模拟大规模场景的物体时需要把握粒子的数量,使得真实性和实时性达到平衡,这也需要大量的实验来验证完成。
(2)粒子系统的模拟主要针对的是不规则的物体,相比模拟规则形状的物体,粒子系统方法就不一定能达到最好的效果,相反可能会丢失一些细节。因此在模拟不规则物体的时候,细节的变化的模拟将是一大挑战。
2 粒子系统的基本模型
粒子系统是由大量称为粒子的简单体素组成的,这些粒子都有属于自己的一组属性,位置、速度、颜色、大小、生命周期等。每一个粒子都要经历完整的生命周期:产生,运动和死亡。粒子通常在指定的区域又随机过程产生[6],并不断更新属性,最后死亡。由于粒子的不断运动,使得模拟的场景具有一定的动态性,因此用粒子系统模拟战场烟雾,爆炸以及火焰会有独特的效果。
通常粒子系统模拟自然场景时的基本步骤如下:
(1)产生粒子并初始化属性。根据所要绘制的场景选择产生粒子的位置,数量并对这些粒子进行初始化属性赋值,最后将粒子加入粒子系统中。
(2)粒子属性的更新。根据模拟物体的运动规律及时更新粒子的运动位置、速度、生命周期等属性。
(3)将“死亡”粒子从系统中删除。随着粒子属性的不断更新,一些粒子已经达到了自己的生命周期,或者颜色与背景重合,为了提高整个系统的性能,需要将“死亡”粒子从系统中除去。
(4)绘制图像。对于系统中尚存在的那些粒子,选择一定的绘制算法将其绘制成图像并通过屏幕显示出来。
粒子系统产生的流程图模型如图1所示:
图1所示的是粒子生成的流程,但是在粒子系统中,不同粒子属性的更新方式不尽相同,一般粒子都会具有以下几种属性:
1.粒子所在位置:Position
2.粒子的速度:Velocity
3.粒子的大小:Size
4.粒子的透明度:Alpha
5.粒子的颜色:Color
6.粒子的生命周期:Lifetime
为了方便管理每个粒子,我们在编写程序中可以将粒子归为一个类ParticleGroup。相应的伪代码如下所示:
Class ParticleGroup
{
int ParticleCount;//粒子数量
Init();//初始化粒子属性
Update();//粒子属性更新
Void delete(int i);//删除死亡粒子
Bool Add();//增加新的粒子
Render();//渲染粒子系统
Shutdown()//关闭粒子系统
}
在粒子系统的基本模型中可以分为三个部分:层次结构部分,粒子绘制部分,粒子系统控制机制。在本节中提到的4个步骤中,步骤(1)(2)(3)共同组成了粒子系统的控制机制,而步骤
(4)是粒子绘制部分。在实际的模拟场景中,根据不同的模拟场景的特点来确定以上基本步骤。
3 结束语
粒子系统可以在各种各样的环境下对不规则的自然场景进行建模,粒子的随机性可以模拟动态的场景,并且可以达到较好的效果,通过粒子属性的不断更新来完成粒子的运动状态,最后将死亡的粒子从系统中删除,运用粒子系统建模将是近年来学者们研究的重点方向。
【参考文献】
[1]庞新,王相海.基于0penGL的礼花粒子系统模拟研究[J].计算机科学,2008,35(5):216-219.
[2]Reeves W T .Particle System-a Technique for Modeling a Class of Fuzzy Object [J].ACM Computer Graphics (SIGGRAPH83)(S0730-0301),1983,17(30):359-376.
[3]徐阳东.基于粒子系统不规则景物建模研究[D].济南:山东师范大学,2009.
[4]张海山,吴家铸.基于粒子系统的火箭发射烟雾特效实现[J].微计算机信息(管控一体化卷,2008,24(12-3):248-249.
[5]赵春霞,张艳,战守义.基于粒子系统方法的三维火焰模拟[J].计算机工程与应用,2004,40(28):73-75.
[6]汪继文,张妍妍,陆和军一种基于改进的粒子系统的烟花模拟[J].电脑知识与技术,2009(12):9805-9807.
[责任编辑:王伟平]