您的当前位置:首页基于元胞自动机的动态云模拟

基于元胞自动机的动态云模拟

来源:小侦探旅游网
第36卷 第3期 VoL36 No3 计算机工程 2010年2月 February 2010 Computer Engineering ・开发研究与设计技术・ 文章编号t 1o0m_3428(2010)03_-0272__03 文献标 -A : 基于元胞自动机的动态云模拟 孙田子,刘弘 (山东师范大学信息科学与工程学院,济南250014) 捕要:针对动态云在快速模拟下的真实感缺乏问题,提出一种改进的动态云的模拟方法。该方法在Nagel方法模拟云的基础上。考虑到 大气压对自然云形状的影响,通过建立上下气流动力学方程,实现具有真实感的动态云的模拟。结果证明,与常规方法相比,该方法具有 运算速度快、模拟效果逼真等优点。 关健词:元胞自动机;云模拟;风力函数;大气压 Simulation of Dynamic Cloud Based on Cellular Automaton SUN Tian-zi,LIU Hong (School ofInformation Science and Engineering,Shandong Normal University,Jinan 250014) [Abstracti Aiming at the problem of he ltackness of reality in he quitck imitation of dynamic cloud,this paper proposes an improved method of dynamic cloud simulation.Based on Nagel simulation,considering the influence of atmospheric pressure to cloud in the natural state,through establishing the dynamic equation of luctuatifon airflow,the method implements the simulation of realistic dynamic cloud.Result shows that it features in fast calculation speed and high idelfity of simulation compared wih conventtional methods. [Key wordsi cellular automaton;simulation ofcloud;wind function;atmospheric pressure l概述 在飞行试验和互动游戏系统的设计中,通常离不开自然 气越来越稀薄,气压越来越低,上升空气体积发生膨胀,同 时消耗自身的热量。因此,上升空气的温度会不断降低,从 而导致空气中容纳水汽的本领变小,饱和水汽压减小,上升 空气里的水汽很快达到饱和状态,温度再降低,多余的水汽 就附在空气里悬浮的凝结核上成为小水滴。如果温度比O℃ 低,多余的水汽就凝华成为冰晶或过冷却水滴。它们集中在 一景物的模拟。其中,云作为一种自然背景,是十分常见的。 由于云是有无数小颗粒随机运动产生的,这种气态特征 使得用任何常规的线条和曲线对其建模都会失去视觉上的真 实感,而其易流动及扩散特性也难于采用常见的运动控制方 法来实现。在对云的模拟中,文献[1]从流体力学的角度求解 Navier-Stokes方程来求解云;文献[2]提出分形云的建模;文 献[3]采用了基于三维纹理映射基元的方法绘制。然而,这些 起,受上升气流的支托,飘浮在空中,成为天空中的云。 2.2元胞自动机建模 由此可知,在温度等外界环境的影响下,水汽会以不同 的形式存在,或者发生变化。在利用元胞自动机模型模拟云 时,将模拟空间划分成规则的三维网格,每一个网格就是一 个元胞,每一个元胞代表一个水汽粒子。由于其所具有的特 性,因此可以在每个元胞中定义3个状态变量,分别为hum (水蒸气)、cld(云)、act(水蒸气到云或水的变化),每个变 量只有0或1这2个值,用来表示该水汽粒子是以水蒸气的 形式还是以冰晶或冷却水滴的形式表现在模拟空间中(图1)。 方法通常计算量非常大,难以做到云的实时模拟。 为了实现云的实时模拟,文献[4]用元胞自动机简化云的 动力学特征,文献[5】改进了基于元胞自动机模拟云的方法。 元胞自动机是一个在时间和空间上都离散的动力系统。每 个网格内的元胞均取有限的离散状态,根据自身及周围元 一胞的情况而随时间变化。大量元胞通过简单的相互作用从而 构成动态系统的演化【6 J。利用元胞自动机模拟云,每个元胞 的状态值要么为1,要么为0。它们之间的演化只要通过简单 的布尔运算就可以实现,因此,大大缩短了模拟用时。然而, 上述的方法仅仅实现了云的简单动画模拟,在实现更具真实 感的动态模拟方面还需进一步的改进。 本文在Dobashi方法的启发下,根据利用分形方法建模 时分形插值的启示,利用大气运动原理 J,构造了一种扰动 因素,实现更具真实感的动态云的模拟。 2模型建立 2.1云的形成 云是由悬浮在大气中的冰晶、过冷水滴、小水滴或它们 的混合物组成的可见聚合体。 在自然界,每时每刻都有水从地面蒸发,变成水汽,进 图1兰维网格划分和状态表示 基金项目:国家自然科学基金资助项目(60743010);山东省自然科学 基金资助项日(Z2008G02) 作者简介:孙田子(1985一),女,硕士研究生,主研方向:视景仿真, 虚拟现实技术;刘弘,教授、博士生导师 入大气层。含有水汽的湿空气,在上升过程中,由于周围空 收稿日期:2009—10 20 E—mail:stz一8534@163.com 272一 如图1所示,hum=1表示有足够的水蒸汽形成云; 右移动。元胞中状态变量在风的作用下的转移规则就可以表 述如下: fhum(i-v(sk), ,k,ti)Biia dk^um(i,j,k,ti+0=l h um(j+r(),,ti)N(-act=1表示即将发生从水蒸气到水或云的变化;cld=1表示 这个元胞代表着云。这3种状态的转变规则分别如下所述: hum(i, ,k,t…)=hum(i, ,k,f )^ ̄act(i, ,k,f ) (1) —^曰(f一 ),,,k,‘) A NBi,+rn ktv(s k)j, ̄)(jdOk, , , , ,cld(i,J,k,t+1)=cld(i,J,k,ti)vact(i,J,k,t) (2) 啪(f,,7|i}‘(),),^四(f一fv()七)^^ (,,,, ,w),‘,act(i,J,k,ti+1)= ̄act(i,J,k,ti)^hum(i,J,k,ti)ALc,(f,J,k)(3) 其中, ( ,J,后)是一个布尔函数,它的值通过计算本元胞周 (f, , ) act(i+1, ,k,ti)vact(i,j+l,k,ti)vact(i, ,k+l,ti) vact(i一1, ,k,t )vact(i, 一1,k,ti)vact(i, , 一1,ti)vact(i一2, ,k,ti) vact(i, 一2,k,t )Vact(i+2, ,k,ti)Vact(i, +2,k,ti)vact(i, ,k一2,‘) (4)  l0 e1s。 — (f—v(s ), ,k,t1) -ti; (10) fcld(i—V( ),^k,‘)c (f,工七, ) Ic围的元胞中的act值得到,算式如下: cl d(ij + n. dOkt,)NB (i ,,, vv+rn 1ijdOk( sk)jkt )ANB (, , ,, , , f(,一七)(),,Ⅳ((),,,^)Ⅳf,(一r”(),,t ̄; f 0 e1s。 (11) fact(i-v(sk), ,k,ti)删 们]7忸(f—V( ),,,k,‘) , 通过式(1)~式(4),可以对云的产生加以控制。这也是文 ^NB(i^。)=act(i,j+rndO,k,ti) ̄B( i -v(s i), j,k ,ti), j+ rn dO(^ⅣB(f,,k,ti; 献[4]的模拟方法的主要思想。但是从中也可发现,当cld的 值一旦为1,它将一直保持这个结果。因此,文献[2]提出 一个新的状态变量来解决这个问题。首先,定义一个消失概 率pext。然后,对于所有cld值为1的元胞,生成一个随机 数rnd(取值0到1),如果rnd<pext,cld取值为0。同样, 为hum和act值也分别定义相应的消失概率phum和 pact。若rnd<phum,hum=1,则当rnd‘pact时,act=1。 公式描述如下: cld(i,J,k,‘+1)=cld(i,J,k,ti)AIS(rnd>pext(i,J,k, )) (5) hum(i,J,k,ti+1)=hum(i,J,k,ti)v1S(rnd<phum(i,J,k, ))(6) act(i,J,k,ti+1)=act(i,J,k,ti)vIS(rnd<pact(i,J,k, )) (7) 通过上述的7个公式,就可以控制每个元胞中状态变量 的值,从而生成云的离散密度。 3动态云的实现 在现实环境中,由于大气压等的影响,云通常会出现扩 散、飘移等动态行为,因此具有真实感的云的模拟,很关键 的一方面就是动态云的实现。 本文主要用2种方法实现了云的动态行为:(1) ̄lJ用风这 种空气的水平运动现象实现了云的水平方向上的运动;(2)由 于大气受到静力不平衡的浮力驱动,会产生对流现象,正是 利用这种对流现象,加入了大气的扰动因素,实现了垂直方 向上的云的动态行为。 3.1风速函数下元胞行为的模拟 由于云可以在风的作用下水平对流,因此在传统的利用 元胞自动机模拟云时,云的动态模拟是通过风速函数来描述 的。众所周知,风的强度是随着离地面的高度变化而变化的。 假设风的方向为 轴的负方向,v( )为风速函数,根据大 气边值理论,在距地面500 m-1 500 m以下的大气摩擦层中, 常用指数规律来描述风速随高度的变化:即摩擦层中任一高 度z上的平均风速v和标准高度 上的风速 满足: ( (8) 其中, 表示地面的粗糙程度。一般情况取标准高度为i0 m, 对于摩擦层下部即所谓的贴地层,风速随着高度的变化符合 对数定律: :f Jg 二 ) (9) lgz一, ̄lgzo 其中,Z 为标准高度。也就是说,在Z坐标相同的元胞上, 风速函数的大小是相等的。另外,假设云粒子在飘移过程中 碰到障碍物时,会左右随机移动,于是定义一个随机函数 rnd(),令其取值为1或一1,分别代表云在碰到障碍物时左 【0 else (12) 其中,NB(i,J,k,ti)是一个布尔值,表示元胞内有无障碍物。 3.2元胞问作用行为模拟 云在风的作用下的飘移往往是一个水平方向上的整体移 动,而云团内部通常也有如翻滚、扩散之类的变化。在现实 世界中,积云内的空气通常会产生上下对流的现象,这些上 升或下降的气流彼此都很接近。由于云会受气流的影响上升 或下降,因此本文采用对元胞进行扰动的方法控制垂直方向 来模拟云的这种变化。 在竖直方向上,由于云层受到自身的重力和浮力的影响 (不妨假设浮力远大于重力),因此云层在气流的作用下,随 着时间的推移,其自身的浓度发生相应的变化,随之影响到 云层和雨的形成,在扩散过程中云浓度的变化必须满足相应 的数学物理方程。在热传导的过程中,涉及到2个最基本的 定律t傅里叶定律与热量守恒定律。 傅里叶定律:设物体在无穷小段时间df内沿法线方向 , 满足 dQ—K(x,y,z) , (13) 价; d , ,z,fz)一“( , , ) dydz(¨) 其中, ( , ,z)称为物体在点 ,z)的热传导系数;C为比热; P为密度; 关于变量x,y,Z具有一阶连续偏导数。 通过傅里叶定律可以推导出扩散过程中的2个重要定 律:扩散定律与质量守恒定律,基本形式如下: :一D(x,y,z) 出d, (15) On 告 =f』』Ⅳ ( , ,z,f )一Ⅳ( ,y,z,f.)]dxdydz (16) 鲫 = c。 蛐 。  .其中,Ⅳ表示扩散物质的浓度;d坍表示在无穷小段时间df 内,沿法线方向 ,经过一个无穷小面积出上的扩散的物质 的质量;D(x,Y,z)称为扩散系数。 对式(17) ̄lJ用格林公式可以得到: + c。 + c。 , z= c(2 (18) 交换积分次序可得: c。 卜 O N )一 一 3x c。 az=。 fl91 —273— 由上所述,可以得到相应的扩散方程: DN= 本文基于元胞自动机模拟动态云时,按照以下流程操作: (z。) O(D )+ (D )+D ) (1)通过确定坐标值的方式输入仿真空间网格大小,并输 入云状态的初始值,设定帧数,输入初始值和上限值。 (2)根据所得出的状态值,绘制当前状态下的图像。 (3)根据文中的状态转换规则,计算并确定出下一时刻云 的各种状态值。 接下来不妨只考虑在竖直方向上的扩散问题,在数学物 理方程中,常用对流扩散方程来描述流体在介质的扩散问题, 基本方程可以用双曲方程来描述浓度如何随时间的变化而变 化,方程为 (4)比较帧数是否大于上限值,如果不大于上限值,则继 2),否则结束程序执行。 』l c(x) 州 )警一 ( ) )= ,f) 肌 。 1 续执行步骤(由此,可以模拟出动态云的各种形态。由于云的不断运 N(x,0)=Ⅳ0( ) 其中,Ⅳ表示云的浓度;c(x)表示介质的一些性质;6( )表 动和扩散,因此得以在自然界中形成各种不同的形状,如 示风的速度;a( 表示云的扩散系数;f(x,t)表示源项。 元胞中状态变量在风作用下竖直方向上转移规则如下: fhum(i,J,k+g(七),ti)N(k,f)<g(k,to) hum(i, ,k,t )={hum(i,J,k—g(七),ti)N(k,t)>g( ,t。)(22) l 0 e1se fcM(i,J,,}+g( ),t)N(k,r)<g(k,to) cld(i,J,k,li+1)={cld(i,J,k—g( ), )N(k,t)>g(k,to)(23) 【0 else fact(i, ,jc+g( ), )N(k,f)<g(k,to) act(i,J,k, )={l act(i,J,k—g(后), )N(k,f)>g(尼,to) 【24) 0 e1se 其中,g(k,to)表示恰好形成雨时云的临界浓度,是形成云的 一个浓度的最低限,定义g( )=rndOxw(k),这是一个关于高 度的函数。利用rnd()在模拟云空间的高度范围内取随机值。 )可以是一个正弦函数、指数函数或随机函数等。云的变 化随扰动函数不同而不同。 4动态云的绘制 使用元胞自动机模型模拟时,首先需要初始化参数,然 后根据每个时刻的参数状态,按照一定的规则决定下一时刻 的参数,具体流程如图2所示。 否 圈2元臆自动机模垂仿真藏程 一274一 图3所示。 (a)淡积云 (b)积雨云 图3动态云模拟试验结果 5结束语 本文基于元胞自动机模型,在模拟动态云方面做出改进。 较之以前的做法,主要考虑了大气压等影响云的运动因素, 使得云模拟的物理特征比较明显,更具有真实感。在下一步 的工作中,将主要考虑在多光照情况下,光在云中的传播以 及多风向条件云的运动规律,从而使自然云的模拟在光照条 件下更具真实感。 参考文献 [1]Stam J.Stable F1uids[C]//Proceedings ofSIGGRAPH’99.New York, USA:ACM Press,1999:121—128. [2]Dobashi Nishita L Yamashita H,et a1.Modeling of Cloud from Satellite Images Using Metaballs[C]//Proceedings of the 4th Paciifc Conference.New York,USA:[S.n.],1 998:53—60. [3】Gardner G Y Visual Simulation Clouds[J].Computer Graphics, 1985,l9(3):279—303. [4]Nagel K,Raschke E.Self-organizing Criticality in Cloud Formation[J].PhysicaA,1992,l83(4):519-531. [5]Dabashi Y.Kaneda K,Hamashima H,et a1.A Simple,Efifcient Method for Realistic Animation of Clouds[C]//Proeeedings of SIGGRAPH’00 New York,USA:ACM Press.2000:l9—28. [6]姚 海,鲍劲松,金 烨.基于元胞自动机的云层实时模拟[J]. 系统仿真学报,2008,20(1 1):2946—2950. [7]蒋维楣,徐玉貌,于洪彬.边界层气象学基础[M】.南京:南京大 学出版社,1994. [8]Le Mone M A,Zhou Mingyu,Moeng Chin—hoh,et a1.An Ovservational Study of Wind Profile in the Baroclinc Convective Mixed Layer[J].Boundary Layer Meteorology,1999,90(1):47—82. 编辑索书志 

因篇幅问题不能全部显示,请点此查看更多更全内容