基于OpenGL的雪粒子系统设计与实现.doc_第1页
基于OpenGL的雪粒子系统设计与实现.doc_第2页
基于OpenGL的雪粒子系统设计与实现.doc_第3页
基于OpenGL的雪粒子系统设计与实现.doc_第4页
基于OpenGL的雪粒子系统设计与实现.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西 南 交 通 大 学本科毕业实习软件工程文档基于OpenGL的雪粒子系统设计与实现年 级: 专 业: 计算机软件指导教师: 小组成员: 2011 年 1 月西南交通大学本科毕业实习 第33 页院 系 软件学院 专 业 计算机软件 题 目 基于OpenGL的雪粒子系统设计与实现 小组成员 指导教师评语: 指导教师 (签章)成 绩 答辩委员会主任 (签章) 年 月 日毕业实习任务书学号姓名班级学号姓名班级学号姓名班级学号姓名班级发题日期2010 年 9 月 6 日完成日期2011 年 12 月 31 日题目基于OpenGL的雪粒子系统设计与实现实习目标、任务及主要内容采用常规的曲面来表达焰火、云、烟等非常不规则的自然界形体是很困难的事情,这些自然界形体外观形状极其不规则,常常带有很大的随机性,并可能不断发生变化,而粒子系统可以对树、云、火焰等进行动态建模和绘制。粒子系统是一种随机模型,它用大量的粒子图元(Particle),比如小球、椭球、立方体或其它形状来描述景物,每个粒子的位置、取向及动力学性质都是由一组预先定义好的随机过程来说明。 本毕业实习拟将粒子系统的关键方法和OpenGL纹理映射技术相结合,利用粒子系统对雪粒子的属性和运动特征进行建模,再利用纹理映射技术显示计算得到的每个雪粒子从而实现对雪粒子的绘制,系统可比较真实地模拟降雪现象。技术路线VC+,OpenGL指导教师提供的资料1、计算机图形学相关参考资料; 2、粒子系统相关参考资料; 3、OpenGL相关参考资料。应提交的最终成果1系统分析设计文档(包括需求报告、概要设计报告、详细设计报告); 2毕业实习论文、程序清单,以及演示光盘。进度安排(共16周)阶段周数任务应提交的成果一6查阅资料,学习掌握计算机图形、粒子系统技术及OpenGL实习日志二4系统分析设计相关软件工程文档三4系统实现及调试实现功能需求的可运行系统四2撰写实习文档,评阅和答辩规范的毕业实习文档五指导教师签字 20 年 月 日学院专家组审核意见审批人签字:20 年 月 日 目录一、需求分析报告61 引言61.1 编写目的71.2 开发目的及意义71.3 预期读者和阅读建议91.4 OPenGL 工作渲染流程102 系统功能需求122.1 系统功能122.2 设计和实现上的限制123 外部接口与运行环境需求133.1 用户界面133.2 运行环境134 其它非功能需求134.1 性能需求134.2 用户文档13二、概要设计报告141 引言141.1 编写目的141.2 预期读者和阅读建议152 设计概述152.1 设计原则和设计要求152.2 开发环境与平台163 系统逻辑设计163.1 系统架构图163.2系统处理流程174 系统出错处理设计18三、详细设计报告191引言191.1 编写目的191.2 预期读者和阅读建议202 系统详细设计20四、软件测试报告261 引言261.1 目的262 测试条件263 测试计划263.1 人员计划263.2 进度计划264 总体测试方案265 系统测试内容275.1 系统测试任务277 性能测试内容28五、用户操作手册291引言291.1 编写目的291.2 预期读者和阅读建议302 软件概述302.1 功能302.2 性能303 运行环境303.1 硬件303.2 支持软件314 使用说明314.1 安装和初始化314.2 主要功能使用举例314.3 出错和恢复315.用户操作手册31六、项目开发总结报告32七、参考文献33一、需求分析报告1 引言在虚拟场景中,自然景物的模拟一直是计算机图形学领域中的热点研究内容。喷泉、瀑布、火焰、水流、雨、雪等自然景物与传统的规则几何物体不同,它们拥有大量的细节信息和形状的随机变化。因此,这些自然景物的模拟相对比较困难,需要借助粒子系统建模使其充分体现自然景观中模糊物体的随机性和动态性,以便达到良好的模拟效果。粒子系统理论经历多年的发展和完善,已被广泛应用于虚拟现实、三维仿真、游戏开发、电影特效、可视化等领域。本文结合这一实际情况,以前人的研究工作为背景和基础,以真实感和系统实时性以及友好的人机交互性为目标,在深入分析粒子系统理论基础上,结合Windows 7操作系统和Microsoft VC+编译环境为开发平台,基于OpenGL图形库设计并实现了一个用于自然景物模拟的粒子特效系统,完成了雪花场景模拟。主要工作如下:(1) 深入研究粒子系统理论及其应用,详细分析粒子系统的基本原理,总结粒子系统基本模型、粒子系统通用结构和粒子系统的算法框架。(2) 简化雪景的数学模型,总结出雪粒子系统模型。(3) 设计并实现一个用于常见自然景物模拟的粒子特效系统。(4) 通过模拟雪花场景验证系统的有效性和实时性。1.1 编写目的雪花粒子系统,这款软件是利用了最新的OPenGL语言进行编写,OPenGL可以说是一款很新,很实用的语言,他完全实现了面向对象的开发环境,遵循 C+的环境的编程语言。它在雪花粒子系统中实现交互性、数据处理以及其他功能。这份文档的编写目的既是为了明确本系统开发过程中所有既定设计问题,也是为了帮助开发人员在开发过程中保证工作效率和系统内容与设计者意图一致。这份文档将对系统进行详细的说明,致力于使阅读者和用户能通过该文档对整个雪花粒子系统有一个全面的了解。1.2 开发目的及意义虚拟现实技术是当今计算机信息科学领域中研究的热门方向之一,虚拟场景是虚拟现实系统中重要的组成部分,在虚拟场景模拟生活中的自然景物一直是计算机图形学领域中的研究内容。在虚拟场景的研究中,传统的建模方法一般只适用于外形比较规则的形体,对于雨、雪瀑布、喷泉等没有固定形状,甚至随着外部环境或者其他因素的改变而改变的物质建模,传统的方法就无能为力了。1983年,William T. Reeves提出使用粒子系统的方法来模拟这些模糊物体,这一难题才迎刃而解。粒子系统使用基本的简单质点来构建模型,代替了以前使用三角形甚至适用曲线来定义物体的方法。粒子系统中的每个粒子都拥有自己的属性,如位置、颜色、形状或大小等,这些属性可以随着时间随机的变化,从而形成由大量粒子构成的物质模型的整体形态和特征以及细节的动态变化。粒子系统能充分体现出不规则模糊物体的随机性和动态性,主要优点是可以利用非常简单的元素来构造复杂的物体,它为雨、雪、喷泉、瀑布、草地等自然景观的造型功能提供了强有力的技术手段。因此,粒子系统被广泛应用于计算机图形学中不规则物体的模拟领域,成为国内外研究的热点。虚拟现实(Virtual Reality,简称VR),是一种基于可计算信息的沉浸式交互环境,具体地说,就是采用以计算机技术为核心的现代高科技生成逼真的视、听、触觉一体化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象进行交互作用、相互影响,从而产生亲临等同真实环境的感受和体验。VR思想的起源可追溯到1965年Ivan Sutherland在IFIP会议上的报告,而Virtual Reality一词是80年代初美国VPL公司的创建人之一Jaron Lanier提出来的。VR系统在若干领域的成功应用,导致了它在90年代的兴起。虚拟现实是高度发展的计算机技术在各种领域的应用过程中的结晶和反映,不仅包括图形学、图像处理、模式识别、网络技术、并行处理技术、人工智能等高性能计算技术,而且涉及数学、物理、通信,甚至与气象、地理、美学、心理学和社会学等相关。VR1可以应用在商业上,创建虚拟商店、虚拟房地产漫游、建筑物可视化、虚拟旅游景点漫游、虚拟博物馆等。例如日本就出现了可以帮助顾客买房、购房的虚拟现实服务,在日本松下公司的“虚拟厨房”里,顾客可以把自己想买的设备和餐具安置在厨房的相应地方,看看是否合适,虽然认识到这一切都是虚拟的,但还是会被它的那逼真的效果所迷惑,一不小心就会全身心的投入进去,并且最终买走了自己称心的商品。虚拟现实技术为人们提供了一种理想的教学手段,目前己被广泛应用在军事教学、体育训练和医学实习中,对于第一次走上手术台的医生来说,通过虚拟现实技术的帮助,他们可以在显示器上一遍一遍的模拟手术,移动人体内的器官,寻找最佳手术方案,这种模拟器显示的人体结构可以达到乱真的程度。在航天领域,VR技术也大有用武之地。例如,失重是航天技术中的一个必须克服的困难,因为在失重情况下物体的运动难以预测,因此为了在太空中进行精确的操作,需要进行长时间的仿真训练,以适应失重时操作的特点。VR技术就是实现该操作的合适的选择。再如,美国宇航局Ames研究中心的科学家将探索的火星数据进行处理后,得到了火星的虚拟现实图像,研究人员可以看到全方位的火星表面景象:高山、平川、河流、以及纵横的沟壑里被风化的斑斑的巨石,都显得十分清晰逼真,而且不论你从哪个方向看这些图,视野中的景象都会随着你的头的转动而改变,就好像真的置身于火星上漫游。随着计算机与计算机图形学技术的发展,仿真从最早的数字仿真,发展到了今天的可视化仿真、多媒体仿真与虚拟现实仿真。虚拟现实技术是在综合计算机图形技术、计算机仿真技术、传感技术、显示技术等多种学科技术的基础上发展起来的,是九十年代计算机领域的最新技术之一。它以仿真的形式给用户创造一个反映实体对象变化与相互作用的三维图形环境,通过头盔显示器、数据手套等辅助传感设备,使人可以“进入”这种虚拟的环境直接观察事物的内在变化,并与事物发生相互作用,给人一种“身临其境”的真实感。可视化仿真技术的目标是把由数值计算或实验获得的大量数据按照其自身的物理背景进行有机地结合,用图像的方式来展示数据所表现的内容和相互关系,便于把握过程的整体演进,发现其内在规律,丰富科学研究的途径,缩短研究周期。可视化仿真就是将数据结果转换为图形或动画形式,使仿真结果可视化并具有直观性2多媒体仿真技术是指计算机综合处理各种媒体信息,包括文字、图形、动画、图像、声音、视频等,在各种信息间建立逻辑连接,并集成一个有交互功能的多媒体系统。多媒体的本质不仅是信息的集成,而且也是设备和软件的集成,并通过逻辑连接形成一个有机整体,又可实现交互控制,所以说数字化、集成性和交互性是多媒体的核心3。虚拟现实技术是指计算机产生的三维交互环境,在使用中,用户是“投入”到这个环境中去,让用户在人工合成的环境中获得“进入角色”的休验。虚拟现实技术的主要内容是:实时三维图形生成技术、多传感器交互技术,以及高分辨显示技术。在“需求牵引”和“技术推动”下,近年来虚拟现实已经取得的一些技术成果,并已集成了一些很有实用前景的应用系统,而且智能虚拟世界也在不断地发展。本课题研究的主要内容是基于Windows 7平台和OpenGL图形库,利用粒子系统的基本理论,开发一个用于模拟下雪场景的粒子系统。本课题首先通过阅读和分析大量的参考文献,总结了粒子系统的基本原理和粒子系统的基本模型。进而得出了粒子系统的通用结构,简化了雪景的数学模型,总结出了雪景和喷泉的粒子系统模型。基于OpenGL设计并实现了一个用于自然景物模拟的3D粒子特效系统,并完成了对雪花特效的实时模拟。1.3 预期读者和阅读建议本文档是针对于系统使用用户及编程人员在系统操作及编写过程中可能碰见的各种问题及如何解答,由于是该项目是我第一次进行实际粒子系统的编写,势必会有这样或那样的不足,因此系统并不一定会成为市场产品,我们的最初设想是将该粒子系统免费发布于网上,作为一种网络资源供后来者参考。阅读该文档的用户会从该文档中了解到系统开发过程中各个细节,包括粒子的分心,OPenGL渲染流程及各种系统性能的要求。对于不同的阅读用户我们提出了不同的建议如下:使用用户:通过该问题了解系统的背景及操作方法系统设计人员:这是一款初学者做的雪花粒子系统,通过这个系统我们可以了解粒子系统的创建流程及控制机制,系统信息与OPenGL的语言的响应关系及系统的编写过程中的各种细节流程,是一款不错的粒子系统使用实例。1.4 OPenGL 工作渲染流程OpenGL大多数实现都是使用相似的操作程序,这些处理步骤被成为OpenGL渲染流水线。如图1-2描述了OpenGL的渲染流水线,OpenGL使用这种方法来处理数据。几何数据(顶点、直线、多边形)经过求值程序和顶点操作,而像素数据(像素、图形和位图) 的处理过程与此不同。但最后这两种输将将经过相同的处理步骤光栅化和片元操作,然后得到的像素数据被写入到帧缓存中。客户应用程序OpenGL DLLOpenGL命令服务器DLLWin32 DLL屏幕驱动程序客户端服务端图1-1 OpenGL在Windows环境中的工作过程几何顶点数据显示列表求值程序顶点操作 图元装配图像像素数据光栅化片元操作帧缓存器像素操作纹理装配图1-2 OpenGL渲染流水线(1) 显示列表显示列表可以储存几何数据和像素数据,等到执行显示列表时再一并将数据发送出去,我们称之为间接模式。也可以立即对数据进行相应的操作和处理,这种处理模式为直接模式。显示列表在被执行时,就像应用程序中的直接模式发送一样,显示列表中存储的数据被发送出去。(2) 求值程序求值程序提供了一种根绝控制点导出描述曲面的顶点的叫多项式映射(Polynomial Mapping)的方法,可以根据控制点生成纹理坐标、颜色值和空间坐标值。(3) 顶点操作顶点操作主要负责将顶点转换成图元,对顶点数据进行矩阵变换。若使用了纹理映射,将执行纹理坐标生成并对纹理坐标进行变换。若启用光照功能,将执行光照计算,根据变换后的顶点、面法线和其他光照信息计算颜色值。(4) 图元装配图元装配的主要任务是删除集合体中位于半空间之外的部分,半空间由一个平面定义。(5) 像素操作像素操作主要执行像素缩放、偏移、映射和截取等操作,然后将其封装成合适的格式,存储到内存中。(6) 纹理装配OpenGL实现可能有提高纹理映射性能的专有资源,这种情况下酒需要设置纹理对象的优先级以控制使用这种宝贵而有限的资源。(7) 光栅化光栅化是将几何数据和像素数据转换为片元。每个片元都对应用于帧缓存中的一个像素。将顶点接成直线或者计算机填充多边形内部像素时,需要考虑直线和多边形的点画模式、线宽、点的大小、着色模型机用于支持反走样的覆盖率计算。这个阶段确定了每个片元的颜色和深度值。(9) 片元操作将片元值写入帧缓存之前,将执行一系列的操作,他们可能修改甚至丢弃片元。第一个操作可以是纹理映射,接下来执行雾计算,然后是裁剪测试、alpha测试、模板测试和深度测试,之后执行混合、抖动、逻辑运算和屏蔽。最后,经过处理后的片元被绘制到合适的帧缓存,变成像素。2 系统功能需求粒子系统理论已广泛应用于虚拟现实、游戏开发、电影特效、可视化等领域。粒子系统主要用于模拟火焰、烟火等的动态效果,光影、闪电等的特效,雪景、雨景等的降落过程,液体、气体的流动过程等。本课题研究的3D特效粒子系统主要用于常见自然景物(雪花、喷泉)的模拟,需要具备以下几点特性:(1) 场景逼真性真实感和逼真性是三维物体建模和自然景物模拟最基本和重要的特性,也是该系统的最基本要求。(2) 系统实时性由于第一个需求的存在,粒子模拟中想要得到真实度较高的渲染效果,势必爱来大量粒子在场景中存在的情况。如此带来了系统渲染效率的负担。因为只有高性能的计算,低消耗的内存,高效的处理才能连贯,逼真的模拟随机、动态变化的自然景物。(3) 用户交互性粒子系统中任一参数的改变都将可能对最终的粒子模拟效果产生极大的影响,同时由于粒子系统的特殊性,存在众多的参数设置,用户往往不能在预操作时期一次性的通过参数设置是模拟效果达到所需的最佳状态。因此,在系统的总体设计中我们需要充分的考虑人机之间的良好交互性。2.1 系统功能本系统的功能主要包括:背景音乐、雪花种类更换、雪花下降速度控制、雪花前后左右飘动控制、雪花粒子数量设置、雪花粒子大小设置等。2.2 设计和实现上的限制由于现阶段使用电脑的运行速度和内存等问题,本系统只能尽量模仿雪花效果,不能完全达到真实环境中的粒子数量.3 外部接口与运行环境需求运行环境需要在支持OPenGL的电脑上运行,需要进行OPenGL环境配置.3.1 用户界面用户运行系统程序以后,直接是可以看到的夜色背景,然后雪花从上面象下雪一样往下降,没有按钮,用户通过键盘进行控制。3.2 运行环境硬件:PC机,P4 1.7G以上,512M内存,40G硬盘,支持OPenGL的独立显卡或图形加速器。软件:Windows 7,(如需调试,需要对系统环境进行OPenGL的配置)4 其它非功能需求本系统,只对特定的键位进行响应,对按下其他键位,系统将不作出任何反应。在输入数据的地方,有提示输入范围,如果输入超出特定范围,将提示错误并重新输入。4.1 性能需求l 存储器,因为粒子数量多,所以内存和显存需求较大。l 磁盘空间,只需要10MB即可进行运行。l 因为每个粒子都是单独的处理并加以计算,所以CPU和GPU运算速度需求较大。4.2 用户文档l 安装指南,纸质文档;l 用户手册,纸质文档;l 在线帮助;l 相关电子文档,与软件产品一同分发、配置。二、概要设计报告1 引言引言是对这份软件系统概要设计报告的概览,是为了帮助阅读者了解这份文档是如何编写的,并且应该如何阅读、理解和解释这份文档。在虚拟场景中,自然景物的模拟一直是计算机图形学领域中的热点研究内容。喷泉、瀑布、火焰、水流、雨、雪等自然景物与传统的规则几何物体不同,它们拥有大量的细节信息和形状的随机变化。因此,这些自然景物的模拟相对比较困难,需要借助粒子系统建模使其充分体现自然景观中模糊物体的随机性和动态性,以便达到良好的模拟效果。粒子系统理论经历多年的发展和完善,已被广泛应用于虚拟现实、三维仿真、游戏开发、电影特效、可视化等领域。本文结合这一实际情况,以前人的研究工作为背景和基础,以真实感和系统实时性以及友好的人机交互性为目标,在深入分析粒子系统理论基础上,结合Windows 7操作系统和Microsoft VC+编译环境为开发平台,基于OpenGL图形库设计并实现了一个用于自然景物模拟的粒子特效系统,完成了雪花场景模拟。主要工作如下:(1) 深入研究粒子系统理论及其应用,详细分析粒子系统的基本原理,总结粒子系统基本模型、粒子系统通用结构和粒子系统的算法框架。(2) 简化雪景的数学模型,总结出雪粒子系统模型。(3) 设计并实现一个用于常见自然景物模拟的粒子特效系统。(4) 通过模拟雪花场景验证系统的有效性和实时性。1.1 编写目的雪花粒子系统,这款软件是利用了最新的OPenGL语言进行编写,OPenGL可以说是一款很新,很实用的语言,他完全实现了面向对象的开发环境,遵循 C+的环境的编程语言。它在雪花粒子系统中实现交互性、数据处理以及其他功能。这份文档的编写目的既是为了明确本系统开发过程中所有既定设计问题,也是为了帮助开发人员在开发过程中保证工作效率和系统内容与设计者意图一致。这份文档将对系统进行详细的说明,致力于使阅读者和用户能通过该文档对整个雪花粒子系统有一个全面的了解。1.2 预期读者和阅读建议本文档是针对于系统使用用户及编程人员在系统操作及编写过程中可能碰见的各种问题及如何解答,由于是该项目是我第一次进行实际粒子系统的编写,势必会有这样或那样的不足,因此系统并不一定会成为市场产品,我们的最初设想是将该粒子系统免费发布于网上,作为一种网络资源供后来者参考。阅读该文档的用户会从该文档中了解到系统开发过程中各个细节,包括粒子的分心,OPenGL渲染流程及各种系统性能的要求。对于不同的阅读用户我们提出了不同的建议如下:使用用户:通过该问题了解系统的背景及操作方法系统设计人员:这是一款初学者做的雪花粒子系统,通过这个系统我们可以了解粒子系统的创建流程及控制机制,系统信息与OPenGL的语言的响应关系及系统的编写过程中的各种细节流程,是一款不错的粒子系统使用实例。2 设计概述本课题研究的主要内容是基于Windows 7平台和OpenGL图形库,利用粒子系统的基本理论,开发一个用于模拟下雪场景的粒子系统。本课题首先通过阅读和分析大量的参考文献,总结了粒子系统的基本原理和粒子系统的基本模型。进而得出了粒子系统的通用结构,简化了雪景的数学模型,总结出了雪景和喷泉的粒子系统模型。基于OpenGL设计并实现了一个用于自然景物模拟的3D粒子特效系统,并完成了对雪花特效的实时模拟。2.1 设计原则和设计要求l 命名规则:在该系统的设计过程中会出现的需要命名的内容包括工程文档、类、场景元素,整体工程为“MySnow”,各个类根据不同场景不同功能以最简单英文进行命名。l 边界设计原则:整个项目有数值的输入与输出要求,针对这种情况设定数值边界为正整数。l 系统易操作性要求:在整个系统的设计过程中,各个环节都应该着重突出简单的操作提示,从而保证用户在使用系统的过程中操作简便和顺畅。l 系统可维护性要求:.对各个模块的相对独立设计保证系统修改时对整体的改动尽量减小。2.2 开发环境与平台2.2.1 硬件平台 PC机,P4 1.7G以上,512M内存,40G硬盘,支持OPenGL的独立显卡或图形加速器。2.2.2 软件平台操作系统为Windows 7操作系统,编译程序为VC+2008,编译环境:需要对系统进行OPenGL的配置。具体配置方法如下:(1)glut是一个win32 dynamic lib,先下载glutdlls37beta.zip。(2)解压后把glut32.dll放到 windows system目录下。(3) 另建目录,如 E:glut,再在E:glut下面建E:glutincludegl,把头文件glut.h放到E:glut include gl下面。(4)再在E:glut下面建E:glutlib,把glut32.lib放在E:glutlib下面。 (5)最后把glut加到工程(project)中 .3 系统逻辑设计3.1 系统架构图首先,该系统为一个运用粒子系统理论,在Windows 7平台上,基于OpenGL图形库开发,用于常见自然景物模拟的粒子特效系统,因此它应该能够较好的完成理想的景物模拟,达到用户对于雪花的模拟要求。另外,本系统也需要用数学理论解决的问题。比如,在图形模块中我们需要经常进行坐标转换,从模型坐标到全局坐标再到视点坐标,最后到单位坐标之间的转换,都牵涉到坐标的变化。要实现坐标转换,就牵涉到数学中有关矩阵的知识。鉴于以上对系统需求的分析,我们完成如图2-1所示的3D粒子特效系统架构。核心模块系统控制模块场景控制模块粒子系统管理模块图形渲染模块基础模块内存管理模块数学基础模块图2-1 3D粒子特效系统宏观框架图其中,内存管理模块和数据基础模块构成整个3D特效粒子系统的基础模块。内存管理模块监控整个程序运行期的内存分配和内存释放鞥内存操作;数据基础模块封装了基本的2D和3D几何代数操作。核心模块中,系统控制模块是唯一被授权和系统的所有模块进行交互的模块,负责对整个系统流程的控制和操作。系统启动后,系统控制模块掌握系统操纵权,由他负责调用和启动其他模块,同时负责用户和系统的交互,为用户和其他模块之间提东信息传递和相应。场景管理模块主要负责系统整个场景的管理和组织。粒子系统模块负责粒子及粒子系统的管理和组织,如粒子的删除、属性的更新和状态的更新等。3.2系统处理流程如图2-2所示,本系统主要处理流程分为以下几步:(1) 系统控制模块启动系统并对系统进行初始化;(2) 场景管理模块创建视点和视口,进行场景初始化;(3) 粒子系统广利模块创建粒子系统,初始化粒子系统的各项属性;(4) 场景管理模块创建场景节点,将粒子系统挂接到场景节点上,与场景节点相对应;(5) 图形渲染模块将需要渲染的场景数据通过OpenGL图形接口渲染成图像。图形渲染模块场景管理模块粒子系统管理模块场景管理模块系统控制模块系统启动系统初始化创建视点创建视口创建粒子系统更新粒子系统属性创建场景视点挂接粒子系统渲染场景图2-2 粒子系统流程图4 系统出错处理设计本系统,只对特定的键位进行响应,对按下其他键位,系统将不作出任何反应。在输入数据的地方,有提示输入范围,如果输入超出特定范围,将提示错误并重新输入。如果系统内部出现内存错误,系统将会自动关闭,只需要重新启动系统即可。三、详细设计报告1引言粒子系统基本原理是将大量相似的微小的基本粒子图元按照一定的规律组合起来,以描述和模拟一些不规则的模糊物体。属于粒子系统的每个粒子图元具有确定的生命值(Life)和各种状态属性(Attributes),如大小(Size)、形状(Shape)、位置(Position)、颜色(Color)、透明度(Alpha)、速度(Velocity)等。并且这些粒子都要经过“产生(Generation)”、“运动变化(Dynamics)”和“消亡(Extinction)”这么三个生命历程,所有存活着的粒子的生命值、形状大小等属性一直都在随着时间的推移而变化,其他属性都将在其限定的变化范围内随机变化,这些粒子各种属性变化就组成一幅连续变化的动态画面,从而充分模拟出了模糊物体的随机性和动态性。粒子系统理论主要基于以下的三个假设和两个机制:(1) 物质的粒子组成假设。把被模拟的模糊物体看做有限个动态变化粒子的集合,这些粒子有确定的属性,并且每个粒子都处于运动状态,粒子在空间上确定的分布范围。(2) 粒子独立关系假设。粒子的独立关系包括粒子系统中的每个粒子与场景中其他物体相交和粒子系统内部的粒子之间不相交的连个部分。(3) 粒子的属性假设。每个粒子都具有一系列的属性,主要分为质量属性、空间属性、外观属性、运动属性、生存属性等。(4) 粒子的生命机制。粒子系统中的每一个粒子都必须经历诞生、动态变化和消亡三个生命历程。(5) 粒子的运动机制。粒子在存活期间遵行被模拟的物体特性决定的运动规律。1.1 编写目的雪花粒子系统,这款软件是利用了最新的OPenGL语言进行编写,OPenGL可以说是一款很新,很实用的语言,他完全实现了面向对象的开发环境,遵循 C+的环境的编程语言。它在雪花粒子系统中实现交互性、数据处理以及其他功能。这份文档的编写目的既是为了明确本系统开发过程中所有既定设计问题,也是为了帮助开发人员在开发过程中保证工作效率和系统内容与设计者意图一致。这份文档将对系统进行详细的说明,致力于使阅读者和用户能通过该文档对整个雪花粒子系统有一个全面的了解。1.2 预期读者和阅读建议本文档是针对于系统使用用户及编程人员在系统操作及编写过程中可能碰见的各种问题及如何解答,由于是该项目是我第一次进行实际粒子系统的编写,势必会有这样或那样的不足,因此系统并不一定会成为市场产品,我们的最初设想是将该粒子系统免费发布于网上,作为一种网络资源供后来者参考。阅读该文档的用户会从该文档中了解到系统开发过程中各个细节,包括粒子的分心,OPenGL渲染流程及各种系统性能的要求。对于不同的阅读用户我们提出了不同的建议如下:使用用户:通过该问题了解系统的背景及操作方法系统设计人员:这是一款初学者做的雪花粒子系统,通过这个系统我们可以了解粒子系统的创建流程及控制机制,系统信息与OPenGL的语言的响应关系及系统的编写过程中的各种细节流程,是一款不错的粒子系统使用实例。2 系统详细设计2.1 粒子系统通用结构本文的粒子系统主要用于模拟各种常见的自然景观和常见的景物。由于被模拟的各种景物有着不同的形状和物理特性,使得模拟景物采用的粒子系统模型、粒子系统的属性结构以及粒子的绘制方法等都有所差异。但粒子系统理论也决定了这些不同的粒子系统之间也还存在着一些相同的框架和结构,把这些相同的框架架构抽去出来,就形成粒子系统 的通用结构。在进行具体的景物模拟时,我们在粒子系统通用结构的基础上派生出各个粒子系统具体结构。粒子系统的通用结构如图3-1所示,粒子系统大体由粒子管理、粒子存储和粒子渲染三个部分组成。粒子系统粒子的管理粒子的存储粒子的渲染粒子的生存粒子的动态变化粒子的诞生粒子的消亡全局作用局部作用重力作用风力作用其他作用扩 展对 流能量交换图3-1 粒子系统通用结构其中,粒子的生存是指粒子的生命更新,包括粒子的诞生和粒子的死亡;粒子的演变主要包括粒子的形状变化和粒子的运动状态更新。而粒子的形态变化和运动状态更新主要取决于所受的影响作用,我们可以将粒子系统中对粒子的影响作用分为全局作用和局部作用两大类:(1) 全局作用粒子系统作为一个整体要受到的影响和受力称为全局作用,如重力作用,风力作用等全局作用力。这类的作用相对简单一些,它对粒子系统中的每一个粒子影响相同。假设某不规则模糊物体受到一个全局作用的影响,那么模拟该物体的粒子系统中的每一个粒子都要受到同样方向、同样大小的作用力。(2) 局部作用局部作用主要针对粒子系统中的单个粒子而言,它对于物体整体没有意义的。以火焰粒子为例,如果某个火焰粒子正处于粒子系统的高密度区,根据分子运动的原理,它会向低密度区扩散。还有,各个粒子之间相互碰撞会使粒子间产生能量的交换,这也属于局部作用。2.2粒子系统的算法框架第二章中已经对粒子系统的基本理论进行了详细的阐述,并对粒子系统的基本模型作了深入的分析。我们知道粒子系统中每个粒子都必须经历诞生、动态变化、消亡三个生命历程,粒子系统的算法框架如图3-2所示。N帧启动产生并初始化粒子粒子死亡更新粒子状态删除粒子渲染粒子帧结束Y图3-2 粒子系统算法框架在每一帧一般由如下处理步骤:(1) 粒子系统中诞生一些新的粒子,并赋予其初始属性;(2) 遍历粒子,销毁粒子系统中生命值到期的粒子;(3) 更新被保留的粒子的属性状态;(4) 渲染存活的粒子。2.3雪花模型分析雪花在空中漫天飞舞,其形状各有不同,有六角形的,有如鹅毛般片状的,给人的感觉是整个天空飞舞着大小不同、形状各异的雪花。而且近处的雪花要分布稀疏一点,远处的雪花要小要分布要稍微稠密一些。雪花整体方向是往下落,但受风力的影响,随处飘荡,有些则悠然而逝。雪景主要有以下几个模拟时需要注意的重点:(1) 雪花充满整个场景;(2) 雪花的形状和大小不尽相同;(3) 因为受到各种力(空气阻力,重力,风力等)的影响,雪花会随处飘荡;(4) 由于受力大小不一样,不同的雪花下降的速度不一样;(5) 风的大小和方向是随机变化的;(6) 远处雪花看起来形状更小、下落速度慢、飘荡幅度小,分布稠密。2.4 雪花粒子的属性从第二章所阐述的粒子理论中我们知道粒子的属性一般包括空间位置属性、外观属性、运动属性、生存属性等,下面结合上一节的雪景模拟分析,从粒子的属性各个角度出发,定义雪花粒子的属性。(1) 空间位置属性空间位置属性包括初始空间坐标和方向等。结合人眼的视觉感知特点和系统的实时性,我们用区域盒的方法来表示雪花粒子的分布范围,将雪花粒子分布在视锥体内,通过随机函数确定每个雪花粒子三维空间位置。这样使得缩减之处都有雪花,给人一种沉浸在漫天雪花飞舞的空间的感觉。为了简化计算,在不影响图形真实感的前提下,分布区域可用视点前的一个长方体代替,该长方体的某个面的法向量穿过视点,而粒子的初始分布区域为长方体中与XOZ面平行的一个表面,其法线朝下,分布区域示意图如图3.3所示,其中阴影区域为初始位置分布区域。设为第个粒子空间初始坐标,则有: (3-1)其中,是上均匀分布的随机函数,、分别是轴、轴、轴方向用来确定粒子分布区域的常数。(2) 外观属性粒子的外观属性主要包括形状、大小、颜色等。雪花粒子的形状大小和粒子的数量很大程度决定了下雪模拟的逼真度。为了减少系统的计算,可以采用点元或者三角形来描述ZY雪花粒子分布区域视点X图3-3 雪花粒子分布区域示意图雪花,雪花粒子的大小可变。由于我们平时见到的雪花是纯白色的,因此,雪花粒子的颜色也只能为纯白色,透明度为不透明。(3) 运动属性运动属性是指雪花粒子的初始速度。雪花粒子的初始速度的大小为: (3-2)雪花粒子运动的初始方向与重力的方向相同,当有风时,雪花粒子运动的初始方向为重力方向和风向叠加。(4) 生存属性粒子的生存属性即指粒子存活与否的条件,约束雪花粒子存活与否的条件主要有粒子的生存周期和粒子的寿命。雪花在整个场景模拟过程中在不断运动和变化,其中雪花粒子的空间位置也在不断变化。粒子寿命结束的条件为粒子的空间位置超出了粒子的分布区域范围。如果粒子的生存周期到期或者粒子运动时其空间位置超出了其分布区域范围,则停止对该粒子的计算和绘制。再次诞生新的粒子时并随机的分布在其初始分布区域内5。2.5雪花粒子的运动模型雪花在三维空间中运动,按照牛顿运动规律,雪花的运动模型可用公式3-3表示: (3-3)其中,为粒子的加速度,为粒子的速度,为其位置。,分别为初始速度和位置。为了简化计算,我们采用等加速度运动来简化雪花粒子的运动模型,由公式3-4表示: (3-4)其中,和分别是时刻粒子的速度和粒子的空间位置,和为前一时刻粒子的速度和空间位置,为时间间隔。为了表示风力对雪花的影响,我们在每个方向上加了一个正弦旋转量,用公式3-5可表示。 (3-5)其中,为常数,表示旋转量的振幅;表示粒子不加旋转量时的位置在方向上的坐标分量,表示粒子加了旋转量之后的位置在方向坐标分量;为第帧的相位角,其值由下式得出: (3-6)为相位角增量,的初始值为,为之间的随机数。四、软件测试报告1 引言1.1 目的为了尽可能的找出软件的不足,提高软件的质量,促进软件的成功验收,专门制定了本大纲。其主要目的在于为所要进行的测试工作制定各种必要的准则和规范,以及在有关方面协议的基础上对测试工作进行合理组织与管理。2 测试条件1. 测试硬件环境设计为个人PC机,系统配置为P4 2.2.Ghz;512MB内存,独立显卡或图形加速卡。2. 测试软件环境(1)操作系统 Windows XP SP2 (2)支撑软件:Adobe flash player10;3 测试计划3.1 人员计划陈真旭3.2 进度计划按照系统设计,逐个实现和使用系统功能。表4-1 测试进度计划表功能描述雪花降落、音乐播放、风速调节、远近感觉、粒子参数设置用例目的测试各功能是否正常前提条件运行系统,进入到系统界面输入/动作期望的输出/相应实际情况运行系统后按下F1键系统窗口显示雪花粒子慢慢下降画面系统窗口显示雪花粒子慢慢下降画面运行系统过程中按下LEFT键系统窗口显示雪花粒子下降向左偏移系统窗口显示雪花粒子下降向左偏移运行系统过程中按下RIGHT键系统窗口显示雪花粒子下降向右偏移系统窗口显示雪花粒子下降向右偏移运行系统过程中按下UP键系统窗口显示雪花粒子下降速度减慢系统窗口显示雪花粒子下降速度减慢运行系统过程中按下DOWN键系统窗口显示雪花粒子下降速度加快系统窗口显示雪花粒子下降速度加快运行系统过程中按下W键应该让用户感觉向前移动应该让用户感觉向前移动运行系统过程中按下S键应该让用户感觉向后移动应该让用户感觉向后移动4 总体测试方案首先要完成的雪花下落功能测试。其次是系统的性能测试。性能指标包括:雪花粒子控制,雪花贴图控制,雪花粒子数量,雪花粒子大小等等。5 系统测试内容5.1 系统测试任务5.1.1 任务说明通过测试找出系统的不足以及可能存在的隐患,并作记录,方便开发人员进行修改和改进。5.1.2 通过准则雪花粒子系统的各项功能和性能指标均达到或超过需求概要设计说明书的标准。5.1.4 测试用例及测试步骤(1) 测试用例表4-2 测试用例表功能描述雪花降落、音乐播放、风速调节、远近感觉、粒子参数设置用例目的测试各功能是否正常前提条件运行系统,进入到系统界面输入/动作期望的输出/相应实际情况运行系统后按下F1键系统窗口显示雪花粒子慢慢下降画面系统窗口显示雪花粒子慢慢下降画面运行系统过程中按下LEFT键系统窗口显示雪花粒子下降向左偏移系统窗口显示雪花粒子下降向左偏移运行系统过程中按下RIGHT键系统窗口显示雪花粒子下降向右偏移系统窗口显示雪花粒子下降向右偏移运行系统过程中按下UP键系统窗口显示雪花粒子下降速度减慢系统窗口显示雪花粒子下降速度减慢运行系统过程中按下DOWN键系统窗口显示雪花粒子下降速度加快系统窗口显示雪花粒子下降速度加快运行系统过程中按下W键应该让用户感觉向前移动应该让用户感觉向前移动运行系统过程中按下S键应该让用户感觉向后移动应该让用户感觉向后移动(2)测试步骤 按使用说明书运行系统,按照测试用例表逐项进行测试。 5.1.5 测试结果(1)软件能力:经过测试,表明系统已经达到设计所要求的功能及性能。(2)建议:可以增加雪花堆积效果。(3)测试结论:本系统已经通过测试,并能到达设计要求,通过测试。7 性能测试内容(1) 测试系统的功能是否按照系统概要设计说明书开发,能否实现系统概要设计书所要求达到的性能指标。(2) 测试雪花粒子系统运行时,当粒子数量设置为最大数量时,看系统反应速度,是否能正常运行,对电脑资源占用是否过大。(3) 测试雪花粒子系统运行时,风速的设定功能是否正常,还有系统的远近功能既用户和系统之间的交互功能是否正常,是否能产生真实感。五、用户操作手册1引言粒子系统基本原理是将大量相似的微小的基本粒子图元按照一定的规律组合起来,以描述和模拟一些不规则的模糊物体。属于粒子系统的每个粒子图元具有确定的生命值(Life)和各种状态属性(Attributes),如大小(Size)、形状(Shape)、位置(Position)、颜色(Color)、透明度(Alpha)、速度(Velocity)等。并且这些粒子都要经过“产生(Generation)”、“运动变化(Dynamics)”和“消亡(Extinction)”这么三个生命历程,所有存活着的粒子的生命值、形状大小等属性一直都在随着时间的推移而变化,其他属性都将在其限定的变化范围内随机变化,这些粒子各种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论