基于粒子系统的新型三维云绘制技术
2015-03-02李阳
摘要:在视景仿真中, 尤其是在三维云建模领域,对云的建模和实时渲染是一项十分具有挑战性的研究课题。针对现有三维云建模逼真程度低、计算复杂等问题,提出从元球模型的角度进行研究,建立了基于变形球融合模型的三维云建模方法。与以往云建模方法相比,该方法具有云团生成快速和云渲染效果好的特点。
关键词:三维云;粒子系统;建模;元球模型
DOIDOI:10.11907/rjdk.143762
中图分类号:TP302.4
文献标识码:A 文章编号文章编号:16727800(2015)001001902
基金项目基金项目:
作者简介作者简介:李阳(1987-),男,江苏东台人,解放军理工大学气象海洋学院硕士研究生,研究方向为大气海洋遥感;孔毅(1954-),男,辽宁大连人,解放军理工大学气象海洋学院教授,研究方向为军事信息系统工程;陈基伟(1991-),男,河南信阳人,解放军理工大学气象海洋学院硕士研究生,研究方向为图像信息处理;赵现斌(1986-),男,陕西渭南人,解放军理工大学气象海洋学院博士研究生,研究方向为大气海洋遥感。
0 引言
云是天气现象不可或缺的元素之一,它是由大量小水滴、小水晶等粒子随机组成的复杂系统。在虚拟环境中模拟自然天气场景或者大气环境时,模拟的云层覆盖了地球表面积的一半,因此对云层的模型建模研究和绘制技术是户外场景模拟的核心技术[1]。近年来,随着计算机技术的飞速发展,云在仿真、动画、虚拟战场、天气可视化、大气海洋环境模拟等领域的应用越来越广泛,人们对虚拟环境真实感的需求越来越高。但是云具有不规则性、不光滑性、不确定性以及形状多变性,使得人们很难用精确模型去描述它,实现云的逼真模拟一直是计算机图形学中研究的热点和难点。在过去的20多年里,经过大量学者和研究人员努力探索研究,提出了一些云建模的仿真方法,并取得了丰富的研究成果,其中较为有效的云建模方法有以下几种:①文献[2]利用多次云纹理叠加,纹理数据量大、计算复杂度高,且难以实时绘制显示;②文献[3]利用粒子系统模拟显示三维实体云,这种算法对CPU负荷较大,难以实时绘制;③文献[4]、[5]用分形的方法建立云的模型,这种方法生成的云相似程度很高,难以辨别;④文献[6]基于过程的方法建立云模型和利用流体动力学方程生成云,需要建立复杂的物理模型来生成云的近似。
针对以上方法存在逼真程度差、计算复杂度高的缺点,本文探索了一种基于变形球融合系统的新型三维实体云建模方法,具有生成速度快、绘制效果好的优点。
1 变形球理论
变形球[78]是在某区域内通过一组基本元球的叠加来模拟云的形状,这些元球具有中心、半径和密度等属性,并可以调整这些属性值的大小。1996年,Y.Dobashi等人利用分形几何把云的基本形状定义为简单球体,并从不同方向对这些云球做某些变形后将初始的云球随机缩小,然后在偏离原来元球中心的不同方位上小位移处进行多次随机复制,该过程一直继续下去,直到最后的迭代层次,即达到或小于一个屏幕像素为止,最后绘制出缩放后的球,再利用光照效果将形状表现为云团。在建立云的分形模型中,为了获得云更加逼真的外观,把球的色彩看作是它到地面高度的函数,较黑的灰色用于云的较高部分,随着高度增加,灰度逐渐变淡,通过颜色密度和放倍数的简单改变,就可以绘制出从乌云到白云的外观逼真的云团。这一思想称为变形球理论,本文论述的云建模正是基于变形球模型展开。
2 三维云的生成算法实现
在采用元球模型进行云建模时,本文首先定义生成单个元球,然后根据元球的空间几何位置,进行元球间的相互融合和叠加显示,聚集成云的形状。分别如图1和图2所示。
图1 元球 图2 云
2.1 元球生成
首先确立云团的覆盖范围大小,需要设置一个云团包围盒,中心点坐标即为云团中心,设置元球生成数目,随机产生元球中心坐标,然后根据元球半径大小,搜索所有在这一包围盒内的所有元球,并标记每一元球相对位置。元球的定义为:
struct Sphere
{
VECTOR3 C;//顶点数据
float R;//元球半径
Sphere(){}
Sphere(VECTOR3 c, float r)
{
C.x = c.x; C.y = c.y; C.z = c.z;
R = r;
}
};
2.2 元球聚集融合显示云
在元球聚集生成三维云显示时,需要进行多层次间的元球融合。为此定义一个局部的隐函数来确定空间每一位置的叠加数据,通过这种方式定义的元球模型,其对融合后效果的影响是其半径延伸的末端变为零。本文选取的隐函数是严格递减的,同时考虑到生成的隐函数最好符合参数少、易于控制等特点,那么对元球i设置具体隐函数定义如下:
Fi(ri,Ri)=(1+bi)2-ri2(1+bi)Ri2-biri4(1+bi)Ri4+12·ci,r∈[0,Ri]0,其它(1)
式中ri为空间任意点p到元球i中心的距离;Ri为元球i的有效半径;ci为元球中心强度值,假设 Rmax是所有元球中的最大半径,取ci=Ri/Rmax,此项用于控制每个元球相应的中心密度值。这样能保证由这些元球生成的整个云的密度场的变化更加平滑。最终膨胀场由所有元球定义的域的整合结果叠加得到。但是这种叠加产生的效果是不自然的场强过渡,因此本文采用一种递归合并的方式融合最终结果以产生平滑的强度变化。具体算法如下:
ρ1(p)=F1(p)(2)
ρi(p)=ρi-1(p)+Fi(p)-ρi-1(p)·Fi(p),i=2,3,…,n(3)
式中ρi(p)是由i个元球整合而成的域值,n是元球的数目。图3和图4分别为运用算法前后效果图。
2.3 噪声添加
由元球聚合产生的云的密度场,只具备了三维云的外形轮廓,并不具备云的絮状特征,因此为了进一步赋予云的外形特征,通过过程噪声[9]在上述已创建形状的基础上增加细节,模拟云的无规则边界特性。
图3 运用算法前效果 图4 运用算法后效果
添加噪声的具体步骤为:在每一个元球的边界添加噪声,再在元球聚合体边界添加噪声。对于在元球B的影响下密度强度非零的点p,首先计算该点的法向,即单位化点p到B的中心的方向矢量;然后指定一个中心在点p沿法向向两边扩展半径为R的区域;最后将p点的密度值映射至该区域中的任意一点的密度值。上述方法实际上将p点的域值替换为一个新的随机值。下列方程是该映射的具体算法。
S(p)=p+np·(-R+Min(2R·randRMAX,2R)(4)
其中,np为p点的法向;R是点区域的半径;rand是个随机整数;RMAX为半径的最大值。单个元球噪声叠加的模拟结果如图5所示。
图5 单个元球噪声叠加效果
最终得到的云的形状效果分别如图6、图7所示。
图6 普通云的形状 图7 三维云形状
3 结语
本文提出的云建模方法,核心思想是基于粒子系统三维云的建模,采用基于本文提出的元球模型,避免了生成大规模粒子对计算机硬件的特殊要求,对CPU和GPU性能要求不高,适合普通电脑。在进行云团的生成构建时,不同的参数可以构建生成不同类型的云,如卷云、积云等,同时从结果上看,云的画面显示流畅,可以满足某些场合的需要。
参考文献:
[1] 刘世光,彭群生.气象景观的真实感模拟技术综述[J].计算机辅助设计与图形学学报,2008,20(4): 409416.