基于粒子系统的海量云层数据的可视化研究

2014-07-09 02:31卢石磊赵正旭
河北省科学院学报 2014年2期
关键词:粒子系统云层海量

卢石磊,赵正旭

(石家庄铁道大学 信息科学与技术学院,河北 石家庄 050043)

自然景物的生成与模拟一直是计算机图形学领域的研究热点,尤其是对于动态自然景物,例如云、烟、火、雨、雪等,传统的造型方法很难描述它们的形状和运动[1],难以得到具有真实感的可视化效果,尤其是对于海量云层数据的可视化。因为云层具有不规则的集合形状,细微的颜色变化而且具有不确定的动态特性,这种动态变化是极其复杂和混乱的,并受到周围大气环境参数的影响,所以云层所具有的动态性和随机性使其很难使用常用的三维建模方法进行仿真。而生动逼真的可视化云层可以很大程度地提高场景的真实感和逼真度,所以尽管云层数据的可视化具有挑战性,还是受到了研究者们的广泛重视并不断进行探索研究。随着粒子系统在云层数据的可视化技术上的不断进步,粒子系统也成为实现三维场景中具有真实感的云层数据可视化的有效方法。

为了得到具有实时性好、真实感强的大气云层,在沿用粒子系统的基础上,笔者结合辅助对象制作原理,模拟开发出一个实时云层模拟系统,可以根据传入数据形成相应的真实感强的三维仿真云层,模拟真实的环境效果,实现海量云层数据的可视化。

1 粒子系统方法的基本原理

1983年Reeves提出粒子系统的思想,是为了实现对一些自然现象或景物的仿真,之后逐渐的被用于对非刚性的物体建模。粒子系统采用了一套不同于以往造型、绘制系统的方法来构造和绘制景物,使用过程计算模型代替简单的静态模型,是仿真不规则景物最成功的图形生成算法之一。基本思想是将许多简单形状的微小粒子作为基本单元聚集起来,形成一个不规则的模糊物体,从而构成一个密闭区域,即粒子系统。粒子系统仿真的景物是由多个不规则的,而且是随机分布的粒子组成,每个粒子都有空间位置、颜色、透明度、运动速度、运动方向和一定的生命周期,所有粒子属性都依靠时间函数。而一个粒子究竟具有什么样的属性,主要决定于其具体的应用。粒子主要分为有状态粒子和无状态粒子:有状态粒子通过运动方程的计算既可以得到需要的生成粒子的属性参数,并且保留粒子的原有属性,被用于复杂现象的可视化;无状态粒子的属性变化由粒子的初始属性和当前时间决定,适用于简单、不规则的自然现象的可视化。为了增加物理现象的真实性,粒子系统通过空间扭曲控制粒子的行为,结合空间扭曲能对粒子流造成引力、阻挡、风力等仿真影响。

粒子系统以最接近目标的方式来进行景物的可视化,对模拟的对象没有限制,但是运算量和存储量都比较大,在实时性应用方面也受到限制,并且是从微观的角度进行自然景物的模拟,简化时也易受此制约。因为粒子系统的仿真需要有粒子的产生和消亡、粒子的更新、粒子的排序以及粒子的绘制,粒子系统的控制机制控制着粒子的产生、消逝以及动态行为,对于不同的应用,只要相应地改变粒子的属性以及动态变化行为即可。图1是粒子系统流程图。

图1 粒子系统流程图

传统的绘制方式中,前三个环节都是由CPU来完成计算,这样CPU的运算量过大,一般的PC终端也只能支持数万粒子的可视化,可视化的应用受到很大限制。因此,如何使用较小的运算量来实现海量云层数据的可视化方法成为研究的重点。

2 海量云层数据可视化研究的意义

大气云层是最常见的复杂自然景观之一,无论是游戏场景还是真实场景的模拟当中都是不可或缺的组成部分,因此在计算机应用技术发展如此迅速的今天,云层的计算机模拟成为可能并且被广泛应用于各种领域,例如三维游戏室外场景仿真、影视特效、气象预报分析以及数据可视化等诸多行业。逼真的云层数据可视化可以很好地增强游戏场景的真实感,给游戏玩家以身临其境的感觉,增加游戏的趣味性;满足影视剧情的特殊需要,摆脱现实条件和拍摄成本的束缚,营造真实壮观的特殊效果;帮助气象分析人员更加直观地分析云层数据,进而更好地掌握天气变化的数据等。

由于大气云层不规则和多变的特性,要得到非常逼真的效果还是比较困难,但正是由于其如此广泛的应用,才会有众多的研究人员致力于云层数据的可视化研究,并取得了丰硕的成果。

3 海量云层数据的可视化研究方案

3.1 云层特征分析

云层作为大自然最常见的复杂景观之一,是由许多细小的水滴或者冰晶组成,所以云层没有固定的形状,往往千姿百态,加上温度和风力等大气环境参数的影响,云层会变幻莫测,并时常移动,在日常生活当中经常可以看到。但是各式各样的云又怎么来区分呢?从长期的观察和研究中发现,可以从形状、纹理、颜色、暗影、轮廓和范围六个方面来对其进行分类,因此整体上云层可以被分为两种:

(1)积云。积云是块状云,又可以被划分为卷积云、高积云和积雨云,呈蓬松状,如同棉絮漂浮在空中;

(2)层云。层云是布满天空的云,又可划分为卷层云、高层云、雨层云和层积云,呈层状,如同瓦状覆盖整个天空。

不同种类的云层具有不同的特征,无论是从形状、纹理还是颜色等方面,都可以进行区分,而且不同的云层所在高度不同,所预示的气象信息也不相同,要实现云层数据的可视化,就需要海量的云层数据来描述云层。

3.2 绘制方法分析

目前,计算机图形学发展迅速,利用计算机进行海量云层数据的可视化呈现技术已经初具规模,主要有以下五种方法:

(1)光线追踪。通过传感器追踪光线在云层中的传播路径以及传播时间,利用光线直线传播并可以进行反射和折射的原理,计算分析得到关于云层的具体形态参数,比如厚度、浓度、湿度等,利用计算机对分析所得数据进行仿真,进而还原云层。此方法可以真实地再现云层,但是缺点就是计算量大,需要以海量的云层数据作为依托;

(2)基于体绘制方式。即利用OpenGL技术将三维云层切割成具有相似结构的片元,对这些片元进行渲染,然后进行组合。此方法还原出的云层具有很高的逼真度,但是需要较大的缓存进行渲染;

(3)基于三维映射的绘制方式。即在传统的二维绘制的基础上,将二维图形进行扩展延伸,得到三维立体的云层。此方法操作性好,效果逼真,可以很好的实现云层数据的可视化;

(4)基于粒子系统的动态仿真。针对云层由无数细小的水滴和冰晶组成、形状不规则等特点,利用粒子系统,生成无数细小粒子,分析云层的大量相关参数,实现云层数据的可视化;

(5)基于分型技术绘制方式。利用二维星云图扩展成三维,生成仿真云层,实现云层数据的可视化。

以上是应用比较多的五种云层数据可视化实现方法,虽然都可以取得比较好的可视化效果,但是每一种方法都有各自的局限性。大气云层是非常复杂的,由于各种大气环境参数的影响,使云层具有形状不规则、变幻莫测,颜色和密度不一致等特点。虽然随着科技的发展,气象研究人员已经掌握了大量的云层数据,但是利用计算机进行仿真建模还有一定困难:描述地过于精确、逼真,则需要计算机承受巨大的计算量;模型过于简单,则会失真比较严重。因此,本文在总结多种绘制方法的基础上,结合五种描述方法的优点,提出了一种利用OpenGL和OSG(Open Scene Graph)技术生成多个不同alpha值的点来模拟组成云层的小水滴,从而组合在一起实现海量云层数据的可视化,并利用粒子系统中粒子的消逝和生成过程来实现云层的云涌效果。

3.3 海量云层数据的可视化实现方案

3.3.1 方案思想

鉴于云层的形状不规则和变幻莫测的特性,常规的方法进行建模比较困难,而且不能真正实现云层数据的可视化,因此借鉴粒子系统的思想,利用OpenGL和OSG技术生成多个细小的点,模拟组成云层的小水滴,通过调整各种点的alpha值和粒子浓度来实现云层不同浓度的调节。生成各个点需要建立粒子系统,首先需要明确粒子的数量和属性,例如粒子的大小、位置和形状等属性的初始化,初始化方式应该取决于不同的应用要求。其中粒子的位置属性应该与纹理的属性相关联,纹理的三维坐标实际上就是一个数组,是一个数组的索引,而粒子颜色的设置同样是依靠如同纹理坐标的方式来表示红绿蓝(Red,Green,Blue,RGB)三原色的分量设置。所以,粒子的各个属性值和各个纹理具有相同的纹理坐标。

接下来就是粒子的生成,通过对粒子的属性分析了解到,实现粒子的绘制,应该使纹理坐标与粒子的坐标按照编写环境的要求保持一致,所以要实现粒子顶点坐标的数据和纹理数据之间的转换,应该使用渲染到定点缓冲区(Render to Vertex Buffer)的方法来减轻CPU的计算压力。

组成云层的粒子属性同粒子系统其他粒子的属性是一样的,包括大小、空间位置和形状等参数,因此云层粒子的生成应该先对其属性进行定义,其基本数据结构为:

对于粒子空间位置的初始化可以确定云层的空间位置以及形状,对于粒子颜色和alpha值的初始化可以确定云层的颜色和浓度等,对于粒子各个属性的定义,相应地反映了云朵的物理指标。

图2 生成云朵效果图

图2为粒子系统生成粒子组成的云朵渲染效果图。白色区域是粒子的聚集区域,灰色区域是粒子相对较少的区域,粒子浓度的大小可以达到相当于调节云朵alpha值的效果。将整个空间随机分布有少量粒子,模拟雾的效果,整体看上去使云朵笼罩在薄薄的云雾当中,增强云层数据可视化的真实性。

现实中的云层是变幻莫测的,包括颜色的改变以及云层的移动等。颜色变化可以通过调节alpha值和粒子浓度来调节,云层形状的改变以及移动可以依靠粒子群的移动来实现,即粒子群各个粒子空间位置关系以及速度大小的改变,过程中涉及到粒子之间的碰撞以及粒子与周围环境的相互作用,关系十分复杂。

而云层的移动分为三种不同的情况,第一种是云层在受到周围风速的影响,发生整体缓慢移动的情况,粒子系统通过赋予粒子群一个初始速度来实现云层在风速影响下运动效果的可视化;

第二种是云层是由无数个细小的水滴颗粒组成,在受到风速影响发生移动的同时会导致云层形状的改变,发生云层的扩散或者叠加,粒子系统通过对个别粒子群进行不同方向上的速度赋值来实现云层形状改变或叠加效果的可视化,在叠加的过程中云层的浓度自然也会发生变化;

第三种是由于周围大气环境参数的变化,比如温度的变化可能会导致云层高度的改变,从而由于云层所受压力的减小而使得云层膨胀或者所受压力增大而压缩。但是由于云层的高度变化是一个很缓慢的过程,所以云层体积的变化也是很缓慢的,为了减小CPU的运算压力,只需要等比例的改变云层的体积即可,而不是再赋予各个粒子初速度。

最后,为了增强云层数据可视化的效果,将可视化的云层整个放置在一个充满薄雾的区域内,实现云层与天空背景的自然融合。

3.3.2 方案优化

由于在海量云层数据可视化的过程中,云层都是由粒子系统生成的许多个细小的粒子组成,粒子都有着各自的属性,是一个个独立的个体,因此要实现大规模的云层数据可视化效果,对计算机硬件配置的要求会比较高,而且系统应该适应多视角的观察要求。为了减小计算机CPU的计算量,本文引入了LOD细节层次模型的概念。

LOD细节层次模型的概念是1976年由Clark提出的,Clark认为当物体覆盖屏幕较小区域时,可以使用该物体描述较粗糙的模型,并给出一个用于可见面判定算法的几何层次模型,以便对复杂场景进行快速绘制。即在不影响画面视觉效果的条件下,通过逐次简化景物的表面细节来减少场景的几何复杂性,从而提高绘制算法的效率。与原模型相比,每个模型均保留了一定层次的细节,根据不同的标准选择适当的层次模型来表示物体,可以大幅度减少CPU的运算量,加快图像的生成速度。因此,LOD技术被广泛应用在实时图像通信、交互式可视化、虚拟现实、飞行模拟以及限时图形绘制等多个领域,并已经成为关键技术。

LOD概念的提出最初是为了适应虚拟场景实时性高的要求,由于视觉距离的影响,不需要计算机对场景再进行特别细致的绘制,这样可以提高场景的实时性和适应性。因此,在视角较远时,适当地降低对某些云层的绘制精度,在不影响整体视觉效果的前提下,可以利用物理建模的方法绘制比较粗糙的云模型或者直接进行二维的面片贴图。

LOD概念的引入可以大大减小计算机CPU的运算量,增加场景的实时性和适应性,降低场景对于PC终端硬件配置的要求。

4 结论

主要研究了如何利用海量云层数据为驱动来实现云层数据的可视化方法,得到可以映射出基本大气参数的云层分布,并在此基础上引入LOD的概念,提高场景的实时性和适应性。提出的方法能够有效地实现海量云层数据的可视化,可以真实、准确地反映出大气云层的参数分布,为海量云层数据进行可视化提供了真实可靠的操作方法。

云层作为复杂的自然景观之一,本身包含了许多气象信息,如何使用计算机图形学进行真实地可视化,使其包含更多地信息,如云层的真实厚度、宽度以及真实密度分布情况以及增强云层可视化的实时性是下一步研究的重点。

[1]王功明,郭新宇,赵春江,等.粒子系统的优化技术研究[J].计算机应用研究,2008,25(2):495-498.

[2]徐烈辉.粒子系统基本理论及其应用[J].电脑与信息技术,2009,17(3):9-11.

[3]徐利明,姜昱明.基于粒子系统与 OpenGL的实时雨雪模拟[J].计算机仿真,2005,22(7):242-245.

[4]陈修亮,梁英杰,郭福亮.基于CUDA粒子系统的烟花仿真[J].计算机应用,2013,33(7):2059-2062.

[5]徐江斌,赵健,杨超,等.云图数据驱动的三维云景可视化[J].工程图学学报,2010,3:68-75.

[6]申闫春,肖鹏,孙兴义.基于卫星云图的三维立体仿真[J].计算机仿真,2010,27(12):289-292.

[7]刘世光,柴佳伟,闻媛.三维动态云快速模拟的新方法[J].计算机研究与发展,2009,46(9):1417-1423.

猜你喜欢
粒子系统云层海量
一种傅里叶域海量数据高速谱聚类方法
利用GPU加速的粒子系统全球流场可视化系统设计与实现
海量快递垃圾正在“围城”——“绿色快递”势在必行
乌云为什么是黑色的
穿透云层的月亮
UE 4粒子系统与外部数据通信研究
乘坐飞机
一个图形所蕴含的“海量”巧题
基于文件系统的分布式海量空间数据高效存储与组织研究
基于粒子系统的建模与仿真综述