【课程设计】基于opengl的粒子系统——模拟火焰

【课程设计】基于opengl的粒子系统——模拟火焰

ID:16322212

大小:1.61 MB

页数:26页

时间:2018-08-09

【课程设计】基于opengl的粒子系统——模拟火焰_第1页
【课程设计】基于opengl的粒子系统——模拟火焰_第2页
【课程设计】基于opengl的粒子系统——模拟火焰_第3页
【课程设计】基于opengl的粒子系统——模拟火焰_第4页
【课程设计】基于opengl的粒子系统——模拟火焰_第5页
资源描述:

《【课程设计】基于opengl的粒子系统——模拟火焰》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、课程设计报告题目基于openGL的粒子系统——模拟火焰系(部)专业班级学生姓名学号起止时间:指导教师(签字)系主任(签字)提交时间:一、设计任务及要求:设计任务:要求:此次课程设计的课题为通过编程,实现火焰的绘制。实现交互控制火焰颜色、火焰燃烧方向、贴图形状,通过实验得到火焰贴图大小与火焰效果的关系,并给出代码和结果截图。指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩计算机图形学课程设计报告1.课程设计目的本学期系统学习了《计算机图形学》这门专业课,在学期期末按课程要求进行实验。粒子

2、系统由Reeves于1983年首次提出,此后越来越受到重视,它的主要优点是可以利用非常简单的体素来构造复杂的物体,为自然现象(如火焰、雨、雪、树林等)的造型提供了强有力的技术手段。该课程设计以培养我们算法设计与实现的能力为目标,通过实践,使我们了解、掌握计算机图形学的基本知识和关键技术、了解和熟悉计算机图形学的方法、工具和环境,同时培养我们的思维能力和团队合作能力。2.课程设计描述及要求粒子系统的基本思想是用许多形状简单且赋予生命的微小粒子作为基本元素来表示基本物体,侧重于物体的总体形态和特征的动态变化

3、。把物体定义为许多不规则、随机分布的粒子,且每个粒子均有一定的生命周期。随着时间的推移,旧的粒子不断消失(死亡),新的粒子不断加入(生长)。粒子的这种出生、成长、衰老、死亡的过程,能够较好的反应模糊物体的动态特征。一个粒子系统是不断进化的,在生命周期的每一刻,都要完成以下四步:初始化粒子更新粒子删除死粒子绘制粒子第一步产生5000个新粒子,他们的每个粒子都有生命周期为2;第二步根据情况更新,递减一个随机的时间步;第三步检查粒子的生命期,若为零,则将粒子从系统中删除;第四步显示粒子系统中的粒子。要求:此次

4、课程设计的课题为通过编程,实现火焰的绘制。实现交互控制火焰颜色、火焰燃烧方向、贴图形状,通过实验得到火焰贴图大小与火焰效果的关系,并给出代码和结果截图。3.系统开发环境开发工具:VC6.0操作系统:MicrosoftWindows74、粒子系统(火焰)的算法原理4.1定义粒子的属性宏定义粒子的最大数目5000,并定义结构体来设置粒子属性,代码如下:#defineMAX_PARTICLES5000//粒子数的数目typedefstruct//创建结构体{boolactive;//floatlife;//粒

5、子生命周期floatfade;//消失的速度floatr;floatg;floatb;floatx;//坐标floaty;//坐标floatz;//坐标floatxi;floatyi;floatzi;floatxg;//X轴加速度floatyg;//Y轴加速度floatzg;//Z轴加速度}particles;particlesparticle[MAX_PARTICLES];//创建粒子数组4.2初始化粒子利用循环变量loop,loop小于等于最大粒子数目时,则初始化每一个粒子,代码如下:for(loo

6、p=0;loop

7、article[loop].b=colors[loop*(4/MAX_PARTICLES)][2];particle[loop].xg=0.0f;particle[loop].yg=0.3f;particle[loop].zg=0.0f;}4.3粒子消失的过程(1)定义消失变量,使粒子的生命期递减一个随机的生命步,代码如下:particle[loop].fade=float(rand()%100)/1500.0f+0.002f;(2)粒子的颜色透明度随着生命期的减少而降低,最终消失,代码如下:glCol

8、or4f(particle[loop].r,particle[loop].g,particle[loop].b,particle[loop].life);4.4绘制及更新粒子(1)设置粒子的运动状态,代码如下:particle[loop].x+=particle[loop].xi/(slowdown*1050);//X的坐标随X轴速度变化particle[loop].y+=particle[loop].yi/(slowdown*1050);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。