基于计算机视觉和粒子系统的三维云模拟.doc_第1页
基于计算机视觉和粒子系统的三维云模拟.doc_第2页
基于计算机视觉和粒子系统的三维云模拟.doc_第3页
基于计算机视觉和粒子系统的三维云模拟.doc_第4页
基于计算机视觉和粒子系统的三维云模拟.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于计算机视觉和粒子系统的三维云模拟【摘要】 云是很常见的一种自然现象,真实感云的模拟是计算机图形学领域具有挑战性的研究课题。文章提出了一种基于计算机视觉和粒子系统的三维云建模方法。首先利用计算机视觉技术从现有的二维云图像中提取云的三维信息,然后利用粒子系统填充该三维空间,最后通过纹理映射和Billboard技术实现三维云的绘制。与以往云建模方法相比,该方法简单、实用,适用于模拟不同种类的云,如层云、积云、卷云等。 【关键词】 云模拟; 计算机视觉; 粒子系统 Simulating 3D cloud based on computer vision and particle systemGONG Lin1, WANG Shanbin1, GU Daquan2 (1. Zhenjiang Watercraft College, The Center of Simulation, Zhenjiang 212003, China; 2. Institute of Meteorology, PLA University. of Science and Technology, Nanjing 211101, China) Abstract: Clouds are an important part of natural environment. The realistic simulation of cloud is a challenging topic in computer graphics. This paper proposes a simple, efficient approach based on computer vision and particle system to model various 3D clouds. This method uses computer vision technology to extract 3D structure information of clouds from images, then using particles technology to fill the 3D space and render the cloud. At last, the cloud is rendered by using texture mapping and billboard technology. This method is suitable to model all kinds of clouds, such as stratus, cumulus, cirrus etc. It is an improvement over earlier systems that modeled only one type of cloud. Key words: cloud simulation; computer vision; particle system 云的模拟一直是计算机图形学中最具有挑战性的研究方向之一。在过去的20年里,国内外研究人员提出了一些云模拟仿真的方法,目前按照建模技术的不同,主要分为以下四种方法:第一是粒子系统方法1,2;第二是过程纹理函数方法3,4;第三是基于变形球的方法5,6;第四是基于物理过程的方法7,8。尽管这些方法能产生比较真实的云图像,但大部分云建模技术仿真产生的云的形状都是随机的,或者只是针对某一种类的云,想要产生不同种类的云(如积云、卷云、层云)就不能使用同一种建模方法。虽然基于物理过程的方法可以解决这一问题,能产生不同种类的云,但庞大的时间和空间消耗,目前的计算机工作平台还不能满足其要求。因此本文初步探索了一种基于计算机视觉技术和粒子系统的三维云模拟方法。该方法可以模拟出不同类型的云,如层云、积云、卷云等等。主要思想是首先利用计算机视觉技术从真实拍摄的云图中提取云的三维轮廓形状,然后使用粒子系统填充该三维空间。在具体实现时,我们首先是从云图中恢复云体的二维形状;然后利用计算机视觉技术扩充这个二维轮廓到三维空间从而构成一个三维的云体;最后使用成千上万个粒子填充该三维空间。每个粒子都具有半径、密度、颜色和透明度等属性,通过适当地调整云粒子的这些属性,我们可以得到很好的云效果。 本文在初步实现时,主要实现了如下的工作: (1) 根据现有的云图,通过用户标记特定的特征参数来选定相应的生成元,比如云的大体轮廓形状,在控制云的轮廓过程中,并适当地进行平移、缩放、旋转等组合操作来重建三维云的轮廓。 (2) 根据图像中云表面的明暗变化来恢复云层的厚度和光照的变化。 (3) 充分利用粒子特性在三维空间内进行粒子填充渲染。 1 技术背景*21.1 计算机视觉技术 计算机视觉研究的本质问题就是利用二维投影图像来认知和识别三维世界,三维重建技术能够从二维图像出发构造具有真实感的三维图形,为进一步的场景变化和组合运算奠定基础。其中阴影恢复形状法是计算机视觉中三维形状恢复(3D shape recovery)问题中关键技术之一9,其任务是利用单幅图像中物体表面的明暗变化来恢复表面各点的相对高度或表面法向量等参数值。基于图像的三维重建技术所需要的成本低,具有很大的灵活性,但是它一般只能达到简单的三维建模功能,也就是说它比较适合简单的规则几何体的三维重建。而云的外形是极其复杂的,根据云生成和增长的物理条件不同,云的形状也有很大的不同,比如积云轮廓分明,顶部凸起,云底平坦,云块之间多是不相连的直展云,因此这种云轮廓的提取就比较的简单。但像层云和卷云的轮廓形状不是分明,因此它的提取就有一定的困难。引入基于图像的方法来恢复云的三维形状主要是针对静态的立体感要求较强的可以对云进行全方位观察的演示场合。 1.2 粒子系统 粒子系统是迄今为止公认的模拟不规则模糊物体最为成功的一种图形生成方法。它采用了一套完全不同于以往造型、绘制系统的方法来构造和绘制景物,景物被定义为由成千上万个不规则的并且是随机分布的粒子组成,每个粒子都有一定的生命周期,每时每刻都在不断地运动和改变形态,由诸多粒子的集合而不是个别粒子形成了景物的整体形态和特征以及动态变化。粒子系统具有独特的优点:(1) 系统比较灵活,如其组成的粒子既可以是最简单的点,也可以具有一定的结构,可根据描述的对象随意调整,且相对来说易于实现,另外,根据场景的特点、粒子的数量、对时间以及硬件平台的需求不苛刻。(2) 系统的模型是过程化的,在其中可加入随机过程,因此,获得精细的模型不需大量的设计时间。在系统中,我们把云看成是由许多粒子填充而成,每一个粒子均具有:形状、大小、颜色、透明度、位置、速度和生命期等属性,尽管本文选择粒子系统来建模云体,但我们的目标是模拟出不同种类的云,云的动态变化不是很重要,因此粒子的运动及粒子间的相互关系都可以被忽略。 2 云的建模*22.1 基于图像的云外形生成 云的轮廓信息可以采用图像处理技术从真实云图自动提取或采用人工交互技术有选择的提取,或从多幅图像中提取云的三维轮廓信息10。由于大部分的基于计算机自动的重建方法效果不是很好,而且,对于云这种形状及其复杂的物体,利用自动重建方法重建三维信息具有很大的难度。因此,本文在重建过程中适当增加人为交互的方法,使用手动交互操作,通过人工标记云轮廓上一些特征点,并根据生成云形精度的需要,自动调整选取点的密度,记录下的所有选取点的坐标位置形成云的二维轮廓,然后根据一些已知参数把二维轮廓信息扩展到三维空间,从而构造出各类特定形状的外形。这样,一方面可以使算法简单,另一方面也可以使重建的效果更好。 2.2 云体的建模 本文使用扫描线填充算法确定云体内部各粒子的位置信息,在可能的位置上采用随机函数选中粒子位置。扫描线算法可以实现已知多边形域边界的填充,该填充方法是按扫描线的顺序,计算扫描线与待填充区域的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作。这里区间的端点通过计算扫描线与多边形边界线的交点获得。 云形的扫描线填充算法主要步骤:根据得到的二维坐标数据组成的多边形,按照扫描线填充算法的思想对其进行扫描,得到轮廓内部平面所有的均匀坐标数据,由于扫描线法得到的数据比较密集且整齐,为了避免云的单调,不自然,我们对每条扫描线上的数据点进行随机地选取,根据随机变量值的范围控制粒子密度。 3 云的绘制 在绘制云内的粒子时,由于粒子点很小,又很多,我们不能采用OpenGL提供的点或者三维型体来代表微小的粒子,因为系统性能无法承受,而且alpha混合的时候也不美观。本文采用纹理映射和Billboard技术来实现云的绘制。 3.1 纹理映射 本文使用贴上纹理的小四边形作为基本粒子,用小四边形经过纹理映射后代替点作为粒子,可以同时表现出粒子的形状、大小、透明度和颜色。而且根据场合和云精细程度的需要,一个面片可以代替一个粒子,也可以代替几百个粒子,这样,用稍微复杂的粒子可以减小粒子的数目而达到相同的效果,以提高性能。粒子纹理可以根据算法生成,也可以使用现有的图像。 3.2 单个纹理的生成 单个纹理采用RGBA的形式描述。并且R=G=B=A,A为透明度,灰度值越大,透明度越小。由于球状粒子的厚度从中心向边缘递减,可认为代表它的纹理的灰度值也应该满足这一规律,同时要求连续过度,可用高斯分布模拟这一趋势,其公式为:h(d)= 2expd2 22,其中:d代表距离球心的长度;h(d)代表距离球心d处的纹理的灰度值;为高斯分布的方差,为了达到归一化(即纹理数据只定义在-1.0,1.0-1.0,1.0区间内),将取为3;为中心峰值的调制值,调整的大小可以调整中心灰度的最大值;的取值范围是0,2,根据仿真效果发现将峰值取为0.4较为合适,此时=。图1为生成的3232粒子纹理图。 图1 单个纹理图像 3.3 Billboard技术 粒子在三维的空间中运行,其位置分布也是三维的,但是由于通常的纹理映射技术都是二维的,所以当云或者视点在场景当中运动时,可能由于相互角度的关系而发生失真现象,当视线平行于纹理映射平面时,甚至完全看不到云的存在。虽然某些OpenGL的实现提供了对于三维纹理的支持,可以解决这个问题,但是目前只有少数高档图形显示卡对三维纹理映射提供硬件支持。本文使用Billboard技术,Billboard属于一种视线跟踪技术,也称公告牌技术,它实质上是一种始终朝着观察者的物体。它通常是个多边形,空间物体通过合适的算法,形成其二维纹理,通过纹理映射粘贴到这个多边形上,从而从观察者的角度看,就仿佛看到了真实的三维空间物体。在绘制粒子时,主要针对变化的视锥,动态调整数据场中的每个粒子的法向量,使之正对视锥中线,从而保持一致的渲染效果。基本原理如图1所示。由于目标是使多边形对最终的场景贡献最大化,所以为了简单起见,需要将视矢量(view vector)调整至与法向量(n)重合的位置,由于法向量最终要通过顶点坐标体现出来,所以,只要计算出upleft,bottomleft,upright,bottomright这几个单位向量。具体实现的步骤如下。 (1) v=(x,y,z)(eyex,eyey,eyez); (2) left=vup; (3) 由于up不一定完全垂直于v,需要对其进行修正up=vleft; (4) upleft=left+up; (5) bottomleft=leftup; (6) upright=upleft; (7) bottomright=upleft. 使用Billboard二维纹理映射进行三维云模拟,方法简单,计算量小,且效果很好。 图2 Billboard原理图 3.4 一些细节 在粒子填充完以后,根据云图可以进一步调整云的效果。因为粒子的属性直接影响到云的效果,粒子的大小直接关系到云的分辨率,当视点较近时,粒子尺寸应该较小,而当视点较远时,粒子尺寸较大。粒子的密度直接影响到云的厚度和颜色,而颜色和透明度则间接反映了光照程度,因此通过调整粒子的密度和、颜色及透明度就可表现出光照的影响。在绘制过程中,可以通过随机地控制与粒子有关的这些参数来增加真实感。为了更好地模拟云彩效果,我们还可控制云团边缘的半透明度比中心的半透明度高,这样,在云粒子集中的地方,会呈现出亮白色;还可采用色彩融和的技术,把云粒子本身的颜色和天空面的背景颜色很好地融和起来,在云粒子分散的地方,会略微呈现出天空的背景面,这样就能得到较为真实的效果。 4 实验结果 本系统实验环境是在CPU PIII866,内存256,显卡Gforce2 32 M的个人计算机上,系统的三维显示部分采用OpenGL函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论