网站大量收购独家精品文档,联系QQ:2885784924

粒子系统原理.docxVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
粒子系统原理

粒子系统原理粒子系统几乎是每个引擎中比不可少的部分,它主要用来解决由大量按一定规则运动(变化)的微小物质组成的大物质,在计算机上的生成与显示的问题。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等。如图8-1,8-2他们都是由粒子系统来完成的。图8-1 SimplePhysicsParticles1.0中的截图图8-2 由粒子系统完成的爆炸等效果通过上面的两幅图我们可以看出,其实粒子系统是一种特效发生器,它可以制造大量的小粒子来达到某种特殊的效果,比如烟雾、火焰或者爆炸。好的粒子效果甚至比渲染好的动画都出色,正因为如此,当前几乎所有的游戏中都使用了粒子系统。为了制造真实的粒子效果,粒子发生器必须在不影响帧率的情况下控制成千上万的粒子运动。简单的粒子系统只允许设置粒子的一些属性,比如生存时间、重力或者颜色;复杂的粒子系统允许为每个粒子的运动函数编写代码。一些粒子系统也包含了光线生成器来创建光线或者轨迹。粒子系统基本原理粒子系统是采用大量的、具有一定生命和属性的微小粒子图元作为基本元素来描述不规则的模糊物体。在粒子系统中,每一个粒子图元均具有:形状、大小、颜色、透明度、运动速度和运动方向、生命周期等属性。而一个粒子究竟有什么样的属性,主要取决于粒子系统用来模拟什么。粒子系统是动态变化的,粒子系统的所有属性都是时间t的函数,随着时间的推移,系统中不断有新粒子的加入,旧的粒子死亡,系统中“存活”的粒子其位置及生命值亦随时间变化而变化。随着虚拟世界时间的流逝,每个粒子都要在虚拟世界经历“产生”、“活动”和“消亡”三个阶段。一般而言,粒子系统的绘制基本可按照以下步骤进行。①产生新的粒子加入系统中;②赋予每个粒子一定的属性;③删除超过生命值上限的粒子;④根据粒子属性的动态变化对粒子进行移动和变换;⑤绘制并显示由有生命的粒子组成的图形。其中第③、④、⑤步循环形成了物体的动态变化过程。粒子系统的组成通过前面的学习,我们知道了粒子系统中每一颗粒子他都具有自己的各种属性,因此这每一颗粒子就是一个粒子对象,所以我们的例子系统首先需要一个代表粒子的类Particle。由于我们每一种特效都需要很多粒子来实现,这些粒子的运动方式以及发射的频率都是我们能够控制的,所以我们还需要一个用于控制粒子特效的类ParticleSystem。综上所诉,粒子系统将由粒子(Particle)和发射器(ParticleSystem)组成。粒子(Particle)这里我们的粒子类Particle主要就用于表示粒子特效中的每一颗粒子,他将包括每一颗粒子的各种属性,如代码清单8-1是我们用于表示粒子对象的类Particle的实现。代码清单8-1:Particleview plaincopy to clipboardprint?//粒子类??public?class?Particle?{ ??????//位置??????YFSPoint?pos?=?YFSPoint.makeZero(); ??????//开始位置??????YFSPoint?startPos?=?YFSPoint.makeZero(); ??????//颜色??????YFSColor4F?color?=?new?YFSColor4F(); ??????//辅助颜色变化??????YFSColor4F?deltaColor?=?new?YFSColor4F(); ??????//尺寸和辅助尺寸变化??????float?size; ??????float?deltaSize; ??????//自转速度,辅助自转速度??????float?rotation; ??????float?deltaRotation; ??????//生命周期??????float?timeToLive; ??????//方向??????YFSPoint?direction?=?YFSPoint.makeZero(); ??????//径向加速度,逃离发射原点的速度??????float?radialAccel; ??????//切线加速度,围绕发射原点旋转速度??????float?tangentialAccel; ??????//弧度... ??????float?radian; ??????float?radianPerSecond; ??????//半径... ??????float?radius; ??????float?deltaRadius; ??}??//粒子类 public class Particle { //位置 YFSPoint pos = YFSPoint.makeZero(); //开始位置 YFSPoint startPos = YFSPo

文档评论(0)

taotao0c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档