1、毕业论文 ( 设计 ) 文献综述 计算机科学与技术 OpenGL 及其粒子系统 引言 随着电脑进入千家万户,人们对电脑游戏的要求也越来越高,而 3D 游戏正满足人们对这方面的需求。人们对游戏的画面,动画的逼真度,易操作性以及游戏的思想,故事情节越来越重视。许多大型的 3D 游戏大部分都产自国外,而国内目前对 3D 游戏的制作还不成熟,特别是一些游戏画面的逼真度,还有游戏的制作思想 ,以及游戏的可玩性都尚有不足。目前使用 OpenGL1实现其游戏画面方面的效果还是主流之一。 OpenGL 中在 3D 场景中的爆炸、燃烧、喷泉、水流等等都是 基于“粒子”算法 2的,基本原理是用大量的粒子对仿真对象
2、的流体力学原理进行模拟。粒子系统 3方法被认为是迄今为止模拟不规则物体最为成功的一种图形生成算法。 正文 OpenGL 作为一个性能优越的图形应用程序设计界面( API)适应于广泛的计算机环境,从个人计算机、工作站、超级计算机, OpenGL 都能实现高性能的三维图形功能。由于许多在计算机界有领导地位的计算机公司纷纷采用 OpenGL 作为三维图形应用程序设计界面,OpenGL 应用程序具有 了 广泛的移植性。 OpenGL 有八大特点:标准化、图形质量高,性能好、稳定、可靠和可移植、可扩展、可缩放、易用、灵活。 OpenGL 有七大功能: 1、 建模: OpenGL 图形库除了一个基本的点、
3、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体等),以及复杂曲线和曲面绘制函数。 2、 变换: OpenGL 图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比、镜像 4 种变换,投影变换有平行投影和透视投影 2 种变换。 3、 颜色模式设置: RGBA 模式和颜色索引模式 。 4、 纹理映射:利用 OpenGL 纹理映射功能可以十分逼真的表现物体表面细节。 5、 光照和材质设置: OpenGL 光有辐射光、环境 光、漫反射光和镜面光。材质是用光反射率来表示。场景中物体最终反映到人眼的颜色是红、蓝、绿分量与材质红、蓝、绿分量的反射率相乘后形成的颜色。 6、 双缓存动
4、画:双缓存即前台缓存和后台缓存。后台缓存计算场景,生产动画,前台缓存显示后台缓存已经画好的画面。 7、 特殊效果:利用 OpenGL 还能实现深度暗示、运动模糊、融合、反走样和雾等效果。运动模糊和绘图方式,模拟物体运动时人眼观察时感觉的动感现象。深度域效果类似于照相机的镜头效果,模型在聚焦点处清晰,反之则模糊。 粒子系统方法的基本思想是将许多形状简单的微小粒子作为基本元素 聚集起来,形成一个不规则的模糊物体,从而构成一个封闭的系统 粒子系统。粒子系统并不是一个简单的静态系统,随着时间的推移,系统中已有的粒子不仅不断改变形状,不断运动,而且不断有新的粒子加入,并有旧的粒子消失。 这是 模拟生长和
5、死亡过程。同时,为使粒子系统所表示的景物具有良好的随机性,与粒子有关的每一个参数均将受到一个随机过程的控制。粒子系统方法的这一特征,使他充分体现了不规则模糊物体的动态性和随机性,很好的模拟了火、云、水、森林和原野等自然景物。生成粒子系统某一瞬间的画面的基本步骤是: ( 1) 生成新的粒子并将其加入系 统中 ( 2) 赋予每一新粒子以一定的属性 ( 3) 删除那些已经超过其生命周期的粒子 ( 4) 根据粒子的动态属性对粒子进行一定和变换 ( 5) 绘制并显示由有生命的粒子组成的图形 粒子系统基本原理: 给出粒子中心点的坐标和粒子的大小,则很容易计算出粒子所需要的 4 个顶点的位置坐标。粒子系统由
6、大量的粒子构成。每个粒子具有一组属性例如位置大小、纹理颜色、透明度、运动速度、加速度、生命周期等属性。粒子属性的初始值通常由随机属性产生。粒子往往由位于空间某个位置的粒子源产生。 粒子系统 在 计算机图形学中已经使用了数十年之久。在这段时间里由里维斯 4奠定的 基本范式取得了微小的变化 。典型 粒子系统具有粒子源、微粒 ,并且影响作用力粒子 。 围绕着 典型 粒子系统 运动的粒子产生的动画 趋向于静态 ,因为 粒子组 的固定,所以 静 态粒子 的 的运动轨迹是不会改变 的 。通常 ,这 样的 动画 看起来很虚伪,没有真实感 。用传统的方法 建立 令人 可信的粒子特效 ,那得 需要 有 专用软件
7、和足够的艺术洞察力 去 克服经典粒子系统的局限性。相反 ,二阶粒子系统 5生成 的 程序 能有效的感知到非 静态 的 粒子组 , 动画师不需要手动 地去推动 每一个 粒子组 的行为。 典型的粒子系统没有足够 多 的力量 去 创造生动活泼的、有机 化 的动画。 在于它 使用 预先计算好的 动画代替实时 的粒子特效 。然而 ,这种方法有严重的缺陷 :分辨率 的泄露 ,缺乏第三维度和无法应对一个交互式的环境。这个问题 主要表现在 具有有效的 力 只有在宏观 层面对粒子起作用 。通过增加漩涡能使动画更加现实 , 但是他们必须 是动态的, 固定涡流看起来不会很逼真。因为 涡流中的 粒子的行为取决于环绕着
8、它的许多粒子 以及粒子系统 。举个例子 ,一个漩涡 系统 可以放出更多的 粒子流, 当有许多普通粒子 在它的 周围 ,它会接受其他粒子系统的粒子,从而达到一个互动。例如: 传统的粒子系统 制作的传统火焰特效 6以及 类似的 火焰特效的 最大的问题就是它们 不是动态 的, 火焰粒子来源于一定区域 ,并简单地飞到给定的方向。 如果 增加了涡流系统 7。 那么 火漩涡让人可以看到自然火 一样的有机 效果 ( 火焰分配不均 ,更多的随机运动 ,以及 火簇的窜动) 。 条理性的添加 漩涡 与火焰一起运动 使动画看起来 更可信 8,更加接近于自然火 ,比 传统的粒子系统 做的火明显更好看,更逼真 。 粒子
9、 是一个 没有体积或内部结构 的点物 。粒子有共同的性质 ,如面积和质量。每个粒子属于一个系统。在粒子系统 中 , 粒子组 是一种特殊的粒子 他们可以像普通粒子 一样 被 创建和删除 ,但 是他们有能力影响其它粒子的运动轨迹。 粒子系统 中粒 子组 和粒子源都受到 粒子系统 的影响 ,这样的 粒子 系统 将 更加动态。一个粒子可以有任意的内在逻辑指定它如何 影响 粒子组 和其他行为 9(包括去创造新的粒子系统和删除现有的粒子 )。每个 粒子组 只能属于一个类别 (重力、电、磁等 ),但是几个力 的种类 可以属于一个范畴。 粒子系统 的 新 概念 10是 粒子组之间 的相互影响 。这个特点使得全
10、新的 特效 的 产生 。它也反映了几个自然现象的 形成方式 :例如 ,火焰的爆炸, 就是 使 很多 新的小涡流出现在一个强大的涡流的边缘 并且像 液体 一样 流动。 通过区别不同类别的力( 引力、电互动、磁交互等 ) 我们能够更好的控制动 画。利用不同的 力的 类别 ,我们可以选择性 地应用 粒子组 。例如 ,我们可以利用这一特点 使 火微粒 顺风 漂浮向上 (粒子与消极的重量和大面积 ),而雨粒子较快地 落 到地面 (重型粒子与小面积 )。 总之, OpenGL 和粒子系统不管是在影视动画还是 3D 游戏方面,都有着非常广泛的应用。今天在这做这样一个介绍,是希望有更多的同学来关注和了解他,对
11、他有一个初步的认识。并希望有更多的新奇的想法应用到 OpenGL 和粒子系统当中。 参考文献 1 徐明亮,卢红星,王婉。 OpenGL 游戏编程 M。 机械工业出版 ,2008 2 鲍虎军,计算机动画的算法基础 M。 杭州:浙江大学出版社, 2000:270-272. 3 徐烈辉, 粒子系统的基本 理论及其应用 J。电脑与信息技术第 13 期, 2009 4 里 维 斯 W. T.,粒子系统 技术一类 的 模糊对象建模 J. 计算机图形学 第 十七期 ,1983,359 - 376 5 Tommi Ilmonen, Janne Kontkanen.The Second Order Partic
12、le SystemJ.The Journal of WSCG,UNION Agency - Science Press,2003,11(2):240 247 6 Lamorlette A.,Foster N.,Structural modeling of flames for a production environmentJ. Computer graphics and interactive Techniques,2002:729-735 7 Reynolds G., Flocks herds and schools A distributed behavioral modelJ.Comp
13、uter graphics and interactive techniques,1987:25-34 8 Karl Sims. Particle Animation and Rendering Using Data Parallel ComputationJ.Computer Graphics and Interactive Techniques,1990:405-413 9 Wejchert ,Haumann ,Animating Aerodynamics, SIGGRAPH Computer Graphics J.1991:19-22 10 Burg, J. v.a., Building an Advanced Particle SystemJ. Game Developer,2000:44-50