《毕业设计(论文)基于OpenGL的雪粒子系统设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于OpenGL的雪粒子系统设计与实现.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、毕业设计论文基于OpenGL的雪粒子系统设计与实现 西 南 交 通 大 学本科毕业实习软件工程文档基于OpenGL的雪粒子系统设计与实现年 级 专 业 计算机软件指导教师 小组成员2021 年 1 月院 系 软件学院 专 业 计算机软件 题 目 基于OpenGL的雪粒子系统设计与实现 小组成员 指导教师评语指导教师 签章 成 绩 辩论委员会主任 签章 年 月 日毕业实习任务书学号姓名班级学号姓名班级学号姓名班级学号姓名班级发题日期2021 年 9 月 6 日完成日期2021 年 12 月 31 日题目基于OpenGL的雪粒子系统设计与实现实习目标任务及主要内容采用常规的曲面来表达焰火云烟等非常
2、不规那么的自然界形体是很困难的事情这些自然界形体外观形状极其不规那么常常带有很大的随机性并可能不断发生变化而粒子系统可以对树云火焰等进行动态建模和绘制粒子系统是一种随机模型它用大量的粒子图元 Particle 比方小球椭球立方体或其它形状来描述景物每个粒子的位置取向及动力学性质都是由一组预先定义好的随机过程来说明 本毕业实习拟将粒子系统的关键方法和OpenGL纹理映射技术相结合利用粒子系统对雪粒子的属性和运动特征进行建模再利用纹理映射技术显示计算得到的每个雪粒子从而实现对雪粒子的绘制系统可比拟真实地模拟降雪现象技术路线VCOpenGL指导教师提供的资料1计算机图形学相关参考资料 2粒子系统相关
3、参考资料 3OpenGL相关参考资料应提交的最终成果1系统分析设计文档包括需求报告概要设计报告详细设计报告 2毕业实习论文程序清单以及演示光盘进度安排共16周阶段周数任务应提交的成果一6查阅资料学习掌握计算机图形粒子系统技术及OpenGL实习日志二4系统分析设计相关软件工程文档三4系统实现及调试实现功能需求的可运行系统四2撰写实习文档评阅和辩论标准的毕业实习文档五指导教师签字 20 年 月 日学院专家组审核意见审批人签字20 年 月 日 目录一需求分析报告61 引言611 编写目的712 开发目的及意义713 预期读者和阅读建议914 OPenGL 工作渲染流程102 系统功能需求1221 系
4、统功能1222 设计和实现上的限制123 外部接口与运行环境需求1331 用户界面1332 运行环境134 其它非功能需求1341 性能需求1342 用户文档13二概要设计报告141 引言1411 编写目的1412 预期读者和阅读建议152 设计概述1521 设计原那么和设计要求1522 开发环境与平台163 系统逻辑设计1631 系统架构图1632系统处理流程174 系统出错处理设计18三详细设计报告191引言1911 编写目的1912 预期读者和阅读建议202 系统详细设计20四软件测试报告261 引言2611 目的262 测试条件263 测试方案2631 人员方案2632 进度方案264
5、 总体测试方案265 系统测试内容2751 系统测试任务277 性能测试内容28五用户操作手册291引言2911 编写目的2912 预期读者和阅读建议302 软件概述3021 功能3022 性能303 运行环境3031 硬件3032 支持软件314 使用说明3141 安装和初始化3142 主要功能使用举例3143 出错和恢复315用户操作手册31六工程开发总结报告32七参考文献33一需求分析报告1 引言在虚拟场景中自然景物的模拟一直是计算机图形学领域中的热点研究内容喷泉瀑布火焰水流雨雪等自然景物与传统的规那么几何物体不同它们拥有大量的细节信息和形状的随机变化因此这些自然景物的模拟相比照拟困难需
6、要借助粒子系统建模使其充分表达自然景观中模糊物体的随机性和动态性以便到达良好的模拟效果粒子系统理论经历多年的开展和完善已被广泛应用于虚拟现实三维仿真游戏开发电影特效可视化等领域本文结合这一实际情况以前人的研究工作为背景和根底以真实感和系统实时性以及友好的人机交互性为目标在深入分析粒子系统理论根底上结合Windows 7操作系统和Microsoft VC编译环境为开发平台基于OpenGL图形库设计并实现了一个用于自然景物模拟的粒子特效系统完成了雪花场景模拟主要工作如下 1 深入研究粒子系统理论及其应用详细分析粒子系统的根本原理总结粒子系统根本模型粒子系统通用结构和粒子系统的算法框架 2 简化雪景
7、的数学模型总结出雪粒子系统模型 3 设计并实现一个用于常见自然景物模拟的粒子特效系统 4 通过模拟雪花场景验证系统的有效性和实时性这款是利用了最新的语言进行编写可以说是一款新的语言他完全实现了面向对象的开发环境遵循 环境的编程语言它在实现交互性数据处理以及其他功能这份文档的编写目的既是为了明确本开发过程中所有既定设计问题也是为了帮助在保证工作效率和内容与设计者意图一致这份文档将对进行详细的说明致力于使阅读者和能通过该文档对整个有一个全面的了解1可以应用在商业上创立虚拟商店虚拟房地产漫游建筑物可视化虚拟旅游景点漫游虚拟博物馆等例如日本就出现了可以帮助顾客买房购房的虚拟现实效劳在日本松下公司的虚拟
8、厨房里顾客可以把自己想买的设备和餐具安置在厨房的相应地方看看是否适宜虽然认识到这一切都是虚拟的但还是会被它的那逼真的效果所迷惑一不小心就会全身心的投入进去并且最终买走了自己满意的商品虚拟现实技术为人们提供了一种理想的教学手段目前己被广泛应用在军事教学体育训练和医学实习中对于第一次走上手术台的医生来说通过虚拟现实技术的帮助他们可以在显示器上一遍一遍的模拟手术移动人体内的器官寻找最正确手术方案这种模拟器显示的人体结构可以到达乱真的程度在航天领域VR技术也大有用武之地例如失重是航天技术中的一个必须克服的困难因为在失重情况下物体的运动难以预测因此为了在太空中进行精确的操作需要进行长时间的仿真训练以适应
9、失重时操作的特点VR技术就是实现该操作的适宜的选择再如美国宇航局Ames研究中心的科学家将探索的火星数据进行处理后得到了火星的虚拟现实图像研究人员可以看到全方位的火星外表景象高山平川河流以及纵横的沟壑里被风化的斑斑的巨石都显得十分清晰逼真而且不管你从哪个方向看这些图视野中的景象都会随着你的头的转动而改变就好似真的置身于火星上漫游随着计算机与计算机图形学技术的开展仿真从最早的数字仿真开展到了今天的可视化仿真多媒体仿真与虚拟现实仿真虚拟现实技术是在综合计算机图形技术计算机仿真技术传感技术显示技术等多种学科技术的根底上开展起来的是九十年代计算机领域的最新技术之一它以仿真的形式给用户创造一个反映实体对
10、象变化与相互作用的三维图形环境通过头盔显示器数据手套等辅助传感设备使人可以进入这种虚拟的环境直接观察事物的内在变化并与事物发生相互作用给人一种身临其境的真实感可视化仿真技术的目标是把由数值计算或实验获得的大量数据按照其自身的物理背景进行有机地结合用图像的方式来展示数据所表现的内容和相互关系便于把握过程的整体演进发现其内在规律丰富科学研究的途径缩短研究周期可视化仿真就是将数据结果转换为图形或动画形式使仿真结果可视化并具有直观性2多媒体仿真技术是指计算机综合处理各种媒体信息包括文字图形动画图像声音视频等在各种信息间建立逻辑连接并集成一个有交互功能的多媒体系统多媒体的本质不仅是信息的集成而且也是设备
11、和软件的集成并通过逻辑连接形成一个有机整体又可实现交互控制所以说数字化集成性和交互性是多媒体的核心3虚拟现实技术是指计算机产生的三维交互环境在使用中用户是投入到这个环境中去让用户在人工合成的环境中获得进入角色的休验虚拟现实技术的主要内容是实时三维图形生成技术多传感器交互技术以及高分辨显示技术在需求牵引和技术推动下近年来虚拟现实已经取得的一些技术成果并已集成了一些很有实用前景的应用系统而且智能虚拟世界也在不断地开展本课题研究的主要内容是基于Windows 7平台和OpenGL图形库利用粒子系统的根本理论开发一个用于模拟下雪场景的粒子系统本课题首先通过阅读和分析大量的参考文献总结了粒子系统的根本原
12、理和粒子系统的根本模型进而得出了粒子系统的通用结构简化了雪景的数学模型总结出了雪景和喷泉的粒子系统模型基于OpenGL设计并实现了一个用于自然景物模拟的3D粒子特效系统并完成了对雪花特效的实时模拟13 预期读者和阅读建议本文档是针对于及编程人员在操作及编写过程中可能碰见的各种问题及如何解答由于是该工程是我第一次进行实际的编写势必会有这样或那样的缺乏因此并不一定会成为市场产品我们的最初设想是将该免费发布于网上作为一种网络资源供后来者参考阅读该文档的用户会从该文档中了解到开发过程中各个细节包括流程及各种性能的要求对于不同的阅读用户我们提出了不同的建议如下通过该问题了解的背景及操作方法设计人员这是一
13、款初学者做的通过这个我们可以了解流程及控制机制信息与的语言的响应关系及的编写过程中的各种细节流程是一款不错的图1-1 OpenGL在Windows环境中的工作过程图1-2 OpenGL渲染流水线 1 显示列表显示列表可以储存几何数据和像素数据等到执行显示列表时再一并将数据发送出去我们称之为间接模式也可以立即对数据进行相应的操作和处理这种处理模式为直接模式显示列表在被执行时就像应用程序中的直接模式发送一样显示列表中存储的数据被发送出去 2 求值程序求值程序提供了一种根绝控制点导出描述曲面的顶点的叫多项式映射 Polynomial Mapping 的方法可以根据控制点生成纹理坐标颜色值和空间坐标值
14、 3 顶点操作顶点操作主要负责将顶点转换成图元对顶点数据进行矩阵变换假设使用了纹理映射将执行纹理坐标生成并对纹理坐标进行变换假设启用光照功能将执行光照计算根据变换后的顶点面法线和其他光照信息计算颜色值 4 图元装配图元装配的主要任务是删除集合体中位于半空间之外的局部半空间由一个平面定义 5 像素操作像素操作主要执行像素缩放偏移映射和截取等操作然后将其封装成适宜的格式存储到内存中 6 纹理装配OpenGL实现可能有提高纹理映射性能的专有资源这种情况下酒需要设置纹理对象的优先级以控制使用这种珍贵而有限的资源 7 光栅化光栅化是将几何数据和像素数据转换为片元每个片元都对应用于帧缓存中的一个像素将顶点
15、接成直线或者计算机填充多边形内部像素时需要考虑直线和多边形的点画模式线宽点的大小着色模型机用于支持反走样的覆盖率计算这个阶段确定了每个片元的颜色和深度值 9 片元操作将片元值写入帧缓存之前将执行一系列的操作他们可能修改甚至丢弃片元第一个操作可以是纹理映射接下来执行雾计算然后是裁剪测试alpha测试模板测试和深度测试之后执行混合抖动逻辑运算和屏蔽最后经过处理后的片元被绘制到适宜的帧缓存变成像素2 系统功能需求粒子系统理论已广泛应用于虚拟现实游戏开发电影特效可视化等领域粒子系统主要用于模拟火焰烟火等的动态效果光影闪电等的特效雪景雨景等的降落过程液体气体的流动过程等本课题研究的3D特效粒子系统主要用
16、于常见自然景物雪花喷泉的模拟需要具备以下几点特性 1 场景逼真性真实感和逼真性是三维物体建模和自然景物模拟最根本和重要的特性也是该系统的最根本要求 2 系统实时性由于第一个需求的存在粒子模拟中想要得到真实度较高的渲染效果势必爱来大量粒子在场景中存在的情况如此带来了系统渲染效率的负担因为只有高性能的计算低消耗的内存高效的处理才能连贯逼真的模拟随机动态变化的自然景物 3 用户交互性粒子系统中任一参数的改变都将可能对最终的粒子模拟效果产生极大的影响同时由于粒子系统的特殊性存在众多的参数设置用户往往不能在预操作时期一次性的通过参数设置是模拟效果到达所需的最正确状态因此在系统的总体设计中我们需要充分的考
17、虑人机之间的良好交互性21 系统功能本系统的功能主要包括背景音乐雪花种类更换雪花下降速度控制雪花前后左右飘动控制雪花粒子数量设置雪花粒子大小设置等22 设计和实现上的限制由于现阶段使用电脑的运行速度和内存等问题本系统只能尽量模仿雪花效果不能完全到达真实环境中的粒子数量3 外部接口与运行环境需求运行环境需要在支持OPenGL的电脑上运行需要进行OPenGL环境配置31 用户界面用户运行系统程序以后直接是可以看到的夜色背景然后雪花从上面象下雪一样往下降没有按钮用户通过键盘进行控制32 运行环境硬件PC机P4 17G以上512M内存40G硬盘支持OPenGL的独立显卡或图形加速器软件Windows
18、7如需调试需要对系统环境进行OPenGL的配置4 其它非功能需求本系统只对特定的键位进行响应对按下其他键位系统将不作出任何反响在输入数据的地方有提示输入范围如果输入超出特定范围将提示错误并重新输入41 性能需求存储器因为粒子数量多所以内存和显存需求较大磁盘空间只需要10MB即可进行运行因为每个粒子都是单独的处理并加以计算所以CPU和GPU运算速度需求较大42 用户文档安装指南纸质文档用户手册纸质文档在线帮助相关电子文档与软件产品一同分发配置二概要设计报告1 引言引言是对这份软件系统概要设计报告的概览是为了帮助阅读者了解这份文档是如何编写的并且应该如何阅读理解和解释这份文档在虚拟场景中自然景物的
19、模拟一直是计算机图形学领域中的热点研究内容喷泉瀑布火焰水流雨雪等自然景物与传统的规那么几何物体不同它们拥有大量的细节信息和形状的随机变化因此这些自然景物的模拟相比照拟困难需要借助粒子系统建模使其充分表达自然景观中模糊物体的随机性和动态性以便到达良好的模拟效果粒子系统理论经历多年的开展和完善已被广泛应用于虚拟现实三维仿真游戏开发电影特效可视化等领域本文结合这一实际情况以前人的研究工作为背景和根底以真实感和系统实时性以及友好的人机交互性为目标在深入分析粒子系统理论根底上结合Windows 7操作系统和Microsoft VC编译环境为开发平台基于OpenGL图形库设计并实现了一个用于自然景物模拟的
20、粒子特效系统完成了雪花场景模拟主要工作如下 1 深入研究粒子系统理论及其应用详细分析粒子系统的根本原理总结粒子系统根本模型粒子系统通用结构和粒子系统的算法框架 2 简化雪景的数学模型总结出雪粒子系统模型 3 设计并实现一个用于常见自然景物模拟的粒子特效系统 4 通过模拟雪花场景验证系统的有效性和实时性这款是利用了最新的语言进行编写可以说是一款新的语言他完全实现了面向对象的开发环境遵循 环境的编程语言它在实现交互性数据处理以及其他功能这份文档的编写目的既是为了明确本开发过程中所有既定设计问题也是为了帮助在保证工作效率和内容与设计者意图一致这份文档将对进行详细的说明致力于使阅读者和能通过该文档对整
21、个有一个全面的了解本文档是针对于及编程人员在操作及编写过程中可能碰见的各种问题及如何解答由于是该工程是我第一次进行实际的编写势必会有这样或那样的缺乏因此并不一定会成为市场产品我们的最初设想是将该免费发布于网上作为一种网络资源供后来者参考阅读该文档的用户会从该文档中了解到开发过程中各个细节包括流程及各种性能的要求对于不同的阅读用户我们提出了不同的建议如下通过该问题了解的背景及操作方法设计人员这是一款初学者做的通过这个我们可以了解流程及控制机制信息与的语言的响应关系及的编写过程中的各种细节流程是一款不错的2命名规那么在该的设计过程中会出现的需要命名的内容包括工程文档类场景元素整体工程为各个类根据不
22、同场景不同功能以最简单英文进行命名边界设计原那么整个工程有数值的输入与输出要求针对这种情况设定数值边界为正整数系统易操作性要求在整个的设计过程中各个环节都应该着重突出操作提示从而保证在过程中操作简便和顺畅系统可维护性要求对各个模块的相对独立设计保证修改时对整体的改动尽量减小22 开发环境与平台221 硬件平台 PC机P4 17G以上512M内存40G硬盘支持OPenGL的独立显卡或图形加速器222 软件平台操作系统为Windows 7操作系统编译程序为VC2021编译环境需要对系统进行OPenGL的配置具体配置方法如下1glut是一个win32 dynamic lib先下载glutdlls37
23、betazip2解压后把glut32dll放到 windows system目录下3 另建目录如 Eglut再在Eglut下面建Eglutincludegl把头文件gluth放到Eglut include gl下面4再在Eglut下面建Eglutlib把glut32lib放在Eglutlib下面 5最后把glut加到工程 project 中 3 系统逻辑设计31 系统架构图首先该系统为一个运用粒子系统理论在Windows 7平台上基于OpenGL图形库开发用于常见自然景物模拟的粒子特效系统因此它应该能够较好的完成理想的景物模拟到达用户对于雪花的模拟要求另外本系统也需要用数学理论解决的问题比方在
24、图形模块中我们需要经常进行坐标转换从模型坐标到全局坐标再到视点坐标最后到单位坐标之间的转换都牵涉到坐标的变化要实现坐标转换就牵涉到数学中有关矩阵的知识鉴于以上对系统需求的分析我们完成如图2-1所示的3D粒子特效系统架构图2-1 3D粒子特效系统宏观框架图其中内存管理模块和数据根底模块构成整个3D特效粒子系统的根底模块内存管理模块监控整个程序运行期的内存分配和内存释放鞥内存操作数据根底模块封装了根本的2D和3D几何代数操作核心模块中系统控制模块是唯一被授权和系统的所有模块进行交互的模块负责对整个系统流程的控制和操作系统启动后系统控制模块掌握系统操纵权由他负责调用和启动其他模块同时负责用户和系统的
25、交互为用户和其他模块之间提东信息传递和相应场景管理模块主要负责系统整个场景的管理和组织粒子系统模块负责粒子及粒子系统的管理和组织如粒子的删除属性的更新和状态的更新等32系统处理流程如图2-2所示本系统主要处理流程分为以下几步 1 系统控制模块启动系统并对系统进行初始化 2 场景管理模块创立视点和视口进行场景初始化 3 粒子系统广利模块创立粒子系统初始化粒子系统的各项属性 4 场景管理模块创立场景节点将粒子系统挂接到场景节点上与场景节点相对应 5 图形渲染模块将需要渲染的场景数据通过OpenGL图形接口渲染成图像图2-2 粒子系统流程图4 系统出错处理设计本系统只对特定的键位进行响应对按下其他键
26、位系统将不作出任何反响在输入数据的地方有提示输入范围如果输入超出特定范围将提示错误并重新输入如果系统内部出现内存错误系统将会自动关闭只需要重新启动系统即可三详细设计报告1引言粒子系统根本原理是将大量相似的微小的根本粒子图元按照一定的规律组合起来以描述和模拟一些不规那么的模糊物体属于粒子系统的每个粒子图元具有确定的生命值 Life 和各种状态属性 Attributes 如大小 Size 形状 Shape 位置 Position 颜色 Color 透明度 Alpha 速度 Velocity 等并且这些粒子都要经过产生 Generation 运动变化 Dynamics 和消亡 Extinction
27、这么三个生命历程所有存活着的粒子的生命值形状大小等属性一直都在随着时间的推移而变化其他属性都将在其限定的变化范围内随机变化这些粒子各种属性变化就组成一幅连续变化的动态画面从而充分模拟出了模糊物体的随机性和动态性粒子系统理论主要基于以下的三个假设和两个机制 1 物质的粒子组成假设把被模拟的模糊物体看做有限个动态变化粒子的集合这些粒子有确定的属性并且每个粒子都处于运动状态粒子在空间上确定的分布范围 2 粒子独立关系假设粒子的独立关系包括粒子系统中的每个粒子与场景中其他物体相交和粒子系统内部的粒子之间不相交的连个局部 3 粒子的属性假设每个粒子都具有一系列的属性主要分为质量属性空间属性外观属性运动属
28、性生存属性等 4 粒子的生命机制粒子系统中的每一个粒子都必须经历诞生动态变化和消亡三个生命历程 5 粒子的运动机制粒子在存活期间遵行被模拟的物体特性决定的运动规律11 编写目的雪花粒子系统这款是利用了最新的语言进行编写可以说是一款新的语言他完全实现了面向对象的开发环境遵循 环境的编程语言它在实现交互性数据处理以及其他功能这份文档的编写目的既是为了明确本开发过程中所有既定设计问题也是为了帮助在保证工作效率和内容与设计者意图一致这份文档将对进行详细的说明致力于使阅读者和能通过该文档对整个有一个全面的了解本文档是针对于及编程人员在操作及编写过程中可能碰见的各种问题及如何解答由于是该工程是我第一次进行
29、实际的编写势必会有这样或那样的缺乏因此并不一定会成为市场产品我们的最初设想是将该免费发布于网上作为一种网络资源供后来者参考阅读该文档的用户会从该文档中了解到开发过程中各个细节包括流程及各种性能的要求对于不同的阅读用户我们提出了不同的建议如下通过该问题了解的背景及操作方法设计人员这是一款初学者做的通过这个我们可以了解流程及控制机制信息与的语言的响应关系及的编写过程中的各种细节流程是一款不错的图3-1 粒子系统通用结构其中粒子的生存是指粒子的生命更新包括粒子的诞生和粒子的死亡粒子的演变主要包括粒子的形状变化和粒子的运动状态更新而粒子的形态变化和运动状态更新主要取决于所受的影响作用我们可以将粒子系统
30、中对粒子的影响作用分为全局作用和局部作用两大类 1 全局作用粒子系统作为一个整体要受到的影响和受力称为全局作用如重力作用风力作用等全局作用力这类的作用相对简单一些它对粒子系统中的每一个粒子影响相同假设某不规那么模糊物体受到一个全局作用的影响那么模拟该物体的粒子系统中的每一个粒子都要受到同样方向同样大小的作用力 2 局部作用局部作用主要针对粒子系统中的单个粒子而言它对于物体整体没有意义的以火焰粒子为例如果某个火焰粒子正处于粒子系统的高密度区根据分子运动的原理它会向低密度区扩散还有各个粒子之间相互碰撞会使粒子间产生能量的交换这也属于局部作用22粒子系统的算法框架第二章中已经对粒子系统的根本理论进行
31、了详细的阐述并对粒子系统的根本模型作了深入的分析我们知道粒子系统中每个粒子都必须经历诞生动态变化消亡三个生命历程粒子系统的算法框架如图3-2所示图3-2 粒子系统算法框架在每一帧一般由如下处理步骤 1 粒子系统中诞生一些新的粒子并赋予其初始属性 2 遍历粒子销毁粒子系统中生命值到期的粒子 3 更新被保存的粒子的属性状态 4 渲染存活的粒子23雪花模型分析雪花在空中漫天飞舞其形状各有不同有六角形的有如鹅毛般片状的给人的感觉是整个天空飞舞着大小不同形状各异的雪花而且近处的雪花要分布稀疏一点远处的雪花要小要分布要稍微稠密一些雪花整体方向是往下落但受风力的影响随处飘荡有些那么悠然而逝雪景主要有以下几个
32、模拟时需要注意的重点 1 雪花充满整个场景 2 雪花的形状和大小不尽相同 3 因为受到各种力 空气阻力重力风力等 的影响雪花会随处飘荡 4 由于受力大小不一样不同的雪花下降的速度不一样 5 风的大小和方向是随机变化的 6 远处雪花看起来形状更小下落速度慢飘荡幅度小分布稠密24 雪花粒子的属性从第二章所阐述的粒子理论中我们知道粒子的属性一般包括空间位置属性外观属性运动属性生存属性等下面结合上一节的雪景模拟分析从粒子的属性各个角度出发定义雪花粒子的属性 1 空间位置属性空间位置属性包括初始空间坐标和方向等结合人眼的视觉感知特点和系统的实时性我们用区域盒的方法来表示雪花粒子的分布范围将雪花粒子分布在
33、视锥体内通过随机函数确定每个雪花粒子三维空间位置这样使得缩减之处都有雪花给人一种沉浸在漫天雪花飞舞的空间的感觉为了简化计算在不影响图形真实感的前提下分布区域可用视点前的一个长方体代替该长方体的某个面的法向量穿过视点而粒子的初始分布区域为长方体中与XOZ面平行的一个外表其法线朝下分布区域示意图如图33所示其中阴影区域为初始位置分布区域设为第个粒子空间初始坐标那么有 3-1 其中是上均匀分布的随机函数分别是轴轴轴方向用来确定粒子分布区域的常数 2 外观属性粒子的外观属性主要包括形状大小颜色等雪花粒子的形状大小和粒子的数量很大程度决定了下雪模拟的逼真度为了减少系统的计算可以采用点元或者三角形来描述图
34、3-3 雪花粒子分布区域示意图雪花雪花粒子的大小可变由于我们平时见到的雪花是纯白色的因此雪花粒子的颜色也只能为纯白色透明度为不透明 3 运动属性运动属性是指雪花粒子的初始速度雪花粒子的初始速度的大小为 3-2 雪花粒子运动的初始方向与重力的方向相同当有风时雪花粒子运动的初始方向为重力方向和风向叠加 4 生存属性粒子的生存属性即指粒子存活与否的条件约束雪花粒子存活与否的条件主要有粒子的生存周期和粒子的寿命雪花在整个场景模拟过程中在不断运动和变化其中雪花粒子的空间位置也在不断变化粒子寿命结束的条件为粒子的空间位置超出了粒子的分布区域范围如果粒子的生存周期到期或者粒子运动时其空间位置超出了其分布区域
35、范围那么停止对该粒子的计算和绘制再次诞生新的粒子时并随机的分布在其初始分布区域内525雪花粒子的运动模型雪花在三维空间中运动按照牛顿运动规律雪花的运动模型可用公式3-3表示 3-3 其中为粒子的加速度为粒子的速度为其位置分别为初始速度和位置为了简化计算我们采用等加速度运动来简化雪花粒子的运动模型由公式3-4表示 3-4 其中和分别是时刻粒子的速度和粒子的空间位置和为前一时刻粒子的速度和空间位置为时间间隔为了表示风力对雪花的影响我们在每个方向上加了一个正弦旋转量用公式3-5可表示 3-5 其中为常数表示旋转量的振幅表示粒子不加旋转量时的位置在方向上的坐标分量表示粒子加了旋转量之后的位置在方向坐标
36、分量为第帧的相位角其值由下式得出 3-6 为相位角增量的初始值为为之间的随机数四软件测试报告1 引言11 目的为了尽可能的找出软件的缺乏提高软件的质量促进软件的成功验收专门制定了本大纲其主要目的在于为所要进行的测试工作制定各种必要的准那么和标准以及在有关方面协议的根底上对测试工作进行合理组织与管理2 测试条件1 测试硬件环境设计为个人PC机系统配置为22Ghz内存2 测试软件环境1操作系统 Windows 2支撑软件Adobe flash player10动作期望的输出相应实际情况运行系统后按下F1键系统窗口显示雪花粒子慢慢下降画面系统窗口显示雪花粒子慢慢下降画面运行系统过程中按下LEFT键系
37、统窗口显示雪花粒子下降向左偏移系统窗口显示雪花粒子下降向左偏移运行系统过程中按下RIGHT键系统窗口显示雪花粒子下降向右偏移系统窗口显示雪花粒子下降向右偏移运行系统过程中按下UP键系统窗口显示雪花粒子下降速度减慢系统窗口显示雪花粒子下降速度减慢运行系统过程中按下DOWN键系统窗口显示雪花粒子下降速度加快系统窗口显示雪花粒子下降速度加快运行系统过程中按下W键应该让用户感觉向前移动应该让用户感觉向前移动运行系统过程中按下S键应该让用户感觉向后移动应该让用户感觉向后移动4 总体测试方案首先要完成的雪花下落功能测试其次是系统的性能测试性能指标包括雪花粒子控制雪花贴图控制雪花粒子数量雪花粒子大小等等5
38、系统测试内容51 系统测试任务511 任务说明通过测试找出系统的缺乏以及可能存在的隐患并作记录方便开发人员进行修改和改良512 通过准那么雪花粒子系统的各项功能和性能指标均到达或超过需求概要设计说明书的标准514 测试用例及测试步骤测试用例表4-2 测试用例表功能描述雪花降落音乐播放风速调节远近感觉粒子参数设置用例目的测试各功能是否正常前提条件运行系统进入到系统界面输入动作期望的输出相应实际情况运行系统后按下F1键系统窗口显示雪花粒子慢慢下降画面系统窗口显示雪花粒子慢慢下降画面运行系统过程中按下LEFT键系统窗口显示雪花粒子下降向左偏移系统窗口显示雪花粒子下降向左偏移运行系统过程中按下RIGH
39、T键系统窗口显示雪花粒子下降向右偏移系统窗口显示雪花粒子下降向右偏移运行系统过程中按下UP键系统窗口显示雪花粒子下降速度减慢系统窗口显示雪花粒子下降速度减慢运行系统过程中按下DOWN键系统窗口显示雪花粒子下降速度加快系统窗口显示雪花粒子下降速度加快运行系统过程中按下W键应该让用户感觉向前移动应该让用户感觉向前移动运行系统过程中按下S键应该让用户感觉向后移动应该让用户感觉向后移动2测试步骤 按使用说明书运行系统按照测试用例表逐项进行测试 515 测试结果1软件能力经过测试说明系统已经到达设计所要求的功能及性能2建议可以增加雪花堆积效果3测试结论本系统已经通过测试并能到达设计要求通过测试7 性能测
40、试内容测试系统的功能是否按照系统概要设计说明书开发能否实现系统概要设计书所要求到达的性能指标测试雪花粒子系统运行时当粒子数量设置为最大数量时看系统反响速度是否能正常运行对电脑资源占用是否过大测试雪花粒子系统运行时风速的设定功能是否正常还有系统的远近功能既用户和系统之间的交互功能是否正常是否能产生真实感五用户操作手册1引言粒子系统根本原理是将大量相似的微小的根本粒子图元按照一定的规律组合起来以描述和模拟一些不规那么的模糊物体属于粒子系统的每个粒子图元具有确定的生命值 Life 和各种状态属性 Attributes 如大小 Size 形状 Shape 位置 Position 颜色 Color 透明
41、度 Alpha 速度 Velocity 等并且这些粒子都要经过产生 Generation 运动变化 Dynamics 和消亡 Extinction 这么三个生命历程所有存活着的粒子的生命值形状大小等属性一直都在随着时间的推移而变化其他属性都将在其限定的变化范围内随机变化这些粒子各种属性变化就组成一幅连续变化的动态画面从而充分模拟出了模糊物体的随机性和动态性粒子系统理论主要基于以下的三个假设和两个机制 1 物质的粒子组成假设把被模拟的模糊物体看做有限个动态变化粒子的集合这些粒子有确定的属性并且每个粒子都处于运动状态粒子在空间上确定的分布范围 2 粒子独立关系假设粒子的独立关系包括粒子系统中的每个
42、粒子与场景中其他物体相交和粒子系统内部的粒子之间不相交的连个局部 3 粒子的属性假设每个粒子都具有一系列的属性主要分为质量属性空间属性外观属性运动属性生存属性等 4 粒子的生命机制粒子系统中的每一个粒子都必须经历诞生动态变化和消亡三个生命历程 5 粒子的运动机制粒子在存活期间遵行被模拟的物体特性决定的运动规律11 编写目的雪花粒子系统这款是利用了最新的语言进行编写可以说是一款新的语言他完全实现了面向对象的开发环境遵循 环境的编程语言它在实现交互性数据处理以及其他功能这份文档的编写目的既是为了明确本开发过程中所有既定设计问题也是为了帮助在保证工作效率和内容与设计者意图一致这份文档将对进行详细的说
43、明致力于使阅读者和能通过该文档对整个有一个全面的了解本文档是针对于及编程人员在操作及编写过程中可能碰见的各种问题及如何解答由于是该工程是我第一次进行实际的编写势必会有这样或那样的缺乏因此并不一定会成为市场产品我们的最初设想是将该免费发布于网上作为一种网络资源供后来者参考阅读该文档的用户会从该文档中了解到开发过程中各个细节包括流程及各种性能的要求对于不同的阅读用户我们提出了不同的建议如下通过该问题了解的背景及操作方法设计人员这是一款初学者做的通过这个我们可以了解流程及控制机制信息与的语言的响应关系及的编写过程中的各种细节流程是一款不错的快捷键Esc 进行粒子属性设置快捷键UP 加快粒子下落速度快
44、捷键DOWN 减慢粒子下落速度快捷键LEFT 添加向左的风快捷键RIGHT 添加向右的风快捷键H 显示用户操作帮助窗口六工程开发总结报告本文是在刘倩老师的悉心指导和催促下完成的我谨向培育我的刘倩老师致以诚挚的谢意和崇高的敬意老师以严谨的治学态度踏实的工作作风丰富的专业知识给与我极大的帮助也培养了我良好的学习和工作习惯同时论文的顺利完成离不开其它各位老师同学和朋友的关心和帮助在整个的论文写作中各位老师同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见在他们的帮助下论文得以不断的完善最终帮助我完整的写完了整个论文感谢在大学期间所有传授我知识的老师是你们的悉心教导使我有了良好的专业课知识这也是论文得以完成的根底七参考文献1 张芹谢隽毅吴慧中等火焰烟云等不规那么物体的建模方法研究综述中国图像图形学200052 王顺领李学庆王善斌等虚拟场景中的实时降雪模拟计算机技术与开展20063 谢剑斌郝建新基于粒子系统的雨点和雪花降落模拟生成中国图像图形学19994 王润杰川景全倪政国基于粒子系统的实时雨雪模拟系统仿真学2003155 徐利明姜星明基于粒子系统与OpenGL的实时雨雪模拟计