基于分形与图形学的自然条件下沙丘植被模拟

2017-06-15 17:23芸,张
辽宁石油化工大学学报 2017年3期
关键词:图形学沙丘着色

刘 芸,张 燕

(辽宁石油化工大学 计算机与通信工程学院,辽宁 抚顺 113001)



基于分形与图形学的自然条件下沙丘植被模拟

刘 芸,张 燕

(辽宁石油化工大学 计算机与通信工程学院,辽宁 抚顺 113001)

自然条件下的沙丘形状多变,自然条件恶劣的沙丘地带其赖以生存的植被常常呈现出不同状态。利用计算机图形学和分形几何技术模拟沙丘及植被的生长状况。通过函数迭代系统实现单棵树木及树林的形态模拟,对枝干进行加粗处理模拟树木在沙丘中的生长状况。采用追踪仿射变换点的方法对着色树木的树叶颜色进行划分,实现树木颜色季节性的变化。利用计算机图形学方法绘制花朵,采用随机函数对树木中的部分点用花朵替换,模拟繁花点点的林木。利用正弦曲线不同相位的组合绘制沙丘,与树木结合实现沙丘植被场景模拟,通过加入外力影响因子模拟自然条件下沙丘迎风坡上的自然形态。最后增加沙丘密度及扩大树木覆盖面积生成局部树林场景的模拟。

迭代函数系统; 树木模拟; 沙丘模拟; 图形学

与传统计算机图形学相比,分形几何在描述自然景物方面具有非常大的优势。自然界中存在着大量的不规则事物,用传统的欧式几何是难以进行有效描绘的,而分形几何则是以不规则物体为研究对象的几何学,可以对云、山、树木和水等自然景物进行逼真模拟。分形描述自然景物有迭代函数系统、L-系统、粒子系统等方法。迭代函数系统(Iterated Function System,IFS)是绘制分形图形的重要方法之一[1],主要通过仿射坐标转换来生成几何系统,利用几何对象的整体和局部细节在仿射变换的意义下具有自相似结构的特性对分形图形进行模拟。目前已经利用IFS实现了很多的植物分形模拟,文献[2]利用IFS方法生成荷叶叶脉,用三次参数样条曲线绘制叶边缘轮廓,实现了荷叶的逼真模拟;文献[3]利用IFS和随机迭代方法实现树木模拟;文献[4]探究了树木着色方法以及光照状态下的树影绘制方法;文献[5-6]在IFS基础上加入风力影响因子从而实现风中摇曳的树木模拟。以上研究都是基于IFS对单棵植物的模拟,本文采用文献[4]及文献[5-6]的方法实现单棵树木绘制,并对花朵以及沙丘进行的模拟融入到IFS算法当中,完成沙丘上树木以及带花树木的丰富场景模拟。

1 IFS模型及树木造型

1.1 IFS模型

IFS的主要思想是注重几何对象的整体形态,并认定几何对象的总体结构与局部细节在仿射变换意义下,具有自相似性,即通过仿射变换将原有图形变换到局部生成该图形的缩小版复制品,这一过程可以迭代地进行下去,直到得到满意的图形。而产生复制品的过程相当于对原图形做一次压缩仿射变换,描述自然景物的关键是找到合适的压缩因子从而描绘出相应的图形。一个二维的IFS由两部分组成:(1)压缩仿射变换集合{w1,w2,…,wn};(2)概率集合{P1,P2,…,Pn}。仿射变换的数学表达式为:

(1)

式中,w表示仿射变换;(x,y)表示仿射变换前的坐标点;(x′,y′)表示经过仿射变换后的坐标点;a、b、c,d、e、f表示仿射变换系数,a、b、c、d根据其取值的不同可以是旋转变换、仿射变换、比例变换及错切变换其中一种或这些变换的组合,e,f用来确定平移变换。仿射变换也可以用矩阵式(2)表示:

(2)

式中,A表示2×2矩阵,t表示列向量。

随机迭代算法中的概率Pi可以近似由式(3)表示:

i=1,2,…,N

(3)

式中,Pi>0,且P1+P2+…+PN=1。

然而并不是所有的仿射变换都可以用于迭代函数系统,它必须是收缩的,即为压缩仿射变换[7-10]。

1.2 树木造型

IFS是确定性算法和随机性算法相结合的一种方法,利用IFS方法生成分形图形的步骤如下:

(1)确定仿射变换wi。

(2)确定概率Pi。

(3)按照相应的概率,随机地从仿射变换集中选择一个仿射变换wi作为迭代规则迭代一次,不断重复此迭代过程,产生的极限图形就是所要绘制的分形图形。

IFS码是迭代函数系统的关键部分。IFS码的获取通常是通过拼贴方法实现的。对树木模拟的拼贴图形如图1所示。根据拼贴图形计算得出的一般树木的IFS码如表1所示,其中w1和w2区域表示枝干,w3、w4、w5和w6区域表示树叶,根据式(3)利用仿射变换系数计算得出各个仿射变换相对应的概率近似值为P1=P2≈0.1,P3=P4=P5=P6≈0.2,然后通过rand( )函数产生随机数确定所利用的仿射变换并进行计算得出变换后的坐标点,并用SetPixel函数画出坐标点实现IFS的单棵树木模拟。生成的一般树木模拟图形如图2所示。由于沙丘缺乏水分且风沙较大,所以沙丘中的树木较一般的树木枝干粗,粗枝干可以更多地储存水分抵挡风沙。为了绘制出更适合沙丘特点的树木,对树木枝干进行加粗处理,将控制枝干的仿射变换w1和w2的系数进行细微调整,调整结果适合沙丘特点树木的IFS码如表2所示,最终实现适合沙丘特点的树木模拟图形如图3所示。

图1 对树木模拟的拼贴图形

表1 一般树木的IFS码

图2 一般树木模拟图形

表2 适合沙丘特点树木的IFS码

图3 适合沙丘特点的树木模拟图形

2 树木颜色及形态变化模拟

2.1 树木着色及随季节变化的模拟

对IFS树木进行着色可以直接通过对坐标点设置颜色来实现。设置变量k,用k=1,2,…,6分别表示仿射变换区域w1,w2,…,w6。根据不同的k值,利用SetPixel函数对坐标点赋予不同的颜色,如图4中用原始着色方案生成的树木。将落到w1、w2区域的点设置为棕色代表树干,将落到w3、w4、w5和w6区域的点分别设置为浅蓝、深蓝、粉色和绿色。根据这种方法可以将树干着上棕色树叶着上绿色,即w1和w2区域着上棕色,w3、w4、w5和w6区域着上绿色。上述方法使树木旁支的小枝干上也着上了绿色,显示的树木效果生硬不逼真。优化后的树木着色方案,着色时不仅要考虑当前的仿射变换点,还要跟踪前3个仿射变换点,只要其中有1个点是依据原始树干的仿射变换系数得到的,该点就着以棕色,否则着以绿色。优化后的树木着色算法流程如图5所示。

图4 原始着色方案生成的树木

图5 优化后的树木着色算法流程

优化后着色方案生成的树木如图6所示。基于上述方法还可以对追踪点进行层次性的划分,对所追踪3个点中的1个或2个点进行判断,对w3、w4、w5和w6区域进行仿射变换计算,依据得到的结果为当前点设置不同的颜色,使树叶的颜色呈现出层次的变化,更加贴近生活中五彩缤纷的树木颜色。夏季到秋季树叶颜色变化模拟结果如图7所示。

(a)夏初(b)夏末(c)秋初(d)秋末

图7 夏季到秋季树叶颜色变化模拟结果

2.2 外力因素影响树木形态的模拟

现实生活中树木的形态常常因外力的影响而变化。为了丰富树木形态模拟,在仿射变换中加入风力影响因子的参数变量,来模拟自然环境中随风摇曳的树木。首先将仿射变换写为极坐标的形式如下:

其中,r1和r2分别为x坐标和y坐标的伸缩因子,θ1为x轴旋转角,θ2为y轴旋转角。将原有IFS码中的a、b、c和d改为r1、r2、θ1和θ2,而e、f和概率P保持不变。由于树木各个部分受风力的影响程度不同,故加入的变量值也应是不同的。设风力参数变量为wind,w1和w2区域受力为0,w3和w4区域受力为风力参数变量wind设置值的25%,w5和w6区域受力为wind。将参数θ1和θ2中加入受力情况可以实现摇曳树木的模拟。wind取值不同时风中摇曳树木模拟如图8所示。

(a) wind=14 (b) wind=21 (c) wind=28

图8 wind取值不同时风中摇曳树木模拟

3 带花朵的树木模拟

3.1 花朵模拟

花朵的绘制是通过正弦余弦函数变换实现的。设置花朵半径r,以及坐标点(x,y)。相关参数为:

r=d[1+1/128sin(6×i)][1+sin(3×i)]

其中,参数d用来控制花朵的大小,1/128用来改变半径变化幅度,6与3用来改变变化周期。通过横坐标x=rcos(0.6×i+PI/60)和纵坐标y=rsin(0.6×i+PI/60)来设置连线坐标x轴及y轴的变化,使其呈周期性变化。其中0.6用来改变控制周期,PI/60用来改变初始位置。带花树木模拟结果如图9所示。当d=8时,图9(a)表示用LineTo函数绘制的五瓣花朵树木模拟图案[11]。图9(b)表示改变控制周期的参数0.6为0.5得到的六瓣花朵树木模拟图案。

3.2 带花朵的树木模拟

一般基于IFS算法的树木模拟图案都是由仿射变换计算出的坐标点所描绘的,模拟的图案能形象地描绘出树木的形态及颜色。但是想要描绘出带有花朵和果实的图案却有一定的难度。本文对IFS算法进行一定的改进,将一部分坐标点用图形学生成的花朵或果实图案代替,使IFS算法与计算机图形学的内容结合,生成更加丰富的图案。通过观察自然界中带有花朵的树木可知,有些花朵生长在小枝干的边缘,这里就可以将靠近小枝干的坐标点用花朵图案的函数代替,从而实现想要的结果。贴近小枝干的坐标点选取可以由条件z[3]==0或者z[3]==1来实现,这些坐标点是初始枝干经过仿射变换计算得来的最末端点。但是因为这类坐标点的数目过多,如果将这些点全部用花朵代替,生成的花朵数量过多并且叠加在一起,效果不好。所以添加了随机函数,即从这些点中随机选取一些点生成花朵,最终使结果更自然一些。

(a) 五瓣花朵树木模拟

(b) 六瓣花朵树木模拟

4 沙丘植被场景合成与效果

沙丘模拟图案可以通过Bezier曲面和B-spline曲面来实现[12]。为了方便与IFS模拟的树木进行结合,本文采用正弦曲线的不同相位组合来实现。正弦曲线是通过CDC类SetPixel函数的描点方式来绘制图形,使用C语言库函数sin计算得出横坐标x对应的纵坐标y的值,根据坐标值使用LineTo函数进行绘制。

将沙丘模拟图案与IFS的模拟树木结合在一起,可以模拟在自然界中沙丘上树木的景象。将沙丘模拟图案与树木模拟图案结合需要改变树木的大小、数量及单棵树木迭代次数等,这样可以使最终得到的结果更加逼真。本文将树木大小缩小至原来的10%,树木的迭代次数减少到原来的1%,添加循环生成两排间距相等的树木,并确定初始位置使树木刚好种植在沙丘的一个坡面,结果如图10所示。在树木模拟图案中添加风力影响因子,模拟沙丘迎风坡上树木被风吹动的效果场景,结果如图11所示。将模拟沙丘曲线之间的距离由2缩小到1可以增加沙丘的密度,调整树木间的距离增加树木棵数及扩大树木覆盖面积形成小树林,结果如图12所示。

图10 沙丘上的树木模拟

图11 沙丘迎风坡上的树木模拟

图12 增加树木密度的沙丘上小树林模拟

5 结 论

IFS算法作为分形理论的一个分支,在植物形态模拟方面有着很强的优势,尤其是对自然界中不规则的树木的模拟。用IFS算法实现的树木模拟图形生动而形象。本文通过着色方法对树木实现着色,使树叶颜色呈现出层次变化模拟树木随季节变化的效果。为了使IFS算法模拟的图形更加丰富,利用图形学的方法生成了沙丘和花朵图案,并将其融入到IFS算法当中,使得到的图案达到理想效果,实现了更加丰富的植物场景模拟。

[1] Barnsley M F, Demko S. Iterated function systems and the global construction of fractals[J]. Proceedings of the Royal Society of London, 1985, 399(1817):243-275.

[2] 李娜,王琰.基于IFS的荷叶叶脉纹理算法[D].沈阳:沈阳理工大学, 2009.

[3] 肖海蓉,任民宏,郭天印.基于IFS分形树的VC++实现[J].电脑知识与技术,2008,2(15):85-86.

[4] 李庆忠,韩金姝.基于IFS的树木形态模拟真实感的研究[J].计算机技术与发展,2005,15(7):86-88.

[5] 杨金瑞.基于IFS理论的植物分形模拟[D].贵阳:贵州师范大学,2009.

[6] 邹运兰,杨志红,王仁芳,等.基于迭代函数系统IFS的动态树木模拟[J].计算机应用与软件,2012,29(3):118-121.

[7] 孙博文.分形算法与程序设计[M].北京:科学出版社,2004:86-104.

[8] 孔令德.计算机图形学基础教程[M].北京:清华大学出版社,2008:174-176.

[9] 李水根,赵翔鹏.二维和高维空间的分形图形艺术[M].北京:科学出版社,2008:97-101.

[10] 苏小红.计算机图形学实用教程[M].3版.北京:人民邮电出版社,2014:93-108.

[11] 何钦铭,颜晖.C语言程序设计[M].杭州:浙江科技出版社,2004.73-110.

[12] 刘瑞宁,梁水,李伟明.Visual C++开发实战1200例[M].北京:清华大学出版社,2011:593-595.

(编辑 陈 雷)

Simulation of Dune Vegetation under Natural Conditions Based on Fractal and Graphics

Liu Yun,Zhang Yan

(SchoolofComputerandCommunicationEngineering,LiaoningShihuaUniversity,FushunLiaoning113001,China)

Under the natural conditions,the shape of sand dunes is varied and the natural conditions of the sand dunes are very poor,and the vegetation on which they live depends is often on different states. The computer graphics and fractal geometry were used to simulate the growth of dune and vegetation. Through the function iteration system,it can achieve a single tree and forest of the morphological simulation,and also simulation the trees in the dune growth by bolding the branches. The color of trees is divided by the method of tracing the affine transformation points to achieve the color of trees changing with the season. Using computer graphics to draw flowers and the random function to replace some of the points on the trees for flowers,little flower of trees was simulated. Using the combination of different phases of the sine curve the dune is drawn and then the dune vegetation scene is simulated by combining with the trees. The external factors are used to simulate the natural shape of the dune windward slope under natural conditions. Finally,by increasing the density of dune and the number of trees to expand the area of trees the local forest scene simulation is generated.

Iterated function system; Tree simulation; Sand dune simulation; Graphics

1672-6952(2017)03-0058-06 投稿网址:http://journal.lnpu.edu.cn

2016-12-29

2017-02-03

辽宁省高等学校优秀科技人才支持计划项目(LR2013015)。

刘芸(1991-),女,硕士研究生,从事图形图像方面的研究;E-mail:332320361@qq.com。

张燕(1968-),女,博士,教授,从事产品信息建模、虚拟现实技术方面的研究;E-mail:976802661@qq.com。

TP391.9

A

10.3969/j.issn.1672-6952.2017.03.013

猜你喜欢
图形学沙丘着色
蔬菜着色不良 这样预防最好
苹果膨大着色期 管理细致别大意
沙丘
会弹琴的沙丘
最大度为6的图G的邻点可区别边色数的一个上界
10位画家为美术片着色
沙丘
突出实践需求的GIS专业《计算机图形学》课程优化改革
国庆记忆
第7届国际图象图形学学术会议