1、第第6章章 粒子系统粒子系统6.1 粒子系统概述粒子系统概述6.2 粒子系统的生成原理粒子系统的生成原理6.3 粒子系统程序设计实例粒子系统程序设计实例附录:附录:3ds max的的粒子系统粒子系统6.1 粒子系统概述粒子系统概述 粒子系统是最实用的过程动画技术粒子系统是最实用的过程动画技术之一。所谓过程动画是指物体的运动之一。所谓过程动画是指物体的运动或变形可由一个过程来描述。最简单或变形可由一个过程来描述。最简单的过程动画是用一个数学模型去控制的过程动画是用一个数学模型去控制物体的几何形状和运动,如旗帜、水物体的几何形状和运动,如旗帜、水波随风的运动。较复杂的过程动画则波随风的运动。较复杂
2、的过程动画则是包括物体的变形、弹性理论、动力是包括物体的变形、弹性理论、动力学、碰撞检测在内的物体的复杂运动。学、碰撞检测在内的物体的复杂运动。 粒子系统被认为是迄今为止模拟不规则粒子系统被认为是迄今为止模拟不规则模糊物体最为成功的一种图形生成算法。这模糊物体最为成功的一种图形生成算法。这一方面的先驱是一方面的先驱是W.T.Reeves,W.T.Reeves,他在他在19851985年发年发表的论文中成功地提出了一种模拟不规则自表的论文中成功地提出了一种模拟不规则自然景物生成和动画的系统,也就是所谓的粒然景物生成和动画的系统,也就是所谓的粒子系统。子系统。 文献:Approximate and
3、 probabilistic algorithms for shading and rendering structured Particle System. Computer graphics,1985 粒子系统的发展粒子系统的发展 为了实现对这类不规则物体的真实感显为了实现对这类不规则物体的真实感显示示, ,国内外学者一直在努力探索国内外学者一直在努力探索, ,先后提出先后提出了多种方法。例如,了多种方法。例如,L L系统、分形法构图系统、分形法构图等。各种方法相比而言等。各种方法相比而言, ,粒子系统产生的粒子系统产生的图像质量高图像质量高, ,运算代价不高运算代价不高, ,且适合于中低
4、且适合于中低档的硬件平台档的硬件平台, ,所以,已被大量运用在大所以,已被大量运用在大量量3D3D软件中(见软件中(见附录附录)。)。 粒子系统的发展粒子系统的发展 粒子系统在电影粒子系统在电影“星球大战星球大战”中的中的出色表现,使得人们对这一技术刮目出色表现,使得人们对这一技术刮目相看,目前,粒子系统巳被广泛应用相看,目前,粒子系统巳被广泛应用于各个领域。尤其在视频特技制作中,于各个领域。尤其在视频特技制作中,人们常希望产生用常规拍摄方式难以人们常希望产生用常规拍摄方式难以产生的自然特效和模拟群体行为。产生的自然特效和模拟群体行为。 粒子系统的应用粒子系统的应用 影视作品星球大战剪辑影视作
5、品星球大战剪辑水墨画仿真水墨画仿真粒子系统作品粒子星云 为了能更清晰的理解现有的各种粒为了能更清晰的理解现有的各种粒子系统,可以根据粒子间的作用关系将子系统,可以根据粒子间的作用关系将粒子系统分为三类:粒子系统分为三类: 粒子分类粒子分类 独立粒子系统独立粒子系统; ;固定联结的粒子系统固定联结的粒子系统; ; 动态联结的粒子系统动态联结的粒子系统. . 独立粒子系统独立粒子系统 独立粒子系统独立粒子系统, ,即粒子间是独立的即粒子间是独立的, ,无相互作用。独立系统用来模拟生成无相互作用。独立系统用来模拟生成例如火、烟、雾、水花等自然景物。例如火、烟、雾、水花等自然景物。作用在每个粒子上的作
6、用力都是独立作用在每个粒子上的作用力都是独立的。为了建立复杂的效果的。为了建立复杂的效果, ,必须使用大必须使用大量粒子量粒子, ,让它们受到重力让它们受到重力, ,风力风力, ,各种阻各种阻力的影响。根据所模拟景物的物理特力的影响。根据所模拟景物的物理特性来生成和删除粒子。这些系统主要性来生成和删除粒子。这些系统主要是产生动态特效,并不考虑景物的体是产生动态特效,并不考虑景物的体积和表面因素。积和表面因素。 固定联结的粒子系统固定联结的粒子系统 固定联结的粒子系统用于对物体物固定联结的粒子系统用于对物体物理变形特性的模拟。在这些系统中,为理变形特性的模拟。在这些系统中,为了建立物体的变形模型
7、了建立物体的变形模型, ,可以对物体进可以对物体进行体或面的离散化。将体或面视为粒子,行体或面的离散化。将体或面视为粒子,通过在通过在“粒子粒子” ” 间产生弹性,粘性作间产生弹性,粘性作用力用力, ,使离散化的表面和体发生变化使离散化的表面和体发生变化, ,在在宏观上产生物体的弯曲宏观上产生物体的弯曲, ,断裂断裂, ,延伸等物延伸等物理现象。理现象。动态联结的粒子系统动态联结的粒子系统 在动态联结的粒子系统中在动态联结的粒子系统中, ,粒子间的粒子间的作用随时都在变化作用随时都在变化, ,即粒子间的联系自动即粒子间的联系自动删除删除, ,随之动态创建。用动态联结代替固随之动态创建。用动态联
8、结代替固定联结也能模拟与之相似的物理特性。但定联结也能模拟与之相似的物理特性。但由于粒子联结的动态变化由于粒子联结的动态变化, ,也会使物体的也会使物体的几何和拓扑结构发生变化几何和拓扑结构发生变化, ,这非常适合于这非常适合于模拟流体运动。模拟流体运动。粒子系统实例烟粒子系统实例烟 粒子系统实例火球 粒子系统实例火球例:星球爆炸例:星球爆炸例:滴落的水珠例:滴落的水珠例:例:PF粒子实例:蒲公英粒子实例:蒲公英例:冰雪融化例:冰雪融化6.2 粒子系统的生成原理粒子系统的生成原理粒子系统是迄今为止被认为模拟不规则模粒子系统是迄今为止被认为模拟不规则模糊物体最为成功的一种图形生成算法。景物糊物体
9、最为成功的一种图形生成算法。景物被定义为成千上万个不规则的,随机分布的被定义为成千上万个不规则的,随机分布的粒子所组成,而每个粒子均有一定的生命周粒子所组成,而每个粒子均有一定的生命周期,它们不断改变形状,不断运动。因而,期,它们不断改变形状,不断运动。因而,我们关心的只是景物的总体形状和特征的动我们关心的只是景物的总体形状和特征的动态变化,而不是各个粒子本身。粒子系统的态变化,而不是各个粒子本身。粒子系统的这一特性,使得它充分体现了不规则模糊物这一特性,使得它充分体现了不规则模糊物体的动态性和随机性,很好地模拟了火,云,体的动态性和随机性,很好地模拟了火,云,水,森林和原野等自然景观。水,森
10、林和原野等自然景观。 6.2.1 粒子系统的核心思想粒子系统的核心思想粒子系统模型的基本思想是用大量的,具粒子系统模型的基本思想是用大量的,具有一定生命力的粒子图元来描述自然界不规有一定生命力的粒子图元来描述自然界不规则模糊物体则模糊物体, ,每个粒子在任意时刻都具有随机每个粒子在任意时刻都具有随机的形状的形状, ,大小大小, ,颜色颜色, ,透明度透明度, ,速度速度, ,加速度等属加速度等属性性, ,并随时间推移发生位置并随时间推移发生位置, ,形态的变化形态的变化, ,每个每个粒子的属性和动态性质均有预先定义的一组粒子的属性和动态性质均有预先定义的一组随机过程来说明。粒子在系统内部要经历
11、随机过程来说明。粒子在系统内部要经历“产生产生”,“活动活动”和和“死亡死亡”三个具有随三个具有随机性的阶段,在某一时刻所有存活粒子的集机性的阶段,在某一时刻所有存活粒子的集合就构成了粒子系统的模型。合就构成了粒子系统的模型。 6.2.1 粒子系统的核心思想粒子系统的核心思想 综上所述,粒子系统具有以下特性:综上所述,粒子系统具有以下特性:系统组成系统组成由大量的、具有一定生命力由大量的、具有一定生命力 的粒子图元所描述的自然界的粒子图元所描述的自然界 不规则模糊物体。不规则模糊物体。 动态性动态性每个粒子在任意时刻都具有随每个粒子在任意时刻都具有随 机的形状机的形状, ,大小大小, ,颜色颜
12、色, ,透明度透明度, , 速度速度, ,加速度等属性加速度等属性, ,并随时间并随时间 推移发生位置推移发生位置, ,形态的变化。形态的变化。 生命周期性生命周期性粒子在系统内部要经历粒子在系统内部要经历 “ “产生产生”,“活动活动”和和“死死亡亡” 三个三个具有随机性的阶段。具有随机性的阶段。随机性随机性每个粒子的属性和动态性质均每个粒子的属性和动态性质均 有预先定义的一组随机过程来有预先定义的一组随机过程来 说明。说明。6.2.1 粒子系统的核心思想粒子系统的核心思想6.2.2 6.2.2 粒子系统的生成步骤粒子系统的生成步骤(1)(1)根据产生效果的物理特性根据产生效果的物理特性,
13、,建立数学建立数学 模型模型, ,即构建粒子的运动方程;即构建粒子的运动方程;(2)(2)确定粒子的个体属性确定粒子的个体属性 ;(3)(3)产生粒子系统产生粒子系统 ;(4)(4)粒子活动粒子活动; ; (5)(5)粒子的死亡粒子的死亡; ;(6)(6)其它。其它。一般过程(1)(1)构建粒子的运动方程构建粒子的运动方程 总结并研究粒子可能的运动形式,总结并研究粒子可能的运动形式,研究其运动方程的求解方法研究其运动方程的求解方法, ,在不影响在不影响整体效果前提下尽量使算法简化整体效果前提下尽量使算法简化, ,计算计算量减少以满足实时性的要求。在整个量减少以满足实时性的要求。在整个数学模型构
14、建过程中数学模型构建过程中, ,为了使产生的图为了使产生的图象更具有真实感象更具有真实感, ,应该考虑加上风力,应该考虑加上风力,重力等因素。重力等因素。 (2)(2)确定粒子的个体属性确定粒子的个体属性为表达粒子系统的随机性,为表达粒子系统的随机性,ReevesReeves采用了采用了一些简化的随机过程来控制粒子在系统中的一些简化的随机过程来控制粒子在系统中的形状、特征及运动。对每一粒子参数均确定形状、特征及运动。对每一粒子参数均确定其变化范围,然后在该范围内随机地确定它其变化范围,然后在该范围内随机地确定它的值,而其变化范围则由给定的平均期望值的值,而其变化范围则由给定的平均期望值和最大方
15、差来确定,粒子系统中的任一需随和最大方差来确定,粒子系统中的任一需随机确定的参数均可由以下参数表达式求得:机确定的参数均可由以下参数表达式求得:ParameterParameterMeanParameterMeanParameterRand( )Rand( )VarPararmeterVarPararmeter 粒子的属性主要包括:粒子的属性主要包括: 初始位置、大小初始位置、大小 初始运动速度和方向初始运动速度和方向 初始颜色初始颜色 初始透明度初始透明度 初始形状初始形状 生命周期生命周期(2)(2)确定粒子的个体属性确定粒子的个体属性不同的特效对粒子的个体属性要求不同的特效对粒子的个体属
16、性要求的侧重点不同。例如在模拟星光灿烂的侧重点不同。例如在模拟星光灿烂的宇宙时,为了产生星光闪烁的效果,的宇宙时,为了产生星光闪烁的效果,就要考虑粒子的位置,大小,透明度就要考虑粒子的位置,大小,透明度属性和颜色属性,而对加速度,速度属性和颜色属性,而对加速度,速度不作为考察重点。不作为考察重点。 (2)(2)确定粒子的个体属性确定粒子的个体属性(3)(3)产生粒子系统产生粒子系统 粒子的产生由随机函数控制,每一帧图象粒子的产生由随机函数控制,每一帧图象产生的粒子数目直接影响着物体的密度,常产生的粒子数目直接影响着物体的密度,常使用以下方法定义:使用以下方法定义: 第第f fi i帧产生的粒子
17、属性直接定义为帧产生的粒子属性直接定义为NP(fNP(fi i) ) NP(fi)MP(fi) + RAND( ) * VP(fi) 其中其中,RAND(),RAND()是是-1,1 -1,1 上均匀分布的随机函数,上均匀分布的随机函数,MP(fMP(fi) )和和VP(fVP(fi) )是第是第f fi 帧新产生的粒子数目的平均值和方差。帧新产生的粒子数目的平均值和方差。 (3)(3)产生粒子系统产生粒子系统 上式中粒子数目的平均值和方差可定上式中粒子数目的平均值和方差可定义为常数或变量。如:义为常数或变量。如: MP(fMP(fi i)=MP(f)=MP(f0 0) +) +MPMP* *
18、(f(fi if f0 0) ) 对每一新产生粒子都必须赋以初始属对每一新产生粒子都必须赋以初始属性性, ,如初始位置如初始位置, ,方向方向, ,颜色颜色, ,生存期等。生存期等。 其他属性用下式计算:其他属性用下式计算: Property(fProperty(f0 0)=)=属性均值属性均值+RAND()+RAND()* *属性方差属性方差(3)(3)产生粒子系统产生粒子系统 粒子的这些属性值可作如下定义:粒子的这些属性值可作如下定义: 粒子的初始位置粒子的初始位置P(f0)由粒子的产生区由粒子的产生区域决定域决定, ,同时产生区域也可决定粒子的同时产生区域也可决定粒子的初始运动方向。对于
19、球形区域初始运动方向。对于球形区域, ,粒子从粒子从粒子系统原点沿球半径向外运动粒子系统原点沿球半径向外运动, ,对于对于圆形区域圆形区域, ,粒子以一定的喷射角粒子以一定的喷射角离开离开所在平面向外运动。所在平面向外运动。 (4)(4)粒子活动粒子活动 粒子产生后,就要根据所确定的运粒子产生后,就要根据所确定的运动模型进行运动。一帧接一帧,直至动模型进行运动。一帧接一帧,直至死亡。这种运动有自己的规律,也就死亡。这种运动有自己的规律,也就是说所有粒子的属性有共同的地方,是说所有粒子的属性有共同的地方,这是产生整个现象的基础,但每个粒这是产生整个现象的基础,但每个粒子又有自己的不同,这种不同就
20、要有子又有自己的不同,这种不同就要有随机函数来体现。随机函数来体现。 (4)(4)粒子活动粒子活动粒子运动轨迹为:粒子运动轨迹为:位置位置: P(fi) = P(fi-1) + V (f i-1) * (fif i-1)速度速度: V(fi) = MV+RAND( )*VV+A*(fi fi-1)颜色颜色: C(fi)=MC+RAND( ) *VC+C * (fi- fi-1)(4)(4)粒子活动粒子活动粒子运动轨迹为:粒子运动轨迹为:透明度透明度: T(fi)=MT+RAND( )*VT+T*(fifi-1)生存期生存期: L(fi ) = L(fi-1) L 式中式中fi为帧号为帧号( (
21、i= 0,1,2,3,n), i=0时为初始帧,时为初始帧,A,C,T,L分别为粒子的加速度分别为粒子的加速度, ,颜色变颜色变化率化率, ,透明度变化率透明度变化率, ,生命递减值均可定义为生命递减值均可定义为常数。常数。(5)(5)粒子的死亡粒子的死亡 粒子一产生就赋予了生存期粒子一产生就赋予了生存期L(fL(f0 0) ),用帧数来度量,随着粒子一帧一帧的用帧数来度量,随着粒子一帧一帧的运动而递减,即运动而递减,即: : L(fi i) = L(fi-1i-1 ) L 递减到递减到0 0时,粒子死亡。将其从系统时,粒子死亡。将其从系统中删除。中删除。 (5)(5)粒子的死亡粒子的死亡 还
22、可采用其他方法来衡量粒子的存还可采用其他方法来衡量粒子的存亡,如当粒子的颜色和透明度低于限亡,如当粒子的颜色和透明度低于限定值,或粒子的运动超出给定的距离,定值,或粒子的运动超出给定的距离,则可认为粒子死亡,将其从系统中删则可认为粒子死亡,将其从系统中删除。除。 粒子的产生,活动,死亡这三个阶粒子的产生,活动,死亡这三个阶段构成了一幅动态进化的画面。段构成了一幅动态进化的画面。(6)(6)其它因素其它因素(1 1)考虑到许多自然景物的形态变化,需)考虑到许多自然景物的形态变化,需要由多个粒子系统来描述要由多个粒子系统来描述, ,而每个粒子系而每个粒子系统又由大量粒子组成统又由大量粒子组成, ,
23、可以通过建立粒子可以通过建立粒子系统的层次结构来加强对这些复杂物体的系统的层次结构来加强对这些复杂物体的整体控制。层次结构的建立方法与传统的整体控制。层次结构的建立方法与传统的方法完全一样。算法在每一时刻首先确定方法完全一样。算法在每一时刻首先确定新生成的子粒子系统的数量新生成的子粒子系统的数量, ,父粒子系统父粒子系统的所有属性均可以传递给其子粒子系统。的所有属性均可以传递给其子粒子系统。例如例如, ,当父粒子系统运动时当父粒子系统运动时, ,其所有子粒子其所有子粒子系统将跟随一起运动。这非常适合与模拟系统将跟随一起运动。这非常适合与模拟飞机尾焰等效果。飞机尾焰等效果。(6)(6)其它因素其
24、它因素(2 2)为了使产生的特效更具有真实感,)为了使产生的特效更具有真实感,我们的粒子运动一般都建立在三维空间我们的粒子运动一般都建立在三维空间中。这就考虑使用何种三维加速引擎。中。这就考虑使用何种三维加速引擎。常用就是常用就是OpenGLOpenGL和和DirectorXDirectorX。另外还。另外还要考虑视点和粒子系统的位置关系,即要考虑视点和粒子系统的位置关系,即要使用要使用LODLOD(level of detaillevel of detail)技术解)技术解决远近不同的景象,既能缩短时间,又决远近不同的景象,既能缩短时间,又不降低对图象质量的要求。不降低对图象质量的要求。(6
25、)(6)其它因素其它因素(3)(3)产生的粒子系统图象与其他图象的融合。产生的粒子系统图象与其他图象的融合。在视频技术中,将不同的图象叠加在一块,在视频技术中,将不同的图象叠加在一块,从视觉上感觉不出他们来源于不同的画面。从视觉上感觉不出他们来源于不同的画面。由粒子系统产生的景物怎么和已有画面的由粒子系统产生的景物怎么和已有画面的融合,这虽是影视制作人员的任务,但我融合,这虽是影视制作人员的任务,但我们产生的粒子系统要具有这种特性,才能们产生的粒子系统要具有这种特性,才能够被使用。所以,在产生粒子系统图象时够被使用。所以,在产生粒子系统图象时候,一定要考虑图象的格式,一般讲应该候,一定要考虑图
26、象的格式,一般讲应该要考虑到图象的透明度。这与单个粒子的要考虑到图象的透明度。这与单个粒子的透明度是不同的。透明度是不同的。 例1.粒子火焰 程序运行后程序运行后, ,大量发大量发光的粒子在屏幕上运动光的粒子在屏幕上运动, ,每一个粒子都有一定的每一个粒子都有一定的生命周期生命周期, ,在这个周期在这个周期内以一定的角加速度运内以一定的角加速度运动动, ,同时同时, ,速度逐渐变慢。速度逐渐变慢。6.3 6.3 粒子系统程序设计实例粒子系统程序设计实例 程序的基本步骤程序的基本步骤:(1 1)定义一个粒子结构。)定义一个粒子结构。(2 2)粒子初始化。)粒子初始化。(3 3)计算出粒子的运动轨
27、迹。)计算出粒子的运动轨迹。(4 4)模糊效果生成。)模糊效果生成。 (1 1)定义一个粒子结构)定义一个粒子结构struct CParticle float m_x; /当前当前x坐标坐标 float m_y; /当前当前y坐标坐标 float m_Angle; /方向方向 float m_Speed; /速度速度 float m_AngleAdjustment; /角加速度角加速度 float m_Life; /生命值生命值 float m_Decay; /衰减速度衰减速度;(2 2)粒子的初始化)粒子的初始化 当一个粒子诞生时,我们需要当一个粒子诞生时,我们需要对它进行一些必要的初始化,
28、对对它进行一些必要的初始化,对于不同的效果,初始化的内容也于不同的效果,初始化的内容也是不一样的,下面是一种最简单是不一样的,下面是一种最简单的运动粒子的初始化:的运动粒子的初始化:(2 2)粒子的初始化)粒子的初始化最简单的运动粒子的初始化:最简单的运动粒子的初始化:void InitParticle(CParticle& particle, float x, float y) particle.m_x = x; particle.m_y = y; particle.m_Speed = 1 + (Rnd( ) * 3); particle.m_Angle = Rnd( )* 2*pi; pa
29、rticle.m_AngleAdjustment = -1/40.0f+Rnd( ) / 20; particle.m_Life = 1.0f; particle.m_Decay = 0.01f+Rnd( ) / 20;注释注释1 1:由由第二步可以看出,其中有许多参以看出,其中有许多参数带有一定的随机性,这样即可以保数带有一定的随机性,这样即可以保证每个粒子的坐标、速度或角加速度证每个粒子的坐标、速度或角加速度在一定范围内分布,也可以保证整体在一定范围内分布,也可以保证整体效果永远不会以相同的面貌出现。有效果永远不会以相同的面貌出现。有了这些初始数据,我们就可以计算出了这些初始数据,我们就可
30、以计算出粒子的运动轨迹。粒子的运动轨迹。 (3 3)计算粒子运动轨迹)计算粒子运动轨迹void MoveParticle(CParticle& particle) if (particle.m_Life = 0)return; particle.m_x += (float)cos(particle.m_Angle) * particle.m_Speed; particle.m_y += (float)sin(particle.m_Angle) * particle.m_Speed; particle.m_Angle += particle.m_AngleAdjustment; particle
31、.m_Life -= particle.m_Decay; 每一次调用每一次调用MoveParticle函数,即可函数,即可获得该粒子的新坐标,同时粒子的生命获得该粒子的新坐标,同时粒子的生命值降低。如果粒子生命值大于值降低。如果粒子生命值大于0,设置,设置粒子在新坐标象素的颜色为粒子在新坐标象素的颜色为255(调色(调色板最大值板最大值),),如果粒子生命值小于如果粒子生命值小于0,表,表明粒子已经死亡,不予显示,这样,就明粒子已经死亡,不予显示,这样,就能够模拟出大量粒子的运动轨迹了。能够模拟出大量粒子的运动轨迹了。注释注释2 2:(4 4)产生模糊效果模糊效果 为了显示出发光粒子拖着一条长
32、尾为了显示出发光粒子拖着一条长尾巴的效果,还需要对图象进行一些特巴的效果,还需要对图象进行一些特殊的处理才行。殊的处理才行。Blur算法即是完成这算法即是完成这个目的。个目的。Blur即即模糊的意思,最简单模糊的意思,最简单的的Blur算法是取该象素前后左右四个算法是取该象素前后左右四个象素的平均值。象素的平均值。(4 4)产生模糊效果模糊效果 Blur算法的代码如下:算法的代码如下: for (y=1; y height-1; y+) for (x=1; x width-1; x+) pixel(x,y) = ( (pixel(x,y-1) + pixel(x-1, y) +pixel(x+
33、1,y)+ pixel (x,y+1) ) 2;上面只是程序中的一些原理性的描述和未经优化上面只是程序中的一些原理性的描述和未经优化的代码,在具体编程中,还会有以下一些需要考虑的代码,在具体编程中,还会有以下一些需要考虑和注意的问题:和注意的问题:对粒子的初始状态和运动施以不同的规则对粒子的初始状态和运动施以不同的规则, ,可以构造可以构造出不同的粒子火焰效果出不同的粒子火焰效果, ,烟火即可用这种方法实现。烟火即可用这种方法实现。对于调色板的灵活运用可使程序更加富予色彩。如对于调色板的灵活运用可使程序更加富予色彩。如对调色板进行分段对调色板进行分段, ,可同时显示出不同颜色的粒子火可同时显示
34、出不同颜色的粒子火焰;对调色板进行循环焰;对调色板进行循环, ,显示出火焰整体色彩的变换。显示出火焰整体色彩的变换。Blur的算法有很多种,还可以实现的算法有很多种,还可以实现Blur的同时向某的同时向某个方向移动的效果,或是实现如火焰般的效果。个方向移动的效果,或是实现如火焰般的效果。注释注释3 3:例例2 2 粒子礼花粒子礼花 程序运行后,在不同帧产生下列效果程序运行后,在不同帧产生下列效果粒子属性结构粒子属性结构public: int m_flag; / 从低位开始,头2位表示阶段,第3位表示主(1)或从(0)粒子 int m_blinkNumber; / 闪烁计数器 double m_
35、radius; / 粒子大小半径 double m_x, m_y, m_z; / 粒子的位置坐标 double m_vx, m_vy, m_vz; / 粒子的运动速度 double m_life, m_lifeIncrement; / 粒子的生命值及其增长量 GLfloat m_red, m_green, m_blue; / 粒子的颜色值 CParticle* m_next, *m_previous; / 相邻的两个粒子主要函数主要函数void mb_addParticle(CParticle* p); / 在当前粒子后插入指定的粒子 void mb_removeParticle( ); /
36、从链表中去除位于当前粒子后的粒子void mb_draw( ); / 绘制单个粒子void mb_makeSelfLoop( ); / 形成单粒子的双向链表void mb_setBlinkRand( ); / 设置随机闪烁计数值void mb_setColor(GLfloat r, GLfloat g, GLfloat b); / 设颜色值void mb_setLife(double life, double increment); / 设置生命值void mb_setPosition(double x, double y, double z); /设位置坐标void mb_setVeloci
37、ty(double x, double y, double z); / 设置速度void mb_updatePosition( ); / 更新位置坐标礼花粒子系统中的粒子礼花粒子系统中的粒子单个的主粒子单个的主粒子第一阶段的第一阶段的主粒子死亡主粒子死亡所有粒所有粒子死亡子死亡创建第创建第三阶段三阶段的粒子的粒子创建第创建第二阶段二阶段的粒子的粒子第二阶第二阶段的粒段的粒子死亡子死亡不断创建尾粒子不断创建尾粒子尾粒子不断死亡尾粒子不断死亡不断创建尾粒子不断创建尾粒子粒子运动粒子运动粒子不断死亡粒子不断死亡 3ds max 3ds max拥有强大的粒子系统,拥有强大的粒子系统,功能众多,可以制作
38、出数不胜数的功能众多,可以制作出数不胜数的粒子特效,是特技制作必不可少的粒子特效,是特技制作必不可少的工具。另外,工具。另外,3ds max3ds max中的中的paticlepaticle FlowFlow也是一个非常强大的粒子系统,也是一个非常强大的粒子系统,它是一种事件驱动型的粒子系统。它是一种事件驱动型的粒子系统。附录附录 3ds max 3ds max 的粒子系统的粒子系统3ds max3ds max的的7 7类粒子系统类粒子系统喷射(Spray) 喷射粒子系统,可发射水滴、喷射粒子系统,可发射水滴、直线状和十字交叉型粒子常用于直线状和十字交叉型粒子常用于建立雨景、水流、喷泉和烟花爆
39、建立雨景、水流、喷泉和烟花爆竹等模型。竹等模型。雪花(Snow) 雪花粒子系统,可发射六角、雪花粒子系统,可发射六角、点状和十字交叉型粒子常用于建点状和十字交叉型粒子常用于建立飘雪、抛落的纸削和糖果等模立飘雪、抛落的纸削和糖果等模型。型。超级喷射(Super Spray) 超级喷射粒子系统,是超级喷射粒子系统,是SpraySpray的增的增强版。其特点是参数众多,功能强大,强版。其特点是参数众多,功能强大,控制复杂、效果多变。不仅可代替普控制复杂、效果多变。不仅可代替普通的粒子发射器,还可以发射其它替通的粒子发射器,还可以发射其它替代物体,通过参数控制可实现自旋、代物体,通过参数控制可实现自旋
40、、晃动等特殊效果。晃动等特殊效果。暴风雪(Blizzard) 暴风雪粒子系统,是暴风雪粒子系统,是SnowSnow的增的增强版。和强版。和Super SpraySuper Spray有许多共同有许多共同点。此外,还可通过参数设置表现点。此外,还可通过参数设置表现液体流动、满天雾气等特殊效果。液体流动、满天雾气等特殊效果。粒子阵列(Parray) 粒子阵列系统。它提供了两种不同粒子阵列系统。它提供了两种不同的影响功能:的影响功能: (1)(1)使用它来向外发射粒子。使用它来向外发射粒子。 (2)(2)模拟物体的爆炸效果。模拟物体的爆炸效果。 粒子云(PCloud) 粒子云系统将指定给发射器的物粒
41、子云系统将指定给发射器的物体按照参数的设置来以球形、柱形或体按照参数的设置来以球形、柱形或立方体范围作为发射的空间,完成复立方体范围作为发射的空间,完成复制和排列的操作。可用来制作成群的制和排列的操作。可用来制作成群的蚂蚁、鱼群等蚂蚁、鱼群等, ,也可用于制作水珠、也可用于制作水珠、雪。雪。应掌握要点:应掌握要点: 每种系统的粒子效果即整体造型。系统的粒子效果即整体造型。 系统的发射器。系统的发射器。 可发射的粒子类型。可发射的粒子类型。 主要参数。主要参数。标准粒子:标准粒子:8种不同形态的面片和几何体。变形球粒子:变形球粒子:粒子间可融合变形,常用来模拟 水和液体。对象碎片粒子:对象碎片粒
42、子:埸景中的几何体网格表面破裂 形成粒子碎片,常用来模拟爆 炸、融化和破裂。实体几何粒子:实体几何粒子:埸景中的任意几何体。3ds max3ds max的的4 4种粒子种粒子类型类型各种粒子系统比较 PF粒子( paticle Flow ) PF PF粒子是一种全新的功能强大的粒粒子是一种全新的功能强大的粒子系统。它采用了一种叫做事件驱动型子系统。它采用了一种叫做事件驱动型的工作模式,其一个粒子系统由多个事的工作模式,其一个粒子系统由多个事件组成,每个事件又是由多个定义了各件组成,每个事件又是由多个定义了各种属性的操作和检验统称为行为组种属性的操作和检验统称为行为组成,各组成部分之间可以相互连接、控成,各组成部分之间可以相互连接、控制,使制,使PFPF具有了超强的灵活性。具有了超强的灵活性。PF粒子( paticle Flow ) PFPF粒子粒子使用了独特的控制面板,使用了独特的控制面板,它的操作思路也和原有的粒子系统它的操作思路也和原有的粒子系统有所不同,有所不同, PFPF采用了现在很多软件流采用了现在很多软件流行的节点式操作方式,操作更为方便行的节点式操作方式,操作更为方便。PF粒子实例喷泉 返回返回PF粒子实例散落的小球 返回返回