第15讲粒子系统讲解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第15讲 粒子系统 1、定义 粒子系统到底是什么?所谓的粒子系统,就是将人们看到的物体运动和自然现象,用一系列运动的粒子来描述,再将这些粒子运动的轨迹映射到显示屏上,在显示屏上看到的就是物体运动和自然现象的模拟效果了。 利用粒子系统,可以在屏幕中表现诸多的特殊效果,如:焰火、火苗、落叶、雪花飞舞等。不怕做不到,就怕想不到。只要你的想象力足够丰富,你可以创造出意想不到的奇迹来。 粒子系统的基本思想是:采用许多形状简单的微小粒子作为基本元素,用它们来表示不规则模糊物体。这些粒子都有各自的生命周期,在系统中都要经历“产生”、“运动和生长”及“消亡”三个阶段。粒子系统是一个有“生命”的系统,因此不象传统方法那样只能生成瞬时静态的景物画面,而是可以产生一系列运动进化的画面,这使得模拟动态的自然景物成为可能。 利用粒子系统生成画面的基本步骤是: 1、粒子源产生新的粒子(初始化粒子); 2、赋予每一新粒子一定的属性(更新粒子),并将粒子的生命周期递减一个时间步; 3、删去那些已经超过生存期的粒子(删除后可以根据具体需要重新初始化或做其他处理); 4、根据粒子的动态属性对粒子进行移动和变换; 5、显示由有生命的粒子组成的图像。 粒子系统采用随机过程来控制粒子的产生数量,确定新产生粒子的一些初始随机属性,如初始运动方向、初始大小、初始颜色、初始透明度、初始形状以及生存期等,并在粒子的运动和生长过程中随机地改变这些属性。粒子系统的随机性使模拟不规则模糊物体变得十分简便。 粒子系统应用的关键在于如何描述粒子的运动轨迹,也就是构造粒子的运动函数。函数选择的恰当与否,决定效果的逼真程度。其次,坐标系的选定(即视角)也有一定的关系,视角不同,看到的效果自然不一样了。 2、粒子系统生命周期 每颗粒子的生命周期或工作处理流程如图: 3、粒子系统数据结构 /** 粒子结构*/ struct Particle { D3DXVECTOR3 position; /** 粒子的位置*/ D3DXVECTOR3 velocity; /** 粒子的速度*/ D3DXVECTOR3 acceleration; /** 粒子的加速度*/ float lifetime; /** 粒子生命值*/ float dec; /** 粒子消失的速度*/ float size; /** 粒子尺寸*/ D3DCOLOR/*D3DCOLORVALUE */ color; /** 粒子的颜色*/ }; 4、粒子系统类 (1)Particle.h文件 #pragma once #include d3d9.h #include d3dx9.h /** 粒子结构*/ struct Particle { D3DXVECTOR3 position; /** 粒子的位置*/ D3DXVECTOR3 velocity; /** 粒子的速度*/ D3DXVECTOR3 acceleration; /** 粒子的加速度*/ float lifetime; /** 粒子生命值*/ float dec; /** 粒子消失的速度*/ float size; /** 粒子尺寸*/ D3DCOLOR/*D3DCOLORVALUE */ color; /** 粒子的颜色*/ }; class CParticle { public: CParticle(); /** 构造函数*/ virtual ~CParticle(); /** 析构函数*/ /** 粒子的初始化*/ virtual bool Init(int _num); /** 粒子的渲染*/ virtual void Render() = 0; /** 粒子的更新*/ virtual void Update() = 0; protected: int m_iNum; /** 粒子总数目*/ Particle* m_pList; /** 粒子指针*/ }; (1)Particle.cpp文件 #include Particle.h /** 构造函数*/ CParticle::CParticle() { m_

文档评论(0)

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

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

1亿VIP精品文档

相关文档