一种三维燃烧和爆炸特殊效果的建模和管理方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 引言
虚拟环境中的各种各样的三维特殊效果, 是提高环境逼真性不可或缺的因素。
这些特殊效果包括风、雨、雪、雾等表现自然现象的特殊效果, 还包括爆炸、燃烧、烟雾等由虚拟环境中的用户和虚拟环境交互产生的特殊效果。
种种这些特殊效果的三维模型, 由于具有不规则的几何外形和随机的动态特性, 很难用简单的欧氏几何对象来进行逼真描述。
目前对此类三维模型的表示主要采用粒子系统和分形造型的方法来实现[1], 粒子系统是一种典型的基于物理建模的方法, 它由一些列具有独立属性的单个粒子的集合构成, 这些粒子在一定的规律或外力作用下运动, 使得整个系统呈现出某种不定形物体的特征。
由于粒子系统的构造特点它尤其适合于不定形物体的建模[2]。
分形是一种采用过程而不是方程来对物体建模的方法, 我们通过指定一个过程来描述分形物体, 该过程为物体的局部细节指定一个重复的操作, 使得生成的局部细节特性和物体整体特征之间具有自相似性[3]。
分形方法适合用来描述各种具有不规则粗糙外形的物体, 这些物体不适合采用欧氏方法进行描述。
采用粒子系统和分形的建模方法虽然能生成较为逼真的三维特殊效果模型, 但在计算和渲染却源。
在实时战场仿真中, 我们通常采用简方法, 以达到在逼真性和实行性间的折衷目前, 各种商品化的成熟三维环境绘三维特种效果绘制的支持, 如V ega、Ope 焰、烟、雾等特殊效果绘制的支持, 并提供持。
这使得用户可高效方便地进行虚拟环
些绘制引擎的特殊效果都是内嵌的, 种于对其进行扩展、更改, 并且难于进行绘本文介绍了燃烧和爆炸两种特殊Boarding 技术的三维建模方法。
并对像
互产生的, 发生于较小的一段虚拟时空区进行了分析, 抽象出了它们的一些共同类特殊效果的统一的存储和管理模块, S 真运行管理器产生的交互信息, 向虚拟场
特殊效果模型, 并负责对这些特效进行
引擎, 向绘制引擎提供简单的调用接口,己的绘制循环中调用模块的绘制接口对果进行绘制。
S EArtist 模块具有良好的可
特殊效果的建模方法多种多样。
如引言中提到的采用分形
的三维场景世界坐标系转换为用户的视坐标系所需的全部
变换。
方法或粒子系统方法进行建模, 另外还有采用动态纹理贴图的
方法进行建模等等。
每种建模方法在逼真度和渲染的实时性上
都有较大的差别。
为了提高特殊效果的绘制速度, 使其对虚拟
场景三维绘制的实时性产生的影响尽量的小, 我们采用具有火
焰颜色特征的二维平面加BillBoarding 技术来模拟出三维的燃
烧特殊效果; 用带有爆炸纹理贴图的二维平面加BillBoarding
技术、alpha 纹理贴图技术来模拟三维得爆炸特殊效果。
这种
建模方法的优点是, 特殊效果模型简单, 生成模型所需计算量
较小, 对虚拟战场环境渲染的实时性影响较小。
2.1 BillB oarding 技术
BillBorading 技术, 是一种将三维场景中的某一物体的朝
向进行调整, 使其始终朝向某一目标( 通常为视点) 的技术。
该
技术在三维环境建模中被广泛应用, 用于将一个极其复杂的几
何模型用一个贴有该模型纹理的平面来代替, 并通过将该平面
的朝向始终调整到朝向视点方向, 使得用户在三维场景漫游的
过程中, 产生三维显示效果, 这种方法能够用牺牲少量模型真
实性的代价, 换来模型建模难度和模型绘制开销的极大减小。
BillBoarding 技术根据其对物体朝向的调整方式不同,可
分为以下几种类型[2]:
( 1) 朝向屏幕的BillBoarding。
将物体的朝向调整到始终朝
向( 垂直于) 视平面, 也就是我们看到的屏幕。
( 2) 朝向视点的BillBoarding。
将物体的朝向调整至由物体
中心点指向视点的方向上来。
( 3) 轴向的BillBoarding。
只允许物体绕世界空间中的某个
轴进行旋转, 同时调整物体使其在此范围内尽可能的朝向视点。
这里我们采用了第一种BillBoradng—
—朝向屏幕的Bill-
Boarding, 来实现火焰和爆炸的特殊效果绘制。
如图 1 所示, 我
们将模型的朝向调整为垂直于视平面的方向, 即图中虚线表示
的平面。
这种BillBorading 方法在很多应用中能够达到足够好,
甚至更为真实地三维效果( 例如应用于树木的模型) , 并且更便
于实现。
T
最右侧一列[a12, a13, a14] 表示世界坐标系坐标原点在视
坐标系中的坐标值。
左侧的子矩阵M1 包含了你进行的所有旋
转和缩放的变换操作, 将矩阵M1 设置为单位矩阵, 即可逆转
所有的这变换操作。
这样模型视图矩阵将变为下图右侧所示的
形式:
M1M1
++
,
,
,
,
,
,
,
,
,
,
,
,
-
,
,
,
,
,
,
,
,
) )
,
)
)
)
*
,)
,
,
-
)
)
*
在新的模型视图矩阵下绘制的几何模型, 除具有几何平移
变换外没有任何旋转变换, 使得它们的局部坐标系和经过模型
视图变换的视坐标系重合, 它们的朝向始终垂直于视平面( 屏
幕) , 并和视方向相反。
这样就实现了朝向屏幕的BillBorading[4]。
2.2 燃烧特殊效果建模
我们采用具有火焰颜色特征的二维平面加BillBoarding 技
术来建立具有三维显示效果的火焰燃烧特殊效果模型。
火焰的特征颜色包括: 亮白色、黄色、橘红色、灰色。
我们要
做的就是在一个给定的二维平面( 以下称为燃烧平面) 合理的
设置每一个像素点的RGBA 颜色值, 使整个燃烧平面具有火焰
的颜色特征和形态特征; 并通过不断改变每个像素点的颜值来
得到火焰动态燃烧的效果。
给定的二维平面一般是正四边形平面,假设它具有M*N
个像素点。
我们将该平面均分成( m 行*n 列) , 即均分成m*n
个小正四边形阵列, 每个小正四边形作为一个燃烧单元, 一个
燃烧单元中的所有像素具有相同的颜色值。
其中m≤M, n≤N。
M, N 用于控制燃烧的规模, m, n 用于控制燃烧仿真的精度。
关
键问题是我们如何设定每个燃烧单元的颜色值, 这里我们采用
的一种算法为: 种子燃烧点蔓延算法。
不同的火焰颜色特征代表着不同的火焰燃烧强度, 我们设
火焰燃烧强度值的值域为[0, MAX]( MAX>0) ; I( i, j) 表示第i 行
第j 列的燃烧单元的燃烧强度, 其中i≤m, j≤n; C( i, j) 表示第i
行第j 列的燃烧单元的RGBA 颜色值。
燃烧单元的燃烧强度计
算公式为公式( 1) , 燃烧单元RGBA 颜色值的计算公式为公式
( 2) 。
其中公式( 2) 为经验公式。
我们在燃烧单元的最后一行中选取中间连续的m*2/3 个
燃烧单元作为种子燃烧点, 使用随机函数为它们随机的设置燃
3
2
图1 朝向屏幕的B illB orading 技术示意图
通过在绘制BillBoarding 物体前调整作用于物体的模型视
#0( i, j) !( 1≤i≤m, 1≤j≤n)
%
%
%
15
%rand( )
/MAX
I( i, j) =
%i=m,
6
n≤j≤
6
n
( 1)
$
%
%
%I( i+1, j- 1) +I( i+1, j) +I( i+1, j+1) +I( i, j)1≤i≤m- 1, 1≤j≤n
%
4
%
&
#
%r=
I( i, j) I( i, j) ( 0≤I( i, j) ≤MAX/3)
g=0.0b=0.0a=
MAX/2
%
%
%
MAX/3
%
I( i, j)
%
C( i, j) = r=1.0g=b=0.0a=1.0( MAX/3<I( i, j) ≤MAX*2/3)( 2)
’MAX*2/3
%
%
%
g= I( i, j)
%
( MAX*2/3<I( i, j) ≤MA X)
%r=1.0g=1.0a=1.0
MAX
%
&
( 3) 用 爆 炸 纹 理 对 正 四 边 形 进 行 纹 理 贴 图 。
并 绘 制 正 四 边形。
( 4) 采用朝向视点的 BillBoarding 技术调整正四边形的朝 向使其朝向视平面, 并对其进行绘制。
我们选择背景颜色为白色( RGBA 值为( 1.0, 1.0, 1.0, 0.0) ) 的爆炸纹理图片, 这样可以方便的进行背景颜色剔除。
包括:
( 1) 特效产生的位置信息。
( 2) 特效持续的时间信息。
( 3) 特殊效果的规模信息。
给定了以上三种属性的属性值后, 我
景中加入一个特效模型, 当然我们无法通
效效果的视觉效果进行控制, 但是那并不特殊效果管理
虚拟场景中特殊效果多种多样, 对于绘制引擎来说, 如果
3 的工作。
对视觉效果的控制, 我们应该放的实现部分进行控制。
3.2 SEA rtist 特殊效果管理模块的实现
S EArtist 模块的类结构图如图3 所示。
对特殊效果抽象出的各种属性, 用类Effect 类进行存储和设置; 同时, 它也是个具体特殊效果模块的抽象基类。
它的每个子类就是一种特殊效果模型的具体实现类, 例如目前我们构建得两中特效模型, 燃烧和爆炸, 和它们的绘制相关得各种数据, 以及具体的绘制函数分别由Fire 子类和Ex plode 子类中进行存储和实现。
S EArtisit 特殊效果管理类, 用于向上层仿真运行管理器和绘制引擎提供接口。
这些接口包括:
( 1) 向虚拟场景中添加一种特殊效果模型。
AddEffect( ) , 需要用户指定的参数包括: 特效的类型、位置、规模、延续时间。
产生的特殊效果存储在S EArtist 的Effect 对象链表中。
( 2) 绘制整个虚拟场景中的特殊效果。
Render( ) , 依次调用Effect 链表中的每个各个Effect 子类对象的绘制函数。
在仿真运行过程中, S EArtist 模块和仿真运行管理器、绘制引擎之间通过这些接口进行交互。
它们之间的交互视图如图4 所示。
为正确的绘制各个由绘制引擎加入场景中的特殊果, 特殊效果管理模块还应能够对Effect 链表中的各个特殊效对象进行深度排序, 以使得它们的绘制表现出正确的遮挡关系, 特别是在具有透明效果的特校绘制时尤为重要, 例如火焰, 爆炸都具有一定的透明效果。
另外特殊性效果绘制模块还应负责对Effect 链表中的特校对象进行删除, 删除一般发生在特效的延续时间耗尽时。
4 应用实例
采用本文方法实现的特殊效果绘制模块, 具有很好的实时性, 能够方便地嵌入绘制引擎中, 能够满足实时仿真应用对实体交互产生的特殊效果表现的需求。
并且本特殊效果绘制模块具有良好的可扩展性, 具有相同性质的新的特效模型加入, 只需要派生一个具有相应特殊效果实现代码方法的Effect 类子类即可。
本特殊效果绘制模块已应用于我试验室自主开发的仿真运行平台EMS 和三维绘制引擎V EE 中。
图5、图6 给出了利用S EArtist 模块生成的燃烧和爆炸效果的实验截图。
( 收稿日期: 2005 年7 月)
参考文献
1.和平鸽工作室编著.OpenG L 高级编程与可视化系统开发[M].中国水利水电出版社出版
2.Eric Haines 著.T o mas Akeni n e- Moller, 普建涛译.实时计算机图形学[M].北京大学出版社
3.Do nald Hearn, M Pauline B arker.C om pu ter G raphic w ith OpenG L[M]. Third Edition, 电子工业出版社
4.B illboarding Turo rial.w w w.lig
5.马继峰, 彭晓源, 冯勤等.三维特殊效果库的研究与实现[J].光电技术应用, 2003; ( 4)
图4 S EArtist 模块和仿真管理器、绘制引擎之间的交互视图
( 上接11 页)
299~305
4.陈燕新,戚飞虎.一种新的基于随机Houg h 变换的椭圆检测方法[J].红外与毫米波学报, 2000; 19( 1) : 43~47
5.庞永杰, 刘维.改进的K- RANS AC 椭圆检测方法[J].哈尔滨工程大学学报, 2003; 24( 5) : 487~490
6.黎自强,滕弘飞.广义Houg h 变换: 多个圆的快速随机检测[J].计算机辅助设计与图形学学报, 2006; 18( 1) : 27~33。