一种基于速度场流线的三维云模拟方法

文档序号:6626834阅读:197来源:国知局
一种基于速度场流线的三维云模拟方法
【专利摘要】本发明是一种基于速度场流线的三维云模拟方法,利用WRF气象数据中的云相关参量的含量值以及速度场进行大规模云场的建模,进而结合层次结构组织调度大规模云场数据并实时绘制出逼真的三维云。本方法包括:模拟空间中云的判定以及利用数据的速度场流线恢复高精度数据场;建立高精度数据的多层次数据组织,进行大规模数据分块以及构建由粒子表示的云表面;最后根据用户视点的位置信息,结合内外存的调度策略,估计云厚度并实现大规模云场景的实时绘制。本发明能够依据稀疏的WRF气象数据建模生成高精度的云数据,进而结合基于层次的组织调度方法实时绘制三维云,高效逼真的展示气象数据中的三维云场景。
【专利说明】一种基于速度场流线的三维云模拟方法

【技术领域】
[0001]本发明属于计算机虚拟现实领域,具体地说,是一种基于速度场流线的三维云模拟方法。

【背景技术】
[0002]自然场景作为人们日常生活中最常见的景观,其真实感模拟一直是计算机图形学研究的热点与难点。伴随着计算机图形学的不断发展演变,自然场景的模拟技术在影视特效、游戏动漫、军事仿真等领域更是得到了广泛的应用与持续的关注。由于自然场景形成具有复杂的物理机制,且其特征往往不断变化,自然场景的仿真模拟变得非常复杂。但随着计算机模拟技术的不断发展与提高,人们也逐渐的在模拟过程当中不断地引进更加真实的物理模型,以求达到更加逼真的效果,同时也在不断的优化物理模型,在具备真实性的基础之上实现交互性。
[0003]云作为一种常见的自然现象,在自然场景中的模拟十分重要,其直接影响自然场景的最终模拟效果,同时云也是天气样式和天气变化的重要指示器,因此云场景的真实模拟不可或缺,但由于云具有复杂结构、变化多端的动力学特征以及特殊的光照效果,要实现大规模真实云场景的实时绘制是比较困难的。
[0004]由于人们常常期望在虚拟场景生成过程中能够对生成过程进行控制以获得预期的数据结果,但云复杂的物理规律限制了人们的交互程度,近年来这种交互需求日益增多,人们希望从初始形状的设计到最终运动过程的模拟的整个过程都能受到有效的控制和预估,从而能够获得预期外形、发展趋势的云数据,以将其协调地集成到各类应用中去,这也促使云模拟方法的交互性能成为迫切需要考虑的问题。同时云作为天空中不可或缺的元素,是“不定形物”的一种,其逼真模拟在天气分析领域有重要的应用,可以让人类更加直观的了解大气,帮助人类理解自然;在很多游戏中,云也扮演着重要的角色,有时候需要艺术家构建出一定形状的云,根据用户指定生成逼真的云模型;而在军事仿真系统中,尤其是在飞行仿真中,也有重要应用,系统需要模拟飞行器穿越云层,从各个角度观测云层,同时对实时性有较高要求。因此,本发明提出一种兼顾逼真性与真实性的大规模云场景模拟方法,适用于各种复杂的虚拟应用场景。


【发明内容】

[0005]本发明的目的是提出一种大规模三维云的建模与绘制方法,得到的三维云与真实情况在形状、颜色、规模都具有一定的相关性,构建逼真且真实的大规模三维云场景以适应各种复杂虚拟应用场景的需求。
[0006]为达到上述目的,本发明提出一种基于速度场流线的三维云模拟方法,具体的步骤如下:
[0007]I)模拟空间中网格点是否含有云的判定;
[0008]2)利用数据的速度场流线恢复高精度数据场;
[0009]3)进行大规模数据分块并构建由粒子表示的云表面;
[0010]4)利用空间二分策略建立高精度数据的多层次数据组织;
[0011]5)根据用户视点的位置信息,进行场景内外存的调度策略;
[0012]6)估计云厚度并实现大规模云场景的实时绘制。
[0013]上述技术方案步骤I)中,模拟空间中的云判定需要依据气象数据中的气象参量计算网格点的衰减系数,进而依据衰减系数值判定网格点是否含云。
[0014]上述技术方案步骤2)中,高精度数据场生成需要依据原始气象数据进行三线性插值,插值时需要首先依据气象数据的速度场计算气象数据的速度场流线,再依据速度场流线指导三线性插值,提高插值精度。
[0015]上述技术方案步骤3)中,对大规模数据场在水平方向上进行分块,同时依据数据场的衰减系数确定每一个子块的云表面,并由粒子表示每一个子块的表面。
[0016]上述技术方案步骤4)中,针对每一个子块,基于空间二分的方法对粒子表面进行划分,生成表面粒子二叉树表示结构,广度遍历二叉树则可依据每一层的粒子生成高精度数据的层次数据结构。
[0017]上述技术方案步骤5)中,依据用户视点的位置信息对场景进行裁剪,确定可视范围,进而依据内外存调度策略将可视范围内数据块的层次数据调入内存,进行场景的层次数据调度。
[0018]上述技术方案步骤6)中,确定了可视场景的数据块后,对数据块的表面数据进行光照计算并估计表面数据构成的云的厚度,最后完成实时的云绘制。
[0019]本发明的优点在于:
[0020]1、高精度云数据依据真实气象速度场指导插值生成,云场景依据气象数据参量进行建模,能够建模出具有真实性的云;
[0021]2、大规模云场景采用基于层次结构的分块组织方法,能够高效的组织调度云场景并实现逼真的绘制效果。

【专利附图】

【附图说明】
[0022]图1示出本发明的实施流程图。

【具体实施方式】
[0023]下面结合附图和【具体实施方式】对本发明作进一步详细说明。
[0024]本发明的主要流程图如图1所示,具体步骤如下:
[0025](I)模拟空间中网格点是否含有云的判定。
[0026]首先对气象数据参量(云、冰、雨、雪、霰等水汽场)进行分析。根据数据的分布范围和参量相关性,判断数据的合理性,再根据实际气象学中的参量标准和数据进行对比,进而进行衰减系数的计算,依据衰减系数值是否处在阈值范围内判定网格点是否含云。
[0027](2)利用数据的速度场流线恢复高精度数据场。
[0028]由于原有的数据是比较稀疏的数据场,因此若需要比较逼真的效果,稀疏数据场构建高精度数据场是必备工作。目前人们大多是采用插值的方式得到稀疏数据场的缺失信息,但由于插值过程中对数据场本身的物理特性没有加以考虑,仅仅是使用一些基本的插值方法,插值出来的结果就会失去原有稀疏数据的物理信息,从而导致恢复出的高精度数据场失去一部分物理的真实性。由于气象数据场中的速度场表征了气象数据物理上的运动趋势,因此也间接描述了其分布特征,所以本发明提取出数据场包含的速度场,进而依据速度场求解速度场流线,由于速度场流线可以直观的呈现三维流场结构,依据三维速度场流线指导数据场的插值更具真实的物理意义。
[0029]插值阶段首先在速度场中选取合适数量的种子分布在速度场中,进而以种子为起点,依据速度场进行积分,就可以得到和种子数量相同的流线。在种子的分布过程中,我们采用了围绕速度场临界点分布种子的策略,首先遍历速度场网格点,查找出某一个网格四个顶点的速度方向分别指向四个不同象限,则此网格中必然存在一个点P使得该点速度为0,则该点为所要求的临界点。然后以此临界点所在网格为中心,向外依次分布种子点,种子间的间距依据距离临界点距离逐渐增大。使用这种策略确保了流线可以合理的覆盖速度场,从而准确表征速度场流动趋势,进而以种子点为起始点沿速度方向进行积分,得到表征速度场的流线。之后对低分辨率网格数据进行三线性插值,得到初步的高精度数据。然后遍历每一条流线,若流线经过某一个立方体网格,则该网格点八个顶点的权值依据距离流线的距离设定,距离越近,权值越大,最终网格点的值由原始值乘以权值得到,从而完成速度场流线指导的高分辨率数据生成。通过这种插值方式,使高分辨率插值结果更加突出流线经过部分,使高分辨率数据构成的云场细节轮廓更加明显。
[0030](3)进行大规模数据分块并构建由粒子表示的云表面。
[0031]由于高精度数据场无法一次性载入内存进行计算与操作,需要对得到的高精度气象数据场进行分块组织,由于气象数据在垂直方向上的尺寸远小于水平方向上的尺寸,因此我们首先把高精度数据场在水平方向上划分为规则的块。因为我们希望得到逼真的绘制效果的同时,具有较高的绘制速度,我们将水平方向上的规则块用粒子来描述其表面。由于能够使用粒子来表征云,我们可以得到比较好的模拟效果,同时我们只是表示了云的表面,使表征一片云区域需要使用的粒子数目大大降低,因而在相对不丢失逼真效果的前提下大幅减少了粒子数目,使得系统兼顾了逼真性和高效性。
[0032](4)利用空间二分策略建立高精度数据的多层次数据组织。
[0033]在得到了低层级粒子描述的云表面之后,我们为了进一步减少粒子数量,对云表面的粒子进行了多层次的组织,首先对数据块表面粒子进行聚类,沿数据块较长边的方向依据粒子的数量进行二分,从而保证每次二分之后两个子块的粒子数相等或差I个。递归处理划分出来的两个子块,就建立了每个数据块的表面粒子二叉树,每一个父节点存储两个子节点融合而成的粒子信息,包括半径、衰减系数、位置等。然后我们只要广度遍历二叉树,所得到的每一层二叉树的粒子就是不同精度下的表面粒子层次数据。依据上述层次组织方式,我们就得到了不同精度的层次表面粒子。
[0034](5)根据用户视点的位置信息,进行场景内外存的调度策略。
[0035]由于层次数据存储的数据量非常庞大,首先就需要依据视点在数据场中的移动,对所有的数据块进行内外存调度,并依据可见性裁剪和绘制不同层级的粒子。绘制阶段粒子组织和云的多尺度性相关,不同的尺度采取不同的数据组织策略。大尺度下,需要表现云的整体性,对逼真性要求较低,因此需要消除低层级粒子,减小粒子数量,提高效率。小尺度下,需要表现逼真度,需要计算视野区域内的粒子,调入内存进行绘制,丢弃视野外的粒子。此处采用在内存中维护一张数据块信息表的方法,表中记录所有数据块位置、大小、外存快指针等必要的调度信息,进而完成整个场景的调度。
[0036](6)估计云厚度并实现大规模云场景的实时绘制。
[0037]基于视点交互绘制阶段绘制技术,整体上为分布计算方法。第一步:计算视线方向上每个采样粒子的亮度。沿太阳光方向查找粒子在云中深度,计算太阳光经过消减后到达粒子的入射光强。根据当前散射角和该粒子中心密度,获得该粒子的出射光强。第二步:沿视线方向按由前至后的顺序依次便利数据场中的采样粒子,在遍历路径上计算光线的耗散量的乘积,直至当前目标采样粒子。以耗散乘以粒子的出射光强,即可得到该粒子在对应视线方向上的最终光强大小。
[0038]我们根据光照强度计算公式(1.4),视平面上任意P点的亮度为视线方向上与云相交的b、d两点间的所有粒子光强积分叠加得到的。其中点a为视线与地面的交点,LU)为X点的亮度,T(X,y)为x、y之间的透明度,ω、σ为光照相关系数,Ρ(θ)为相位函数,I(x)为X点的光照强度。
[0039]L(p) = L{a)T(bJ)+ \dcoaP(0)i(t)T(t d)dr(1.4)


Jb
[0040]但是我们知道b、d间的粒子是不存在的,因而P点的光强是缺失了一部分的,若不考虑这部分信息直接计算,则等价于只计算了云层的表面光照。因而我们对这一部分进行估计,此时P点的光照强度公式可以推导为式(1.5),其中I ( ξ )为I (b)和I⑷的中间值。
[0041]L(p) = L (a) T (b, d) + ω σ P ( Θ ) I (b) + ω σ P ( Θ ) I ( ξ ) (l+e_bd.。)(1.5)
[0042]由于此时还需要计算b、d的距离,但由于上下表面的不确定性,导致每次绘制时都会计算大量粒子的这个距离,导致绘制效率大幅降低,因而还需要进一步优化光照模型。
[0043]我们知道bd = ad-ab,且I (b)和I (d)近似相等,因而我们计算时可以进一步优化光照模型为式(1.6)
[0044]L(p) = L(a)T(b,(1) + ω σ Ρ( Θ )I(b) a_e-ab.°) + ω σ Ρ( Θ )I(d) (l+e-ad.。)(1.6)
[0045]由于ab、ad和a、d两点的高度相关,且非常容易得到,因而式(1.6)在绘制过程中不会消耗过多硬件资源,但却考虑了云层的厚度,可以得到较好的绘制效果。进而最终完成大规模三维云场的绘制。
【权利要求】
1.一种基于速度场流线的三维云模拟方法,其特征在于包括以下步骤: 1)模拟空间中网格点是否含有云的判定; 2)利用数据的速度场流线恢复高精度数据场; 3)进行大规模数据分块并构建由粒子表示的云表面; 4)利用空间二分策略建立高精度数据的多层次数据组织; 5)根据用户视点的位置信息,进行场景内外存的调度策略; 6)估计云厚度并实现大规模云场景的实时绘制。
2.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤1)中,模拟空间中网格点是否含有云的判定需要依据气象数据中的气象参量计算网格点的衰减系数,进而依据衰减系数值是否处在阈值范围内判定网格点是否含云。
3.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤2)中,高精度数据场生成需要依据原始气象数据进行三线性插值,插值时需要首先依据气象数据的速度场计算气象数据的速度场流线,再依据速度场流线指导三线性插值,提高插值精度。
4.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤3)中,对大规模数据场在水平方向上进行分块,同时依据数据场的衰减系数确定每一个子块的云表面,当遍历每一个子块水平方向上所有网格点时,依次判断该网格点所对应的垂直方向上所有网格点是否含云,找到含云的网格点中Z值最大值和最小值对应的网格点则为云的上下表面,并由粒子表不每一个子块的表面。
5.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤4)中,针对每一个子块,基于空间二分的方法对粒子表面进行划分,首先对数据块表面粒子进行聚类,沿数据块较长边的方向依据粒子的数量进行二分,从而保证每次二分之后两个子块的粒子数相等或差I个;递归处理划分出来的两个子块,生成表面粒子二叉树表示结构,每一个父节点存储两个子节点融合而成的粒子信息,包括半径、衰减系数、位置,广度遍历二叉树则依据每一层的粒子生成高精度数据的层次数据结构。
6.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤5)中,依据用户视点的位置信息对场景进行裁剪,确定可视范围,进而依据内外存调度策略将可视范围内数据块的层次数据调入内存,进行场景的层次数据调度。
7.根据权利要求1所述的一种基于速度场流线的三维云模拟方法,其特征在于:步骤6)中,确定了可视场景的数据块后,对数据块的表面数据进行光照计算并估计表面数据构成的云的厚度,根据光照强度计算公式(1.4),视平面上任意P点的亮度为视线方向上与云相交的b、d两点间的所有粒子光强积分叠加得到的;其中点a为视线与地面的交点,LU)为X点的亮度,T(x, y)为X、y之间的透明度,ω、σ为光照相关系数,Ρ( Θ )为相位函数,I(x)为X点的光照强度; L(p) = L(a )T'(b, d) + ωσ P(O)I {t)T(t,d)dr(1.1) 由于b、d间的粒子是不存在的,因而p点的光强是缺失了一部分的,若不考虑这部分信息直接计算,则等价于只计算了云层的表面光照;对这一部分进行估计,此时P点的光照强度公式推导为式(1.5),其中1(€)为1(b)和1(d)的中间值;
L(p) = L (a) T (b, d) + ω σ P ( θ ) I (b) + ω σΡ(θ)Ι(ξ) (l+e..。)(1.2) 进一步优化光照模型: bd = ad-ab,且I (b)和I (d)近似相等,因而计算时进一步优化光照模型为式(1.6)L(p) = L(a)T(b, cO + ω σ Ρ( Θ ) I (b) a_e-ab.0) + ω σ Ρ( Θ ) I ⑷(l + e-ad.。)(1.3) 最后基于以上方法完成实时的云绘制。
【文档编号】G06T15/10GK104299262SQ201410466394
【公开日】2015年1月21日 申请日期:2014年9月14日 优先权日:2014年9月14日
【发明者】齐越, 梁晓辉, 罗江 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1