游戏开发设计火焰与爆炸文档格式.docx
- 文档编号:17609846
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:7
- 大小:189.61KB
游戏开发设计火焰与爆炸文档格式.docx
《游戏开发设计火焰与爆炸文档格式.docx》由会员分享,可在线阅读,更多相关《游戏开发设计火焰与爆炸文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
第三部分介绍了实现三维图形效果的方法,包括各种粒子、爆炸、投射、炫光、三维水体及顶点和像素的消隐等。
《DirectX特效游戏程序设计》叙述深入浅出,代码举例丰富而精炼,读者可在其指导下迅速上手掌握DirectX特效游戏程序设计的基本方法。
《DirectX特效游戏程序设计》适合各种水平的编程人员学习和参考。
1、作品原理内容简述
Reeves在1983年首次提出粒子系统的概念,它是一种很有影响的模拟不规则物体的方法,与传统的图形学方法完全不同,这种方法充分体现了不规则模糊物体的动态性和随机性,能够很好的模拟比如爆炸、火焰、喷泉、巨浪等场景,用粒子系统进行字幕的爆炸特效制作是字幕制作近年来的一个热点和难点。
在采用粒子系统来模拟这些碎片时,为了充分考虑到图象的绘制和实时动态效果,采用了两级粒子的方法,并利用VisualC++编程环境,在字幕机中得到了比较真实的爆炸效果。
1粒子系统方法基本原理
粒子系统方法的基本思想是将许多简单形状的微小粒子作为基本元素聚集起来,形成一个不规则的模糊物体,从而构成一个封闭的系统——粒子系统。
随着时间的推移,系统中的粒子不断变化、运动,而且不断有新的粒子加入并有旧的粒子消失。
生成粒子系统某瞬间的画面的基本步骤是:
(1)生成新的粒子并将其加入系统中。
(2)赋予每一新粒子以一定的属性。
(3)删除那些已经超过其生命周期的粒子。
(4)根据粒子的动态属性对粒子进行移动和变换。
(5)绘制并显示由有生命的粒子组成的图形。
1.1粒子的产生
粒子的产生用随机函数控制,对每一粒子属性参数均确定其变化范围。
在该范围内随机的确定它的属性值,而其变化范围则由给定的平均期望值和最大方差来确定,基本表达式为
(1)其中,rand()是返回值在[-0.1,+0.1]内均匀分布的函数,
和
是第
帧新产生粒子数目的均值和方差。
一般,方差定位为事先给定的常数;
均值
可以采用较简单的线性函数
其中是粒子系统被激活的帧号。
1.2粒子的属性
对新产生的粒子必须为其赋予初始属性值,它包括:
初始位置、初始颜色、初始运动速度和运动方向、初始透明度、生存期和形状等。
通常,粒子的初始位置p和初始运动方向由粒子诞生的区域的形状,也即由粒子发射器的形状来决定。
常见的粒子发射器形状有:
平面、球体、长方体等。
而粒子的其它初始属性则也由随机函数来控制:
初始速度v=平均速度mv+rand()vv
初始颜色c=平均颜色mc+rand()vc
初始透明度t=平均透明度mt+rand()vt
生存期l=平均生存期ml+rand()vl
其中υv,υc,υt,υl分别为速度、颜色、透明度、生存期方差。
上述属性中,平均值和方差均为事先给定的常数;
rand()为在[-1,1]上均匀分布的随机函数。
1.3粒子的变化
粒子系统中每个粒子都在不断的运动,同时也在不断的改变颜色、透明度和大小。
在赋给初始属性后,粒子开始进行活动,即随着时间t的流逝而不断改变它的各种属性值。
第帧时粒子的各属性值为:
位置
速度
颜色
透明度
生存期
其中,a为粒子的加速度;
为粒子颜色的变化率;
为粒子的透明度变化率。
1.4粒子的消亡
一般而言,粒子的消亡会有两种情况:
(1)粒子的生存周期结束。
(2)粒子属性或运动超出了给定的阈值。
2字幕机中爆炸效果的实现
在具体的算法流程中,用粒子系统对爆炸的模拟有如下几个特点:
(1)爆炸过程中,粒子只在
帧产生,而在随后的帧序列中只要改变在
帧产生的粒子属性即可,而不必再产生新粒子。
(2)实际爆炸产生的碎片形状可以多种多样,要完全模拟实际情况是不可能的。
但可以通过建模预先定义一系列不同形状的爆炸碎片,如:
三角面片、长方体、多面体等。
比如:
现已有12种不同形状的碎片,把它们编号为:
1,2,⋯,12。
(3)爆炸过程中,各粒子除了在速度方向上的运动外,还有绕A、E、C三轴的旋转运动。
假设粒子与A、E、C三轴正向所成的角度分别为:
Pitch、Yaw和Roll,而绕某一帧时,绘制的是位于粒子当前运动位
置的点或者是代表粒三轴的转动角速度分别为:
、
,则第fi帧时粒子与x、y、z三轴所成的夹角为:
(4)由于重力的作用,各碎片的运动轨迹应为抛物线运动,直至最后坠落在地面上。
此条件也是粒子的死亡条件之一。
假设粒子在x轴上的运动速度为,则在第fi帧时有:
2
火焰特效的实现
2.1
分析火焰特效的特征
要实现火焰特效,就先要分析其特征,确定要实现的特效的外观,以及是否可以用具有一些特有属性的粒子来描述,比如什么颜色、如何运动、什么形状等。
火焰的特征是非常鲜明的,就是红红的烈火熊熊燃烧。
所以首先确定火焰的颜色主要由红色和黄色2种基本色构成,加上默认的背景颜色黑色,那么火焰效果需要3种基本颜色。
然后分析火焰的运动形式:
火焰的运动多数以火苗向上为主,即从火源开始向上升腾,颜色由淡黄色到红褐色最后变成黑色消失。
就火焰的形状而言,其形状很难确定。
但是常用的效果如蜡烛、火把等,其形状都是上下窄中间偏下方位宽,用多个这样形状的火焰也可以组合成壮观的熊熊
大火。
效果的颜色决定了绘制时所需要的调色板,火焰特效所需要的基本颜色是红、黄(一般抽象出2、3种基本颜色即可,然后根据调色板的生成原理来生成其他的过渡颜色);
运动规律决定了粒子在各个方向的速度,以及它们的生命周期,即决定了最核心的算法部分;
效果的形状决定了如何对最终的效果进行剪裁,使之更具真实感。
2.2
创建调色板
通过上述分析,可知首先要创建一个合适的调色板,它决定了效果的外在颜色,是效果实现中非常关键的一个环节。
另外,创建调色板时,颜色的数量是一个需要考虑的问题。
在兼顾效果的同时,调色板的颜色数越少越好,这样,不仅可以节省内存空间,而且创建的复杂度和速度都会相应地降低和加快,调整起来也比较方便,所以一般选择2的整数次幂的颜色数量。
最后根据以上的分析及不断的对比和调整,获取随机数,后按照一定的算法进行换算,得到了64种颜色,这完全可以满足火焰效果的要求。
颜色若再少,其升腾的高度就会受到影响,因为变成黑色的速度快了,并且从64种颜色减少到32种,只节省100B左右的空间,没有太大的实际意义。
2.3
粒子的初始化
一般来说,要对粒子的所有属性进行初始化设置,比如:
粒子的水平速度,垂直速度以及相应的加速度,粒子的颜色,生命周期等。
根据各种不同的效果,粒子有很多不同的初始化方法。
针对火焰特效而言,粒子的初始化主要是火焰粒子的数量、火焰升腾的速度、火焰的高度和宽度。
2.4
特效的运动算法
特效的运动算法是整个粒子特效中最关键的一步。
一个好的算法不仅可以很好地展现出所需的效果,其速度也非常快,速度比效果更重要,效果再逼真,在手机上根本无法运行也是毫无用处的。
这里采用了模糊技术来处理火焰的升腾,即由周围的点获得当前点的颜色值。
(1)即把屏幕上的每一个点用它自己以及下面的3个点的平均值代替。
式
(1)也可以这样理解,每一点都是由下面的3个点所产生的,而火源在最下面,那么新产生的颜色一定比下面的平均颜色深,即越到上面越深,渐渐变成黑色而消失。
又由于火源是在不断的变化的,因此各点消失的高度会有多种变化,看起来像是火焰在燃烧。
2.5.2
火焰特效的优化
根据以上介绍的优化方法,来优化火焰特效的算法和代码。
由于在设计粒子运动算法的阶段必须考虑效率,选择了简练的火焰粒子运动算法,因此核心算法基本上不需要再
优化。
但是在实现火焰特效的代码中,要重复执行生成火源和火焰升腾这2部分的代码,其中升腾部分的代码比较简单固定,就是根据式
(1)计算。
而火源的产生的代码要在每一个循环中获取一个随机数,但获取随机数是一个相对较慢的过程,所以该部分的代码的运行速度还不尽人意,可以进行代码优化。
优化的基本思想是提出帧的概念。
将火焰的每次处理周期作为一帧,为了避免反复地获取随机数,在最开始,即创建调色板的同时,把火焰各帧的随机数都取好,储存在一个数组中,每次产生新的火源时,只需要一个简单的赋值操作即可,这样效率就会有所提升。
2、实现过程与实验结果
3、小组分工
这次小组作业中,我们由三名成员组成:
在这次的小组作业中,每个小组成员都起着重要的作用。
在前期,我们小组成员进行了积极的讨论和查阅相关知识,以使我们能顺利完成它。
同时我们小组进行了小组成员分工,使我们能在这次作业中都有所收获。
成员
组长
组员
姓名
谢昊明
胡永森
班级
学号
2012211829
2012211929
分工
前期资料收集
PPT演讲
代码编写调试
PPT制作
环境搭建
4、心得体会
我觉得这个课程非常有意义,让我们学到了很多一些关于游戏制作的知识和原理。
对于游戏开发的深入学习和研究有着非常大的帮助。
通过一学期的学习大概地知道了一些游戏引擎的使用和一些常规的游戏编程。
这门课程非常有趣,增加了我们对面游戏开发的热爱与兴趣。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏 开发 设计 火焰 爆炸