欢迎来到天天文库
浏览记录
ID:30896776
大小:347.92 KB
页数:14页
时间:2019-01-04
《第15讲粒子系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第15讲粒了系统1、定义粒子系统到底是什么?所谓的粒子系统,就是将人们看到的物体运动和自然现象,用一系列运动的粒了來描述,再将这些粒了运动的轨迹映射到显示屏上,在显示屏上看到的就是物体运动和自然现象的模拟效果了。利用粒子系统,可以在屏幕屮表现诸多的特殊效果,女口:焰火、火苗、落叶、雪花飞舞等。不怕做不到,就怕想不到。只要你的想象力足够丰富,你可以创造出意想不到的奇迹来。粒了系统的基本思想是:采用许多形状简单的微小粒了作为基本元素,用它们來表示不规则模糊物体。这些粒子都冇各自的生命周期,在系统中都要经历“产牛”、“运动和牛长”及“消亡”三个阶段。粒
2、子系统是一个有“生命”的系统,因此不彖传统方法那样只能牛成瞬时静态的景物画面,而是可以产生一系列运动进化的油i而,这使得模拟动态的自然景物成为可能。利用粒了系统生成画面的基木步骤是:1>粒子源产生新的粒子(初始化粒子);2、赋予每一新粒子一定的属性(更新粒子),并将粒子的生命周期递减一个时间步;3、删去那些己经超过生存期的粒子(删除后可以根据具体需耍重新初始化或做其他处理);4、根据粒子的动态属性对粒子进行移动和变换;5、显示由有生命的粒子组成的图像。粒子系统采用随机过程来控制粒子的产生数量,确定新产生粒子的一些初始随机屈性,如初始运动方向、初始
3、大小、初始颜色、初始透明度、初始形状以及生存期等,并在粒了的运动和生长过程中随机地改变这些屈性。粒了系统的随机性使模拟不规则模糊物体变得十分简便。粒子系统应用的关键在于如何描述粒子的运动轨迹,也就是构造粒子的运动函数。函数选择的恰当与否,决定效果的逼真程度。其次,坐标系的选定(即视角)也有一定的关系,视角不同,看到的效果自然不一样了。2、粒子系统生命周期每颗粒了的生命周期或工作处理流程如图:3、粒子系统数据结构/**粒子结构*/structParticleD3DXVECTOR3D3DXVECTOR3D3DXVECTOR3position;velo
4、city;acceleration;/**<粒子的位置*//**v粒子的速度*//**<粒了的加速度*/floatlifetime;floatdec;floatsize;/**<粒子牛命值*//**<粒子消失的速度*//**<粒了尺寸*/D3DCOLOR/*D3DCOLORVALUE*/color;/**<粒子的颜色*/4、粒子系统类(1)Particle.h文件#pragmaonce#includc#include/**粒子结构*/structParticleD3DXVECTOR3position;/**<粒子
5、的位置可D3DXVECTOR3velocity;/**<粒了的速度*/D3DXVECTOR3acceleration;/**<粒子的加速度*/floatlifetime;/**<粒子生命值*/floatdec;/**<粒了消失的速度*/floatsize;/**<粒了尺寸*/D3DCOLOR/*D3DCOLORVALUE勺color;/**<粒子的颜色*/};classCParticle{public:CParticleO;/**<构造函数*/virtual-CParticle();/**v析构两数*//**粒子的初始化*/virtualbool
6、Init(int_num);/**粒子的渲染*/virtualvoidRender()=0;/**粒子的更新*/virtualvoidUpdate()=0;protected:intm_iNum;/**<粒子总数目*/Particle*m_pList;/**<粒子指针*/};(1)Particle.cpp文件#include"Particle.h"/**构造函数*/CParticle::CParticle(){m_iNum=();m_pList=NULL;}/**析构函数*/CParticle::~CParticle(){if(m_pList!=
7、NULL){delete[Jm_pList;m_pList=NULL;/**粒子的初始化*/boolCParticlc::Init(int_num)m」Num=_num;m_pList=newParticle[mJNumJ;if(m_pList==NULL)returnfalse;returntrue;/**粒子的沆染*/voidCParticlc::Rcndcr(){}/**粒子的更新*/voidCParticle::Update()5、粒子系统实例—雨的模拟(1)Rain,h文件#pragmaonce#include"particle.h1'
8、#includevd3d9.h>#includestructParticleVertex{D3DVECTORpos;f
此文档下载收益归作者所有