杨 丹,汤晓安
摘 要:针对港口三维监控系统中云绘制的特点,分析云绘制的逼真度和实时性需求,研究相应的云绘制方法,提出一种基于噪声纹理的云层绘制方法。该方法采用基于纹理构造云模型,降低了所需绘制的几何数据;采用设置纹理重复模式,实时更改纹理矩阵,实现云层运动的效果,采用多纹理技术将两张噪声纹理成一定角度叠加,实现云自身形态的连续变化。通过该方法绘制了港口三维监控系统云层,具有较强的三维虚拟现实的真实感。实验结果表明,该方法可显著提高云绘制效率,显示效果令人信服。
关键词:三维监控系统;云绘制;噪声纹理;多纹理
中图分类号:TP311.13文献标识码:A
文章编号:1004-373X(2009)20-040-02
Method of Plotting Clouds Based on Noise-Texture Operator
YANG Dan,TANG Xiaoan
(College of Electronic Science and Engineering,National University of Defense Technology,Changsha,410073,China)
Abstract:Aiming at the features of plotting clouds in the port three-dimensional monitoring system,the fidelity and timeliness requirements of plotting clouds are analysed,the method of corresponding plotting clouds is researched,a method of plotting clouds based on a noise-texture operator is put forward.This method uses cloud model based on texture and reduces the geometry data ,sets texture repeat mode,changes the texture of real-time matrix and realizes the cloud layer movement effect.Using the multi-texture technology superimposes two noise textures according to a certain point of view and realizes the cloud continual change.In this way,plot clouds of the port three-dimensional monitoring system and the realistic of three-dimensional virtual reality is enhanced.Experiments demonstrate that the method could improve efficiency of plotting clouds,so the effect of display is convinced.
Keywords:three-dimensional monitoring system;plotting clouds;noise-texture;multi-texture
云的绘制在港口三维监控系统中,不属于最核心的显示内容,但是对于增强三维虚拟现实的沉浸感有非常大的作用。因此必须找到显示效果既能令人信服,同时绘制效率又高的云绘制方法。
在此面向刚空三维监控系统中云的特点,针对现有云绘制方法的不足,提出了构造Perline噪声纹理,并采用简便合理的纹理矩阵变换方法,实现了云层的绘制,其具有一定的应用参考价值。
1 经典的云层建模
1.1 云层建模的四种常用方法
体过程建模方法(Volumetrie Proceduml Modeling)是一种过程建模方法。体过程也称为超纹理(Hypertextures)、体密集度函数(Volume Density Functions)或者模糊滴状斑点(Fuzzy Blobbies),它利用一定算法对三角体对象和自然现象进行定义和动画[1]。1985年Geoffrey Y.Gardner提出的云模型由一个天空平面、椭球体和数学纹理函数三部分组成。同年,Ken Perlin给出的Perlin噪声函数[2]。所有种类的纹理都可以用Perlin噪声来生成,云纹理的渲染尤其适合于Perlin噪声,已经用来生成云的三维动画,该方法目前仍在研究和发展中[3]。
1.2 常用方法的不足之处
进一步研究发现,场景中的云分布随机性比较强,但是云的运动和其本身形态的变化必须是连续的。为了满足这一要求,传统的基于噪声纹理的云绘制方法需要建立多个连续变化的噪声图像,在绘制时按照顺序依次调用,产生连续变化的效果。然而这种方法有几个缺陷[4]:噪声纹理序列的生成过程较长,需要在预处理中实现;因为噪声纹理在预处理阶段生成,则在系统实时绘制过程中,没办法进行修改,纹理重复出现的问题较突出;如果要减小纹理重复问题,就必须增加纹理序列的内容,对绘制资源的消耗严重;如果绘制场景的天空范围较大,则生成的噪声纹理分辨率也要求较高,同样也会严重消耗绘制资源。
基于以上几点考虑,这里认为如果能够在系统运行时实时生成噪声纹理,同时减少噪声纹理序列的数量,就能较好地解决问题[5]。
2 改进的云片绘制技术
港口三维监控系统中视点的浏览高度最高可以达到200 m,而在晴天状态时,在这一高度以下的空间观察,通常能见到的云都处于相对较高的大气层空间,因此云的显示效果集中表现为云层的底面,而云的厚度不容易被观察到。因此采用基于纹理的方法来构造云模型,将所需绘制的几何数据降到最低[6]。
在实际应用中,生成一张分辨率为512×512的Perlin噪声图像(如图1所示)作为纹理覆盖整个天空,其中灰度值与图像的透明度成对应关系,即Alpha=GrayScale [7]。为了实现云的连续运动,可以设置纹理重复模式,并且实时更改纹理矩阵,实现纹理图像的偏移,从而达到云层运动的效果。如图2所示,虚框表示一张完整的纹理图像,在绘制过程中不断改变纹理偏移矩阵,在绘制中使用的白色竖线框中的图像作为纹理[8]。
图1 Perlin噪声图像
图2 纹理矩阵偏移效果
进一步,为了实现云自身形态的连续变化,可以利用多纹理技术将两张噪声纹理成一定角度叠加,输出的噪声纹理图像为[9]Alphaout=Alpha1×Alpha2,从而保证两张纹理叠加输出的图像透明度仍然在[0,1]范围内,如图3所示。
图3 纹理叠加效果
由于只使用了一张噪声纹理图像,大大减少了绘制资源的占用和消耗,并且通过多线程方式,能够实时生成新的噪声纹理,从而实现云层的多样性变化。在实际应用中,达到了非常真实的效果[10]。实际效果如图4所示。
图4 绘制云层的场景图
3 结 语
本文针对港口三维监控子系统逼真度和实时性的要求,对云层绘制算法进行了研究,提出了通过构造Perline噪声纹理,并采用简便合理的纹理矩阵变换方法,实现了云层的绘制,具有一定的应用参考价值。
基于本文思路的云层绘制技术现已在港口领域投入测试应用,实现了三维可视化监控系统的逼真度和实时性要求,为其他领域提供了一定的辅助分析手段。
参考文献
[1]Ebert D S.Advanced Modeling Techniques for Computer Graphics [J].ACM Computing Surveys,1996,28(1):153-156.
[2]何东建,耿楠,张义宽.数字图像处理[M] .西安:西安电子科技大学出版社,2003.
[3]Pallister K.Generating Procedural Clouds in Real Time on 3D Hard-ware[EB/OL].http://cedar.intel.com/software/idap/media/pdf/games/procedural_clouds.pdf,2003.
[4]齐敏,郝重阳,佟明安.三维地形生成及实时显示技术进展[J].中国图像图形学报,2000,5(4):269-275.
[5]Kiril Vidimce,Wim Sweldens,Peter Schroder.Normal Meshes Proceedings of Siggraph[M].Addison Wisley,2000.
[6]谢美华,王正明.基于图像分解的多核非线性扩散去噪方法[J].计算机应用,2005,25(4):757-759.
[7]姜东焕,冯象初,宋国乡.基于非线性小波阈值的各向异性扩散方程[J].电子学报,2006,34(1):170-172.
[8]庄新华.Computer Vision Graphics and Image Processing[Z].1990.
[9]章孝灿,黄智才,赵元洪.遥感数字图像处理[M].杭州:浙江大学出版社,1997.
[10]Haralick R M,Shanmugan K,Dinstein I.Textural Features for Image Classification[J].IEEE Trans.on Syst.Man Cyber.,1973,3(6):610-621.