OpenGL烟花粒子系统指导文档.doc
《OpenGL烟花粒子系统指导文档.doc》由会员分享,可在线阅读,更多相关《OpenGL烟花粒子系统指导文档.doc(46页珍藏版)》请在三一办公上搜索。
1、中原工学院软件学院三级实践课题设计任务书姓 名专业: 班级:题 目OpenGL烟花粒子系统设计任务OpenGL是一个功能强大的开放图形库,用户可以很方便地开发所需要的多种特殊视觉的图形,粒子系统将景物定义为由大量随机分布的粒子集合,通过简单图元表示景物的整体形态和特征以及动态变化,充分体现了不规则模糊物体的动态和随机性。烟花粒子系统详细论述了烟花粒子系统的物理模型、基本概念模型以及系统的实现;时间进度第1周(13-02-2513-03-01):查找资料,理清主要脉络。第2周(13-03-413-03-08):对粒子系统进一步完善。第3周(13-03-1113-03-15 n):总结粒子系统、完
2、成报告。原 主始 要资 参料 考与 文 献01C+程序设计(第2版) 谭浩强M:清华大学出版社.2011.802 Windows程序设计教程M:人民邮电出版社.2012.103opengl 蓝宝书 美Richard S. Wright,Jr.Nicholas Haemel Graham SellersBenjamin Lipchak 人民邮电出版社04nehe opengl教程指导教师签字: 年 月 日OpenGL烟花粒子系统摘 要近十几年来,随着影视动画、虚拟现实、数字娱乐和计算机游戏等领域的不断发展壮大,计算机动画技术在这些产业的推动下也有着巨大进步,而且随着时代的发展,这一技术将会越来越
3、多的走进人们生活的各个方面。近几年来对流体如云、雾、烟、火、雨、水、礼花等进行模拟,已经成为计算机图形学领域的研究热点。而基于物理的自然景物模拟是人们研究的热点方向,它通过探索真实世界中自然现象的物理本质,利用计算机为物体建立精确的运动模型,从而更加逼真的表现物体的形象和运动。粒子系统将景物定义为由大量随机分布的粒子集合,通过简单图元表示景物的整体形态和特征以及动态变化,充分体现了不规则模糊物体的动态和随机性,被认为是迄今为止模拟不规则模糊物体最为成功的一种图形生成算法,能很好地模拟烟、火焰、雪花、雾、烟花等自然景观。通过分析烟花在空气中爆炸的物理现象,设计了几种烟花粒子模型,其特点是结合了纹
4、理映射技术。烟花粒子系统,详细论述了烟花粒子系统的物理模型、基本概念模型以及系统的实现; 关键词: 粒子系统1; 映射纹理2;opengl;目 录摘 要1第1章 概述11.1编程语言11.2背景31.3问题描述4第2章 功能需求和分析52.1 OpenGL功能分析52.2烟花粒子设计62.3烟花粒子操作6第3章 功能实现83.1 框架界面与加载音乐83.1.1框架界面83.1.2加载音乐103.2 粒子的属性113.2.1绘制粒子113.2.2 链表构建123.3 烟花粒子的更新、爆炸效果143.3.1粒子更新143.3.2爆炸效果17第4章 结束语31参考文献32第1章 概述烟花粒子系统是一
5、种基于MFC对话框下的操作,主要是运用了OpenGL库函数。OpenGL是一个功能强大的开放图元库,用户可以很方便地开发所需要地有多种特殊视觉(如光照,纹理,透明,阴影)的三维图形,烟花粒子系统就是在该库函数下的产物,要想运行烟花粒子系统必须在VC6.0环境下安装OpenGL压缩包以及fmod压缩包。它主要通过运用粒子纹理映射,使烟花产生不同的爆炸效果,给看者一种视觉的享受,在该系统中还添加了爆炸的音乐,使烟花更加像真实存在的。为了方便用户操作,我们还设计了是否全屏显示的提示,便于用户自己选择怎样显示。1.1编程语言CMF实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎。VC+
6、是Windows下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。MFC作为与VC+血肉相连的部分,是一种大家都承认的软件编制的通用规范; MFC是Win API与C+的结合。API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能
7、工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现,这其实也是一种必要。MFC是微软对API函数的专用C+封装,这种结合一方面让用户使用微软的专业C+ SDK来进行Windows下应用程序的开发变得容易。还有MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制,而是一些在Windows中实现内部处理的类,学习中最应花费时间的是消息和设备环境,对C+和MFC。MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要
8、就是要学MFC,大约有100多个类,但常用的也就二三十个。还可以在MFC的基础上对其他一些类库进行运用,其中就包括OpenGL库的运用。OpenGL 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。 OpenGL是个与硬件无关的软件接口,可以在不同的平台如W
9、indows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS/3DSMAX等3D图形设计软件制作的DXF和3DS模型文件转换成OpenGL的顶点数组。在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工
10、具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C+紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能:1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。
11、2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、缩放、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投 影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。4.光照和材质设置:OpenGL光有自发光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝
12、分量的反射率相乘后形成的颜色。5:纹理映射(Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、抗锯齿(反走样)(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur
13、)等特殊效果。从而实现了消隐算法。OpenGL设备运用,目前瑞芯微2918芯片和英伟达芯片Tegra2 就是采用OpenGL 2.0技术进行图形处理,而基于瑞芯微2918芯片方案代表是台电T760和微蜂X7平板电脑所采用到。1.2背景在社会日益发展的今天,越来越多的高楼平地而起,给人们活动的空间越来越少,虽然也有很多公园应运而生,只是公园是供人们欣赏的,只能在它们那散散步。每到节假日,尤其是春节前后,到处都是热闹的气氛,这个时候是燃放烟花的好季节,在密质的楼房间,为了保证安全,是不允许燃放烟花的,在公园中也是不允许燃放的。没有了噼噼啪啪的鞭炮声,也没有五彩绚烂的烟花,这就使得原本该热闹的日子,
14、也给人一种乏味感。为了使人们在节日里既保证绝对的安全,又有热闹的气氛,基于OpenGL的烟花粒子系统就应运而生。无论什么时候我们总面临着来自各方面的压力,而不能正确减压会给生活造成无法想象的烦恼,这就需要我们学会用各种方式去给自己减压、去放松。OpenGL烟花粒子系统使人们在家也可以看到五彩绚烂的烟花,也可以感受到节日的气氛,烟花粒子系统不仅可以在节假日时带给人们气氛的享受,也能在平时任何时间里,给人们视觉的享受,缓解日益增加的压力。在当今这个一切都发展的如此迅速的社会,电子通讯无处不见,各种各样的手机层出不穷,互联网更是风靡全球,从事软件行业的人指数函数增加,他们所开发的各种安卓。电脑软件更
15、是琳琅满目,尤其是基于MFC的游戏,多的是数不胜数。想起以前想要看烟花,就必须要等到过春节前后,还得必须等到特定的时间才能看到美丽的烟花,这无疑对喜爱烟花的孩子是一种心理上的折磨,即使看到了烟花,它也是很短暂,就像昙花美丽只是瞬间,不能反复的出现。为了能使烟花绚烂的色彩和缤纷的姿态留下来,我们在选择课题时就选择了基于OpenGL的烟花粒子系统,这个系统方便了人们、尤其是喜爱烟花的孩子们可以随时都看到绚烂多姿的美景。我们也可以在做的过程中学到更多的东西,对我们之前学的巩固一番。1.3问题描述刚开始的时候老师让选课题,可是我们自己都不知道该选什么的来做,别人组都有了任务,我们看了能选报的课题就觉得
16、OpenGL烟花粒子系统挺有意思的,于是就报了这个课题,我们现在已经有了方向,就是不知道该怎么做,本来以为是MFC那种类型的基于对话框的,没想到在我们查看了资料和在百度上搜索之后发现OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C+紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;我们所做的烟花粒子系统运用了纹理映射、粒子系统,在系统中又导入了fmod库,使得烟花在爆炸时不仅有绚烂的色彩,还有爆破的声音,使得烟花粒子系统给人的感觉更加真实。虽然这个系统做的还不是
17、那么的完美,但是我们却学到了可多书本以外的东西,我们也很知足了。第2章 功能需求和分析通过背景的了解和问题描述,我们知道了烟花粒子系统是通过纹理映射来实现烟花的爆炸,在爆炸过程中,我们还添加了七种烟花的爆炸效果,使得烟花更加的逼真好看。就烟花爆炸时的形状我们又载入了四种不同形状的位图,使得烟花爆炸时,姿态更完美绚丽。在烟花爆炸显示的时候,我们也做了一个小小的提示,用户可以根据自己的喜好选择所要播放烟花屏幕的形态,是全屏还是小屏。基于以上思路我们就一步步完成了烟花粒子系统。2.1 OpenGL功能分析在以上讨论之后,我们对OpenGL烟花例子系统的具体功能有了一些认识。OpenGL 是一个功能强
18、大的开放图元库,用户可以很方便地开发所需要地有多种特殊视觉(如光照,纹理,透明,阴影)的三维图形,与软件平台无关的三维图形软件包,可以运行多种窗口系统之上。OpenGL的组成OpenGL库:l 包括115个基本函数l 函数以gl开头l 例:glColor3f(), glTranslate3f(). 完成图元的定义、几何变换、投影等功能在VC6.0上配置OpenGL:1.几个.dll文件 放入 C:WINDOWSsystem322.把GL文件夹 放入 X:Program FilesMicrosoft Visual StudioVC98Include3.几个 .lib 文件 放入 X:Progra
19、m FilesMicrosoft Visual StudioVC98Lib4.ProjectSettings LINK标签在Object/Library Modules选项 (在kernel.32前)增加 OpenGL32.lib GLu32.lib GLaux.lib Glut32.lib 然后单击”OK”按钮5.在程序前,需添加头文件: #include 在VC6.0平台编写OpenGL程序:本课题是基于GLUT来编写OpenGL程序利用如下步骤新建一个程序:点击菜单“ File” “New” Projects Win32 Console Application empty project
20、 在Project | Add to Project | New ,然后选择“C+ Source File”在出现的页面中编写编辑代码 OpenGL包含图元生成、投影、光照、光栅化等图形显示功能所需的过程。就该系统做出如下的分析。框架界面:因为人们的喜好不同,为了满足不同人的喜好,烟花粒子系统在显示于主界面时,是否全屏显示因人而异,我们就对显示界面做了一个是否是全屏的提示,以方便用户的选择。 图2.1 提示界面具体如图2.1所示:加载音乐:加载音乐是为了使烟花爆炸时的效果更形象,通过所加的音乐让人们看了后有种身临其境的感觉。加载音乐的方法就是在粒子系统中载入fmod声音库函数,通过函数Crea
21、teSound()、BindSound()、InitSound()来实现音乐的播放。2.2烟花粒子设计在粒子设计方面,每个粒子的生命是整个系统的关键,为了保证烟花爆炸会一直发生,就必须对粒子的设计做详细的描述。尽管我们知道一个完美的粒子设计对一个烟花系统的成功有多大的意义,但是以现在我们的水平来看,想要做到美观、流畅是很不容易的,因为我们现在学的知识、水平有限,像纹理映射啊、监粒子系统啊什么的我们根本就一无所知,也不知道那是什么东西,不知道什么条件下才去用什么样的东西,但是我们并没有因此放弃,我们相互鼓励,不到最后一刻决不放弃。有了这样的干劲,我们开始去网上、图书馆查资料,尽我们所知道的各种途
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 烟花 粒子 系统 指导 文档
链接地址:https://www.31ppt.com/p-2391363.html