计算机动画粒子优秀论文实例.docx

上传人:b****3 文档编号:4620408 上传时间:2023-05-07 格式:DOCX 页数:27 大小:320.41KB
下载 相关 举报
计算机动画粒子优秀论文实例.docx_第1页
第1页 / 共27页
计算机动画粒子优秀论文实例.docx_第2页
第2页 / 共27页
计算机动画粒子优秀论文实例.docx_第3页
第3页 / 共27页
计算机动画粒子优秀论文实例.docx_第4页
第4页 / 共27页
计算机动画粒子优秀论文实例.docx_第5页
第5页 / 共27页
计算机动画粒子优秀论文实例.docx_第6页
第6页 / 共27页
计算机动画粒子优秀论文实例.docx_第7页
第7页 / 共27页
计算机动画粒子优秀论文实例.docx_第8页
第8页 / 共27页
计算机动画粒子优秀论文实例.docx_第9页
第9页 / 共27页
计算机动画粒子优秀论文实例.docx_第10页
第10页 / 共27页
计算机动画粒子优秀论文实例.docx_第11页
第11页 / 共27页
计算机动画粒子优秀论文实例.docx_第12页
第12页 / 共27页
计算机动画粒子优秀论文实例.docx_第13页
第13页 / 共27页
计算机动画粒子优秀论文实例.docx_第14页
第14页 / 共27页
计算机动画粒子优秀论文实例.docx_第15页
第15页 / 共27页
计算机动画粒子优秀论文实例.docx_第16页
第16页 / 共27页
计算机动画粒子优秀论文实例.docx_第17页
第17页 / 共27页
计算机动画粒子优秀论文实例.docx_第18页
第18页 / 共27页
计算机动画粒子优秀论文实例.docx_第19页
第19页 / 共27页
计算机动画粒子优秀论文实例.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机动画粒子优秀论文实例.docx

《计算机动画粒子优秀论文实例.docx》由会员分享,可在线阅读,更多相关《计算机动画粒子优秀论文实例.docx(27页珍藏版)》请在冰点文库上搜索。

计算机动画粒子优秀论文实例.docx

计算机动画粒子优秀论文实例

目录

引言……………………………………………………………………

(1)

第1章开发工具简介………………………………………………

(2)

1.1VC++简介………………………………………………………

(2)

1.2MFC简介………………………………………………………

(2)

1.3OpenGL简介……………………………………………………(3)

第2章粒子系统………………………………………………………(3)

2.1粒子系统理论的组成……………………………………………(3)

2.2粒子系统的定义…………………………………………………(4)

2.3粒子系统的物理模型……………………………………………(4)

2.4粒子系统的基本原理……………………………………………(5)

2.5粒子系统的基本模型……………………………………………(5)

2.6粒子系统的结构…………………………………………………(6)

2.7生成粒子系统的基本步骤………………………………………(6)

2.8粒子系统的设计要求……………………………………………(6)

第3章烟花粒子系统…………………………………………………(7)

3.1烟花粒子系统的物理模型分析…………………………………(7)

3.2烟花粒子系统的基本模型………………………………………(7)

3.3烟花粒子系统的实现……………………………………………(9)

3.3.1烟花粒子的数据结构…………………………………………(9)

3.3.2系统的类层次关系……………………………………………(9)

3.3.3系统的功能模块……………………………………………(10)

3.3.4系统的生成步骤……………………………………………(10)

第4章总结…………………………………………………………(17)

致谢……………………………………………………………………(17)

参考文献………………………………………………………………(17)

附录……………………………………………………………………(19)

基于的VC+OpenGL的烟花粒子系统设计

学生:

胡长俊

指导老师:

尹星云王宜结

淮南师范学院信息技术系

摘要:

自1983年Reeves提出粒子系统方法以来,已有许多利用粒子系统来模拟自然现象的研究工作。

粒子系统充分体现了不规则模糊物体的动态性和随机性,能很好地模拟三维复杂的自然景观。

粒子系统方法被认为是迄今为止模拟不规则模糊物体最为成功的一种图形生成算法。

烟花粒子系统采用粒子系统与纹理映射相结合的方法,同时使用BillBoarding技术,从而逼真地模拟出烟花燃放时的动态效果,并具有一定的实时性。

Abstract:

SinceReevesbroughtupParticleSystemMethodin1983,mostpeoplehavedrawnonittostudyandimitatevariousphemomena.ParticleSystemembodysirregularandmistyobjectscharacteristicsofdynamicandrandomnicely,soitcanimitatesophisticated3Dlandscapeverywell.Sofar,ParticleSystemmethodhasbeenrecognizedakindoftheverysuccesfulcomputergraphics’scalculatingsketches,whichcanimitateirregularandmistyobjects.FireworkParticleSystemadoptsParticleSystemcombinatingwithTextureMappingandusesBillBoardingtechniquesothatitcanimitatefirework’sdynamiceffectlifelikelywhenitwasletoff.Atthesametime,FireworkParticleSystemcanechotimelyonsomedegree.

关键词:

粒子系统;烟花;纹理映射;VC;OpenGL

Keywords:

particlesystem;firework;texturemapping;vc;opengl

引言

随着计算机图形学的发展和计算机性能的不断提高,使得计算机图形学在虚拟现实、视景仿真等方面的发展日新月异。

计算机视景仿真是当前的热门研究课题之一,尤其是对一些离散的或者动态的自然景观和人文景观例如烟、雾、喷泉和烟花等等的模拟,更具有挑战性。

由于这些物体的逻辑结构很难表达,而且还会动态地变化,因而很难用几个图元来表示它们。

自1983年Reeves提出粒子系统(ParticleSystem)方法以来,已有许多利用粒子系统来模拟自然现象的研究工作。

粒子系统采用了一套完全不同于以往造型、绘制系统的方法来构造和绘制景物。

它将景物定义为由大量随机分布的粒子集合组成,通过大量的简单图元来表示景物的整体形态和特征以及动态变化。

粒子系统充分体现了不规则模糊物体的动态和随机性,能很好地模拟烟、火焰、雪花、雾、烟花等三维复杂的自然景观。

因而粒子系统方法被认为是迄今为止模拟不规则模糊物体最为成功的一种图形生成算法。

粒子系统发展到现在,已经成为三维引擎中不可或缺的部分,其在大型工作站上的应用日趋成熟。

在真实火焰方面,国内外已有一系列的研究成果。

詹云开及张芹等给出了焰火模型,但涉及烟花模型的研究很少。

由于烟花燃放时的形状复杂多样,要在一种模型中完全包含烟花的各种形式是非常困难的。

因此本文只对比较典型的烟花形状的动态模拟进行研究,通过分析烟花产品在空气中爆炸的物理现象,设计几种烟花粒子模型,同时结合纹理映射的知识,对烟花动态模型进行模拟,并在微机上实现。

本文共有四章。

第一章简单介绍开发工具;第二章详细论述粒子系统包括它的理论组成、定义、物理模型、基本原理、概念模型、基本结构、生成步骤以及设计要求;第三章在基于第二章的基础上详细论述了烟花粒子系统包括它的物理模型分析、基本概念模型以及整个系统的实现;第四章进行总结,分析了系统的优缺点。

第1章开发工具简介

1.1VisualC++(简称VC++)简介

VisualC++是Microsoft公司的重要产品之一——DeveloperStudio工具集的重要组成部分。

它用来在Windows(包括Windows95、Windows98、WindowsNT、Windows2000等)环境下开发应用程序,是一种功能强大的、行之有效的可视化编程工具。

它具有易用、通用和开发效率高的特点。

VisualC++以可视化技术为基础,以C++语言为蓝本,以众多的集成工具为骨架,在计算机领域的诸多方面都发挥着重要的作用。

VisualC++提供了简洁实用的开发环境,集成的工具集能够让用户高效率地开发应用程序,适合于一般的应用程序开发。

VisualC++提供了MFC(MicrosoftFoundationClasses)类库,一般性工作可以全部交给VC++来完成,用户只要在其基础上做出自己想要实现的功能即可。

与TurboC等工具相比,VC++完成目标(尤其对于图形界面的程序)所花费的时间要少得多。

1.2MFC(MicrosoftFoundationClasses,微软基本类库)简介

MFC是一个建立在WindowsAPI之上的C++类库,也是一个ApplicationFramework。

它的意图是使Windows程序设计过程更有效率,更符合面向对象的精神。

它是微软公司对庞大的标准Win32API函数的封装,提供了图形环境下应用程序的框架及创建应用程序的组件,通过VC++的Wizard功能简化了Windows应用程序的编写工作。

MFC库提供了大量的基类供程序员根据不同的应用环境进行扩充,允许在编程过程中自定义和扩展应用程序中的类即MFC采用分层设计让用户能够根据需要轻松扩展框架,从框架的类中派生自己的自定义类,这样无需从头实现自己的Windows对象,而是依赖MFC的代码库,增加自己需要的功能。

MFC具有良好的移植性,可移植于众多的平台,很好地保持了程序的兼容性。

然而MFC并没有封装进Win32API的全部特性,所以有时不得不调用一些Win32API函数来实现一些特定功能。

MFC支持三种不同的应用程序,分别是:

①单文档界面(SDI);②多文档界面(MDI);③基于对话框的应用程序;本系统——烟花粒子系统就是一个单文档应用程序。

1.3OpenGL简介

OpenGL是SGI公司开发的一套高性能的计算机图形处理系统,是图形硬件的软件接口。

它是目前用于开发可移植,可交互的2D和3D图形应用程序的首选环境,并且它已经成为高性能图形和交互式视景处理的工业标准。

OpenGL所具有的功能基本上涵盖了计算机图形学所要包括的各个方面的内容。

它不仅可以处理单幅的离散图形,而且在三维动态仿真领域,由于其对环境及实体渲染的高度逼真的视觉效果,也显示出了强大的生命力。

OpenGL具有高度的开放性、可移植性、网络透明性等特点。

任何一个OpenGL应用程序无须考虑其运行环境所在的平台与操作系统,在任何一种遵循OpenGL标准的环境下都会产生相同的可视化效果。

OpenGL是一种API(ApplicationProgrammingInterface,应用程序编程接口)。

它集成了所有曲面造型、图形变换、光照、材质、纹理、像素操作、融合、反走样、雾化等等复杂的计算机图形学算法。

它可适用于游戏开发、科学计算可视化(运动仿真、有限元分析、医学成像、气候模型模拟等)、虚拟现实技术、影视广告、CAI等领域。

第2章粒子系统

2.1粒子系统理论的组成

1物质的粒子组成假设。

粒子系统中,把运动的模糊物体看作由有限的具有确定属性的流动粒子所组成的集合,这些粒子以连续或离散的方式充满它所处的空间,并处于不断的运动状态,粒子在空间和时间上具有一定的分布。

2粒子独立关系假设。

包含两层含义,一是粒子之间不存在相交关系,并且粒子是不可穿透的;二是粒子系统中各粒子不与场景中任何其它物体相交。

3粒子的属性假设。

系统中的每个粒子并不是抽象的,它们都具有一系列的属性,如质量属性、存在属性、存在的空间位置属性、外观属性(如颜色、亮度、形状、尺寸等)、运动属性(如速度、加速度等)、生存属性(生命期),其中颜色、亮度等属性随着时间不断地发生变化。

4粒子的生命机制。

粒子系统中的每一粒子都具有一定的生命周期,在一定的时间周期内,粒子经历新生、活动和消亡三个基本生命历程。

5粒子的运动机制。

粒子在存活期间始终是按一定的方式运动的,如加速运动、减速运动等。

6粒子的绘制算法。

2.2粒子系统的定义

根据粒子系统理论,可以得出粒子系统模型的形式描述如下:

定义1(粒子,Particle)定义为实数域上的一个n维向量,表示为

其中,

…,

…,

是粒子的n个属性。

通常包括:

粒子的空间位置、运动速度及加速度、大小、颜色、亮度、形状、生存期以及剩余生存期等。

单个粒子是组成粒子系统的基本元素。

定义2(粒子映射)单个粒子到正整数集的映射,其中每一个粒子具有一个索引,表示为

到的

映射。

表示索引为i的粒子的性质和状态。

定义3(粒子系统)为粒子映射集的有限集合,表示为:

S表示粒子系统在时刻

…,

的状态集合,

是初始时刻粒子系统的状态。

2.3粒子系统的物理模型

在粒子系统的设计中,几乎都离不开物理模型的运用。

常用的物理模型主要有两类:

一是基于假想的物理模型,主要是为了方便的模拟实际单体的形态及运动而假想物体的组成、构造以及动力学方程来进行建模。

常见的主要是喷泉、雾、火焰、雪花等粒子系统。

二是基于物体实际的组成、构造以及运动规律而进行建模。

如波浪、枝条的摆动、人及动物的运动等都是用了该类模型。

对于一些简单物体,可对整体列出动力学方程,然后按帧改变位置、状态,获得模拟动画的效果。

对于复杂的物体常将其分成若干部分,针对每一部分列出动力学方程,每帧对每个部分分别计算后,再绘制一般过程。

2.4粒子系统的基本原理

粒子系统方法的基本思想是将大量的,具有一定生命和属性的微小粒子图元(如像素点、圆形、三角形、矩形等简单形状)作为基本元素聚集起来,从而构成一个封闭的系统——粒子系统来描述一个不规则的模糊物体。

在粒子系统中,每一个粒子图元均具有:

形状、大小、颜色、亮度、运动速度和运动方向、生命周期等属性,所有这些属性都是时间t的函数。

粒子所具有的属性主要取决于具体的应用。

粒子系统并不是一个简单的静态系统,随着虚拟世界时间的流逝,系统中已有的粒子不仅不断改变形状,不断运动,而且不断有新的粒子加入,并有旧的粒子消亡。

为模拟产生和消亡过程,每个粒子被赋予一定的生命周期,每个粒子都要在虚拟世界经历“产生”、“活动”、“消亡”三个阶段。

同时,为使粒子系统所表示的景物具有良好的随机性,与粒子有关的每一个参数均受到一个随机过程的控制。

粒子系统的随机性,可采用一些非常简化的随机过程(如对每一粒子的参数均先确定其变化范围,然后在该范围内随机地确定它的值)来控制粒子的形状、特征及运动。

粒子的初值就由随机过程产生,粒子也往往是由位于空间的某个地方的粒子源产生。

粒子系统方法的这一特征,使它充分体现了不规则模糊物体的动态性和随机性。

2.5粒子系统的基本模型

图1粒子系统的模型图

2.6粒子系统的结构

 

图2粒子系统的结构图

2.7生成粒子系统的基本步骤

首先根据待描述的具体粒子系统的外观特征,分析得到粒子的外观属性;然后研究所描述的粒子系统的运动及变化特点,抽象出粒子的运动和变化规律,再对所得到的属性进行定量描述;最后逐帧生成图像。

即:

①生成一定数量的新粒子加入系统;②赋予每一新粒子以一定的初始属性;③除去那些已经超过其生命周期的粒子;④根据粒子的动态对粒子进行变换及改变属性;⑤绘制并显示有生命的粒子组成的图形。

2.8粒子系统的设计要求

1实时效果:

即能够实时模拟动态景观,要求粒子系统效率非常高,CPU有大量剩余时间完成其它计算。

2灵活性:

即用户能够灵活地使用粒子系统,通过许多子模块构建各种不同场景效果。

3参数独立性:

即参数的逻辑层次要清晰,并且独立于外部系统。

4模拟质量的可伸缩性:

即可以通过调节参数来调整虚拟场景的模拟精确度。

5可学习性和可扩展性:

指粒子系统应该易学习使用,并且可对其进行必要的修改扩展,以适应不同虚拟现实系统开发的需要。

第3章烟花粒子系统

3.1烟花粒子系统的物理模型分析

烟花燃放时在空中呈千姿百态。

烟花显示的形状是指我们能看到的烟花的外部整体形状,最典型的形状是球形(如牡丹、锦冠、大丽等)、菊花状(如菊花、慧星、花蕾等)、环状(红绿双环、笑脸等)、椰树形(金椰、银椰、蓝椰、绿椰等)、风车类(三角风车、六角风车等)及其它效果(瀑布、拉手、游星、蝴蝶、日景等)。

烟花燃放过程的整个运动由两个粒子发射处。

一个是燃放点即燃放烟花的位置;另一个是烟花冲向空中后的爆炸点,它是随机的,烟花的形状也主要由它来控制。

通过烟花燃放的运动过程可以知道烟花的燃放有两种情况:

一种是燃点即炸点处,如三角风车之类的烟花。

另一种是燃点处与炸点处不同,显然它要分为两段来处理。

首先,在燃放点并不产生所有的粒子,只是一个粒子向空中冲去。

这样可以设置若干个随机燃放点并赋予粒子以初始属性。

第二个过程是在空中某点爆炸,而这个炸点必须根据烟花冲向空中的运动规律在相应的位置爆炸,可以在某一帧或某一时间段产生。

3.2烟花粒子系统的基本模型

烟花燃放的形状有许多种,对不同的形状粒子将有不同的属性。

本文只对几种最基本的模型和几种典型的烟花进行模拟,其它许多类型的烟花可以由它们合成。

下面是对用粒子系统模拟这几种烟花模型进行分析。

⑴天女散花

用粒子系统来模拟“天女散花”的烟花模型可以从以下几下方面来进行描述:

1烟花的燃放过程犹如爆炸过程。

粒子只在

帧产生,而在随后的序列中只要改变在

帧产生的粒子属性即可,而不必产生新粒子。

此时要注意初始粒子的数量,它决定了烟花的密度。

数目过少,模拟的效果失真;数目过多,实时性受到影响。

2由于实际燃放烟花产生的形状各异,要完全模拟实际情况显然是不太可能的。

但可以通过预先定义一系列不同形状的粒子形状,如点、三角形、矩形等,把它们分别编号为1,2,…,n,然后用随机函数伪烟花粒子增加形状属性,同时结合纹理映射来实时地模拟烟花形状。

形状=int(形状均值+rand()

形状方差),其中int()为取整函数。

3粒子的活动。

粒子被赋予属性后,粒子开始进行活动。

伴随着虚拟世界时间t的流逝它不断地改变着自己的各种属性值。

根据物理动力学等相关知识可得第

帧时粒子的各属性值为:

位置

速度

其中,

为粒子的加速度

颜色

其中,

为粒子的颜色的变化率

生存期

4粒子的消亡。

消亡条件——生存期

减至零或运动出了边界或粒子的属性超过了事先设定的阈值。

⑵束状

粒子的属性、活动及消亡的条件同上所述。

通过改变纹理映射模拟出烟花粒子团,从而呈现束状的烟花效果。

烟花粒子团即一组有限的,具有某种相似性质的烟花粒子的集合。

每个烟花有一个头粒子(根部)和一组尾粒子(上端),它们具有相同的颜色、形状和速度,并且头粒子最大最亮,其它粒子逐渐变细变暗,亮度和大小的变化速率相等。

其中头粒子与尾粒子的位置关系可以是线性变化的,亦可以是随机变化的,因而可以产生不同形状的烟花。

⑶牡丹和激光

我模拟的只是烟花的外观形状,不涉及相关过程的物理和化学反应过程。

在运动过程中仅考虑重力的作用(忽略风等自然因素和向心力等到非自然因素的一切阻力),按牛顿第二定律对粒子的运动进行模拟。

用粒子系统来模拟牡丹和激光的烟花模型的具体过程是:

让烟花在空中爆炸呈球状,粒子只在某一帧

产生,在后面的运动过程中不再产生新粒子(其中粒子的属性、活动及消亡的条件同上所述),然后将球状的烟花模型投影至平面,分别加上不同的纹理映射,结合BillBoarding(BillBooard是让二维纹理或者面元经过旋转后总是朝向观察者的一种技术。

它的基本思想是:

首先把一幅静态图像作纹理映射到简单的几何平面上,然后根据视点的位置变换平移或围绕物体本身旋转平面,使视点始终与该平面正交,同时利用Alpha融合技术,使平面本身不可见,仅让有用的部分图像显示出来。

)技术即可得到我们想要的烟花模型。

3.3烟花粒子系统的实现

3.3.1烟花粒子的数据结构

烟花粒子的数据结构定义如下:

structfire_point

{

floatdir;//粒子运动的方向

floatspeed;//粒子的速度

floatr,g,b;//粒子的颜色

floatx,y;//粒子的位置坐标

};

structfirework

{

inttype;//烟火的类型

floatx,y;//主位置

floatt;//生命时间

floatdir;//方向

intflag,counter;//标志,计数器

structfire_pointfp[MAX_POINTS];//爆炸粒子

structfirework*next;//下一个烟火

};

3.3.2系统的类层次关系

图4系统类层次图

3.3.3系统的功能模块

图5烟花粒子系统的功能图

3.3.4系统的生成步骤

下面只列出“天女散花”模型的绘制步骤,其它模型的烟花的绘制步骤都一样,只是纹理映射的参数不一样,因此不一一列出。

“天女散花”的绘制步骤如下:

在燃放点处添加烟花粒子

voidCMyFireworkView:

:

AddFirework()

{…

{//添加新的烟火

if(fw==NULL)

{

fw=(structfirework*)malloc(sizeof(structfirework));

fw->next=NULL;

}

else

{

fw_temp=(structfirework*)malloc(sizeof(structfirework));

fw_temp->next=fw;

fw=fw_temp;

}

}

赋予烟花粒子初始属性

voidCMyFireworkView:

:

AddFirework()

{…

fw->x=0;

fw->y=0;

fw->flag=0;

fw->t=20;

fw->counter=0;

fw->dir=(rand()%70)-35;

for(i=0;i

{

fw->fp[i].dir=(rand()%360);

if(fw->type&4)fw->fp[i].speed=(float)(rand()%1000)/100000;

elsefw->fp[i].speed=0.005+(float)(rand()%1000)/1000000;;

fw->fp[i].x=0;

switch(fw->type)

{

case0:

fw->fp[i].r=1;fw->fp[i].g=1;fw->fp[i].b=1;break;//白色

case1:

fw->fp[i].r=1;fw->fp[i].g=0;fw->fp[i].b=0;break;//红色

case2:

fw->fp[i].r=0;fw->fp[i].g=1;fw->fp[i].b=0;break;//绿色

case3:

fw->fp[i].r=0;fw->fp[i].g=0;fw->fp[i].b=1;break;//蓝色

case4:

fw->fp[i].r=1;fw->fp[i].g=1;fw->fp[i].b=0;break;

case5:

fw->fp[i].r=1;fw->fp[i].g=0;fw->fp[i].b=1;break;

case6:

fw->fp[i].r=0;fw->fp[i].g=1;fw->fp[i].b=1;break;

default:

fw->fp[i].r=(float)(rand()%256)/255;fw->fp[i].g=(float)(rand()%

256)/255;fw->fp[i].b=(float)(rand()%256)/255;break;//随机颜色

}

if(fw->fp[i].r==0)fw->counter++;

if(fw->fp[i].g==0)fw->counter++;

if(fw->fp[i].b==0)fw->co

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2