粒子系统原理word版Word文件下载.docx

上传人:b****1 文档编号:15214623 上传时间:2022-10-28 格式:DOCX 页数:33 大小:73.07KB
下载 相关 举报
粒子系统原理word版Word文件下载.docx_第1页
第1页 / 共33页
粒子系统原理word版Word文件下载.docx_第2页
第2页 / 共33页
粒子系统原理word版Word文件下载.docx_第3页
第3页 / 共33页
粒子系统原理word版Word文件下载.docx_第4页
第4页 / 共33页
粒子系统原理word版Word文件下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

粒子系统原理word版Word文件下载.docx

《粒子系统原理word版Word文件下载.docx》由会员分享,可在线阅读,更多相关《粒子系统原理word版Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。

粒子系统原理word版Word文件下载.docx

化的,粒子系统的所有属性都是时间t的函数,随着时间的推移,系统中不断有新粒子的加入,旧的粒子死亡,系统中“存活”的粒子其位置及生命值亦随时间变化而变化。

随着虚拟世界时间的流逝,每个粒子都要在虚拟世界经历“产生”、“活动”和“消亡”三个阶段。

一般而言,粒子系统的绘制基本可按照以下步骤进行。

①产生新的粒子加入系统中;

②赋予每个粒子一定的属性;

③删除超过生命值上限的粒子;

④根据粒子属性的动态变化对粒子进行移动和变换;

⑤绘制并显示由有生命的粒子组成的图形。

其中第③、④、⑤步循环形成了物体的动态变化过程。

粒子系统的组成

通过前面的学习,我们知道了粒子系统中每一颗粒子他都具有自己的各种属性,因此这每一颗粒子就是一个粒子对象,所以我们的例子系统首先需要一个代表粒子的类Particle。

由于我们每一种特效都需要很多粒子来实现,这些粒子的运动方式以及发射的频率都是我们能够控制的,所以我们还需要一个用于控制粒子特效的类ParticleSystem。

综上所诉,粒子系统将由粒子(Particle)和发射器(ParticleSystem)组成。

粒子(Particle)

这里我们的粒子类Particle主要就用于表示粒子特效中的每一颗粒子,他将包括每一颗粒子的各种属性,如代码清单8-1是我们用于表示粒子对象的类Particle的实现。

代码清单8-1:

Particle

viewplaincopytoclipboardprint?

1.//粒子类 

 

2.public 

class 

Particle 

3. 

//位置 

4. 

YFSPoint 

pos 

YFSPoint.makeZero();

 

5. 

//开始位置 

6. 

startPos 

7. 

//颜色 

8. 

YFSColor4F 

color 

new 

YFSColor4F();

9. 

//辅助颜色变化 

10. 

deltaColor 

11. 

//尺寸和辅助尺寸变化 

12. 

float 

size;

13. 

deltaSize;

14. 

//自转速度,辅助自转速度 

15. 

rotation;

16. 

deltaRotation;

17. 

//生命周期 

18. 

timeToLive;

19. 

//方向 

20. 

direction 

21. 

//径向加速度,逃离发射原点的速度 

22. 

radialAccel;

23. 

//切线加速度,围绕发射原点旋转速度 

24. 

tangentialAccel;

25. 

//弧度... 

26. 

radian;

27. 

radianPerSecond;

28. 

//半径... 

29. 

radius;

30. 

deltaRadius;

31.} 

//粒子类publicclassParticle{//位置YFSPointpos=YFSPoint.makeZero();

//开始位置YFSPointstartPos=YFSPoint.makeZero();

//颜色YFSColor4Fcolor=newYFSColor4F();

//辅助颜色变化YFSColor4FdeltaColor=newYFSColor4F();

//尺寸和辅助尺寸变化floatsize;

floatdeltaSize;

//自转速度,辅助自转速度floatrotation;

floatdeltaRotation;

//生命周期floattimeToLive;

//方向YFSPointdirection=YFSPoint.makeZero();

//径向加速度,逃离发射原点的速度floatradialAccel;

//切线加速度,围绕发射原点旋转速度floattangentialAccel;

//弧度...floatradian;

floatradianPerSecond;

//半径...floatradius;

floatdeltaRadius;

}

从代码清单8-1我们可以看出,这些成员变量实际上都是每一颗粒子所共同拥有的一些通用的属性,其中我们给每一个变量都加入了注解,这里所要说明的就是,粒子特效都是需要运动的,所以大多数数据需要一个初始值,然后还需要指定一个该值的变化范围,比如上面的radius表示粒子的半径,而deltaRadius则表示该半径可以在一个什么样的范围之内变化。

timeToLive则表示该粒子的生命周期,即粒子从激活之后到消亡这段时间,因为我们的每颗粒子都会消亡,这里我们说一下,通常一个粒子消亡之后,我们不会去释放他,而是将其标记为为激活状态,用来作为下一个将要产生的例子(去修改其属性值即可),这样就避免了重复的分配内存空间。

当然如果你确实需要释放也是可以的。

发射器(ParticleSystem)

上面我们介绍了单独的一刻粒子对象,这里我们来分析一下如何实现一个发射器,来控制每一颗粒子的发射情况,在分析这个发射器之前,我们首先看一下粒子系统一般包括哪几种?

粒子系统一般可以按照其特性分为两类:

∙ 

模拟重力效果

∙以半径来进行扩散

重力效果相信不用过多的介绍了,就是通过程序来模拟物理重力效果,那么另外一种是以一个中心点,来根据所设定的半径进行扩散的粒子,因此我们首先将这两种不同的粒子通过一个enum分区开来,起定义如代码清单8-2所示。

代码清单8-2:

Mode

1.//粒子系统模式 

static 

enum 

Mode 

GRAVITY,//模拟重力 

RADIUS;

//以半径来扩散 

5.} 

//粒子系统模式publicstaticenumMode{GRAVITY,//模拟重力RADIUS;

//以半径来扩散}

稍后我们会在程序中实现这样两种粒子效果,现在大家可以思考一个问题,在我们的粒子系统中,这些微粒他们应该如何运动呢?

实际上运动就是改变这些微粒的坐标位置,那么我们可以按照坐标的位置来将粒子系统分为两种,他们分别是:

自由运动,成组运动。

每一颗粒子他可以按照自己的属性来自由的运动,当然在某些特殊需求时,我们可以将粒子分成很多组,然后对这每一组的所有粒子采用一种运动方式,那么就是我们所说的成组运动的方式,我们同样也先通过一个enum将其分别定义出来,如代码清单8-3所示。

代码青岛那8-3:

PositionType

1.//位置类型 

PositionType 

FREE,//自由 

GROUPED;

//组 

//位置类型publicstaticenumPositionType{FREE,//自由GROUPED;

//组}

其中FREE代表自由运动,GROUPED代表成组的运动。

好的,我们已经对粒子系统,也就是发射器进行了分类,下面我们来分析如何实现这个发射器呢?

这里我们将以一个通用的发射器来作为基类进行实现,具体的特殊的特效,我们可以继承自该发射器来完善,首先看一下我们这个发射器他需要包括哪些属性呢?

如代码清单8-4所示。

代码清单8-4:

ParticleSystem成员

1.//粒子系统基类 

ParticleSystem 

extends 

Node 

implements 

Node.IBlendableTextureOwner 

public 

final 

int 

PARTICLE_DURATION_INFINITY 

-1;

PARTICLE_START_SIZE_EQUAL_TO_END_SIZE 

PARTICLE_START_RADIUS_EQUAL_TO_END_RADIUS 

//是否要更新 

private 

boolean 

mUpdating;

//是否激活 

mActive;

//运行时间 

protected 

mDuration;

//流失的时间 

mElapsed;

//所有粒子重心,(变化范围) 

mCenterOfGravity;

mCenterOfGravityVar;

//角度,(变化范围) 

mAngle;

mAngleVar;

//开始结束尺寸,(变化范围) 

mStartSize;

mStartSiz

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1