基于粒子系统喷泉实现论文内容摘要:
几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。 实用函数库是比核心库更高一层的函数库,它提供四十多个函数, 这些函数都以“ glu” 为前缀。 由于 OpenGL 是一个图形标准,是独立于任何窗口系统或操作系统的,在 OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。 这类函数以 “ aux” 作为前缀。 MFC MFC 简单来说就是 VC 的类库,是一个编程框架 [5]。 MFC( Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上 来建立 Windows 下的应用程序,这是一种相对 SDK 来说更为简单的方法。 从总体上来看, MFC 框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。 Microsoft Visual C++提供了相应的工具来完成这个工作: AppWizard 可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口; Class Wizard 用来协助添加代码到框架文件;最后编译,则通过类库实现了应用程序特定的逻辑。 构成 MFC 框架的 是 MFC 类库。 MFC 类库是 C++类库。 这些类或者封装了 Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了 OLE 特性,或者封装了ODBC 和 DAO 数据访问的功能等等。 MFC 抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。 这些类系统相关技术与原理 8 中,最重要的类是 CObject 和 CCmdTarget。 CObject 是 MFC 的根类,绝大多数 MFC类 是其派生的,包括 CCmdTarget。 CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持等。 所有从 CObject 派生的类都 将具备或者可以具备 CObject 所拥有的特性。 CCmdTarget 通过封装一些属性和方法,提供了消息处理的架构。 MFC 中,任何可以处理消息的类都从 CCmdTarget 派生。 针对每种不同的对象, MFC 都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。 这些对象包括以下种类:窗口对象,基类是 CWnd;应用程序对象,基类是 CwinThread;文档对象,基类是 Cdocument 等。 MFC 以 C++为基础,自然支持虚拟函数和动态约束。 但是作为一个编程框架,有一个问题必须解决:如果仅 仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。 例如, CWnd 封装 Windows 窗口对象时,每一条 Windows消息对应一个成员函数,这些成员函数为派生类所继承。 如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。 于是, MFC 建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。 这样,通过虚拟函数和消息映射, MFC 类提供了丰富的编程接口。 程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入 MFC 的编程框架。 MFC 编程框架将在适当的 时候、适当的地方来调用程序的代码。 如前所述, MFC 实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。 这样封装的结果对程序员来说,是一套开发模板(或者说模式)。 针对不同的应用和目的,程序员采用不同的模板。 例如, SDI 应用程序的模板, MDI 应用程序的模板,规则 DLL 应用程序的模板 [6],扩展 DLL 应用程序的模板, OLE/ACTIVEX 应用程序的模板等。 为了支持对应用程序概念的封装, MFC 内部必须作大量的工作。 例如,为了实现消息映射机制, MFC 编程框架必须要保证首先得到消息 , 然后按既定的方法进行处理。 又如,为了实现对 DLL 编程的支持和多线程编程的支持, MFC 内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。 虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解 MFC 内部机制有助于写出功能灵活而强大的程序。 总之, MFC 封装了 Win32 API, OLE API, ODBC API 等底层函数的功能,并提供更高一层的接口,简化了 Windows 编程。 同时, MFC 支持对底层 API 的直接调用。 MFC 提供了一个 Windows 应用程序开发模式,对程序的控制主要是由 MFC 框 架系统相关技术与原理 9 完成的,而且 MFC 也完成了大部分的功能,预定义或实现了许多事件和消息处理等。 框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。 MFC 是 C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。 例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。 实现这种功能的基础是 C++对继承的支持,对虚拟函数的支持,以及 MFC 实现的消息映射机制。 本章小结 本章主要介绍了图形的几何变换原理的二维和三维变换等 ; DirectX 与 OpenGL 两种不同的函数库,提供的 API。 两者不同的编程模式的效果是相同的。 主要介绍了他们的函数库及功能等 ; 要求掌握 MFC,它是一个编程框架。 提供 VC 的类库 等。 粒子系统基本原理 10 3 粒子系统基本原理 本章主要 介绍 粒子系统在国内外的研究现状,并能够掌握粒子系统原理,熟悉常见的几种粒子运动模型及 粒子系统的 构成。 为喷泉模型的设计和实现做技术支撑。 认识纹理映射技术在三维模型中的应用重要性。 粒子系统的简介及国内外研究现状 (1) 粒子系统的简介 粒子系统用于各种动画任务。 主要是在使 用程序方法为大量的小型对象设置动画时使用粒子系统,例如,创建暴风雪、水流或爆炸。 3ds max 提供了两种不同类型的粒子系统:事件驱动和非事件驱动。 事件驱动粒子系统,又称为 粒子流 ,它测试粒子属性,并根据测试结果将其发送给不同的事件。 粒子位于事件中时,每个事件都指定粒子的不同属性和行为。 在 非事件驱动粒子系统 中,粒子通常在动画过程中显示类似的属性。 重要信息:粒子系统可以涉及大量实体,每个实体都要经历一定数量的复杂计算。 因此,将它们用于高级模拟时,您必须使用运行速度非常快的计算机,且内存容量尽可能大。 另外,功能强大的图形卡可以加快粒子几何体在视口中的显示速度。 而且,该图形卡仍然可以轻松加载系统,如果碰到失去响应的问题,请等待粒子系统完成其计算,然后减少系统中的粒子数,实施缓存 或采用其他方法来优化性能。 如果要访问 3ds max 中大量的粒子系统,则需要确定特定应用程序所要使用的系统。 通常情况下,对于简单动画,如下雪或喷泉,使用非事件驱动粒子系统进行设置要更为快捷和简便。 对于较复杂的动画,如随时间生成不同类型粒子的爆炸(例如: 碎片、火焰和烟雾),使用“粒子流”可以获得最大的灵活性和可控性。 (2) 粒子系统的国内外研究现状 国外的研究始于 80 年代初期,由 Reeves W. 1983 年首次提出粒子系统模型,并用其模拟了焰火、爆炸等效果 [7],他还成功的利用该模型模拟了 电影《 AR TREK I: The Wrath of Khan》中的一系列特技镜头。 1985 年 Reeves W. Blau 发展了粒子系统,他们用 “ volume filling” 基本单元模拟生成那种随时间改变形状,但又基本保持不变的实体,如随风飘动的花草树叶。 此后从理论到技术都得到了进一步发展 : Reeves W. 制的算法,称之为 “ 近似概率算法 ” , 用于解决阴影、可见面问题,且取得了很好的效粒子系统基本原理 11 果。 Fournier ,提出了浪花的产生条 件—— 粒子运动速度和海流曲面传播速度之间的差异要超过一定的条件,即粒子运动速度与海浪曲面传播速度之间的差异要超过一定的阀值 [8],否则产生泡沫。 Karl Sims 研究了粒子的动画及绘制算法,他利用粒子系统的并行特点,提出了一个并行的粒子绘制系统,该系统能绘制不同形状、大小、透明度的粒子,并能进行反走样、消隐、运动模糊的处理。 Reed 等人用粒子系统成果的模拟了闪电。 Reynolds 在其群体行为研究中,又极大的扩展了粒子系统的功能,并将其作为一种建模工具,他提出了粒子间相互结合的思想,从而使粒子与粒子之间进行交 互,并阐明利用大量的简单图元间的交互作用可产生复杂的行为。 Milleramp。 Pearce、 Tonnesen 等人开发了双粒子系统来模拟像流体一样的或溶化的物质。 David E. Breen 利用 “ 交互粒子 ” 模拟了布匹、织物。 再如大家非常熟悉的三维动画制作的最新软件 3DS MAX 就载有 “ Spray” 和 “ Snow” 两个粒子系统来模拟喷射的火花、飘舞的雪花、飞扬的尘埃等特殊效果, 3DS MAX 还有带有两个外挂模块 “ Sand Blaster” 和 “ All Purpose Particles” , 用来创建气泡、焰火、冲击波等动态 图像。 总之,粒子系统能够创建各种动画效果。 国内近年来有许多大学对粒子系统模型进行了研究、探索和应用,并取得了一定的成果。 例如,徐迎庆等人利用粒子系统模拟了水面溅起的水沫以及流水与石头碰撞后产生的水花等效果;宋万寿等人在 IBM PC386 机上开发了基于粒子系统方法的焰火及树木模拟实验系统等。 国内的研究虽然取得了一定的进展,但采用粒子系统有效地模拟模糊景物的论文并不多,需要进一步开发、研究与实现。 总而言之,粒子系统为如何模拟具有复杂结构及复杂运动的物体提供了一个简洁、抽象的描述。 用它所创建的动态模糊效果是其 他图像生成技术难以达到的。 但迄今为止,所考虑的都是单个粒子的运动,对物体的模型也作了许多假设。 至于粒子间的相互作用、碰撞检测等都未深入涉及。 另外,利用 3DS MAX 制作的烟火、浪花,其效果还不太理想,需要将粒子系统与其他方法想结合,开发出更新更好的算发,这些都是今后的研究方向之一。 粒子系统的基本原理 基本原理 给出粒子中心点的坐标和粒子的大小,则很容易计算出粒子所需要的 4 个顶点的位置坐标。 粒子系统由大量的粒子构成。 每个粒子具有一组属性例如位置大小纹理颜色透明度运动速度加速度生命周期等属 性。 粒子属性的初始值通常由随机过程产生。 粒子系统基本原理 12 粒子往往由位于空间某个位置的粒子源产生。 一个粒子系统是随时间不断变化的,在生命期的每一刻都要完成以下 4 步工作。 (1) 粒子源产生新粒子:产生一定数目的新粒子,其初始属性由随机过程控制。 每个粒子可以具有一个生命期,如果某些粒子不应删除,则可以赋予他们无限长的生命期。 (2) 更新现存粒子的属性:例如粒子有位置和速度属性,就需要根据粒子原来的位置速度和流逝的时间计算粒子的新位置。 (3) 删除已经死亡的粒子:检查所有粒子的生命期如果法线某粒子已经死亡 则将该粒子从粒子系统中删除 (4) 绘制粒子:将粒子系统中所有的粒子绘制出来,得到所需要的视觉效果 常见的粒子运动模型 粒子运动中粒子产生的时候都具有一定的初始属性,粒子作为质点,按照动力学的规律进行运动。 以下是几种常见的运动形式 [9]: (1) 直线运动 , 粒子的位置和速度变化遵循下面的原则如 ( 公式 31) 所示 : P=P0+∫ Vdt, V=V0+∫ adt ( 公式 31) 其中 P 为粒子位置, P0为粒子初始位置, V为粒子速度, V0为初始速度, a为粒子加速度。 (2) 阻尼运动 , 在当前运 动方向上的粒子根据阻尼的作用,其速度根据某种比例减少,一般取值如 ( 公式 32)所示: V=V0( 1d△ t) ( 公式 32) 其中 d 为阻尼运动的阻尼因子, d=[0, 1]。 (3) 螺旋运动 , 螺旋运动能按照给顶轴进行旋转,以产生粒子的翻滚等效果,使速度方向发生改变。 (4) 反弹运动 , 反弹运动能改变粒子运动速度的大小与方向。 对于无能量损失的反弹运动,类似于光的反射,如 (公式 33)所示: V0=V2( V0 N) *N ( 公式 33) 其中 N 为反射面的方法向量。 粒子系统的构 成 (1) 发射器(枪) 发射器好比一把的枪,粒子往往是由这把枪产生并发射的,发射器将每个粒子的粒子系统基本原理 13 参数初始化,并且提供所有粒子共同的属性参数(将粒子的共同属性保存在发射器而不是每个粒子里面会很大的节省内存空间)。 发射器的一个重要参数是每个粒子的初始位置,一般而言,可能用到的发射器有点发射器(每个粒子都是从同一点发射),比如爆炸的火花,喷泉等,如果粒子的产生有一定的范围,那就需要矩形发射器 [10],定义一个确定的长宽,粒子在这个矩形范围内随机生成。 比如一片沼泽中的雾气,一片区域中。基于粒子系统喷泉实现论文
相关推荐
标准埋设,选位 适宜。 拖拉绳与地面夹角不宜大于 45。 ,如条件有限应适当加深地锚埋设深度以增大垂直方向的压力。 起重用钢丝绳可以卡接,卡子方向应一致,间距为 5— 6倍, u 形螺栓扣在钢丝绳的尾端,压板应压在受力绳上。 绳索 (千斤绳 )两头搭接长度应不少于 1 5 倍,且不得短于 300mm。 房县大木 镇盛世佳苑工程 TC5710 型塔式起重机安装使用登记资料 22
1 Pe( K W) Ljs( A) 总进线 36 WE1 WE2 [键入文字 ] 25 WE3 WE4 WE5 WE6 WE7 15 WE8 15 表 212 AT1负荷计算结果 AT2 Pe( KW) Ljs( A) 总进线 13 WE1 13 表 213 AT2负荷计算结果 供电系统中断路器的选择 断路器概念 断路器是控制电流通断的设备,主要用于对线路及设备的保护,当电 路中出现过载、短路
..............................................................181 . 培训课程学员签到表 ................................................................................182 . 培训课堂日志 ............................
保 护在空间上、时间上所作的总体安排和布局,是国家实行土地用途管制的基础。 2 城镇体系 : 是指一定区域范围内在经济社会和空间发展上具有有机联系的城镇群体。 2 交通量 : 在指定时间内通过道路某地点或某断面的车辆、行人数量。 2 城市道路(交通)规划 : 确定公路和城市道路交通建设的发展目标,设计达到这些目标的策略、过程和方案。 2 城市道路(干道)网密度 :
怀揣着为四年大学生活画上最浓重一笔的愿望和儿时最初的梦想,来到了我的目的地 —— 县镇中学。 短短的一个月却让我经历了不寻常的人生,体验到了所谓的酸甜苦辣。 的确实习生活是快乐并痛苦的,有晴天,有阴天,甚至偶尔暴风骤雨。 一个月的感触很多很多,浓缩一下是一下几种心 情 : 紧张无错 九月一号下午来到镇中学,第二天即九月二号就给我们安排了各自的教学任务。