基于OpenGL的分形植物模拟

时间:2022-09-30 09:31:41

基于OpenGL的分形植物模拟

摘 要:针对目前分形植物模拟多以平面形式给出的问题,采用粒子迭代的方法,利用OpenGL的优良性能,给出一种三维分形植物模拟的构造原理及实际算法,并根据该算法给出几个植物的分形模拟结果。该结果表明,根据所给算法可以得到相当逼真的植物全貌和叶。这种三维真实植物的模拟在目前已有的文献中尚不多见。所得结果对模拟三维场景有一定的实用价值。

关键词:分形;图形学;植物模拟;算法

中图分类号:TP391;TN911.73 文献标识码:A 文章编号:1004-373X(2009)12-059-02

Fractal Simulation of Plant Based on OpenGL

SONG Julong1,SUN Shu′e1,LIN Zhenxian2

(1.School of Science,Xi′an Shiyou University,Xi′an,710065,China;2.College of Science,Xi′an Institute of Post Telecommunication,Xi′an,710061,China)

Abstract:Aimming at the problem that almost all of present fractal simulation of plant is planar.Adopting the method of article iterative and excellent capability of OpenGL,the principle of structuring a fractal plant with its algorithm is given.And according to the algorithm,several results of plant simulation are given.The illustrations show that quite true whole tree and leaf can be obtained according to the algorithm.Such three dimensional true plant simulation is seldom seen in available literature.The results have a certain practical value in simulation of three dimensional scene.

Keywords:fractal;graphics;plant simulation;algorithm

0 引 言

近些年来,分形作为一门艺术已逐渐成了人们研究的一个新热点。事实上,早在19世纪末、20世纪初,人们已经注意到所谓“病态”函数的图形。诸如冯•科赫(Von Koch)曲线、皮亚诺(Peano)曲线以及Sierpinskin垫片等。尽管当时人们关心的只是这些函数的数学性质,但无疑它们特殊而优美的图形也给人们留下了深刻的印象。至20世纪70年代,法裔美国数学家曼德尔布罗特(B.B.Mandelbrot)于1975年正式提出分形的概念,分形才真正成为人们研究的新热点。

经历了近百年的漫长岁月,分形才最终形成一门科学。在众多关于分形应用的研究中,分形在图形学中的应用是重要的一支。除了Mandelbrot本人在这方面做的工作以外,Clifford Pickover,M.F.Barnsley等人对这一分支的发展也做出了杰出的贡献。在我国也有不少学者在近年来对分形的图像模拟应用进行了诸多研究[1-4],在这些学者的研究中,大多都局限在对分形植物的构造方法上,所得到的图形也都是二维的。尽管他们也提出了各种不同的分形图案生成方法[5-8],并得到了许多漂亮的图案[8,9],但逼真的程度还是不足,也有人尝试做三维空间的模拟[9],但所得结果并不理想。当然分形也有许多其他方面的应用[10],这里就分形的植物模拟进行探讨。

在分形图形的研究方面,分形树的构造是人们关注的一个热点。关于这一方面的研究,人们主要关心的是2个方面的问题:如何构造出更加逼真的树;如何使树的生成速度更加快捷。这两点目前解决得还不是很理想,这里充分利用当今计算机高度发达的优势,特别是OpenGL这一良好的建模工具,建立了几个比以往更加逼真的植物模型,给出了二维和三维的例子。其主要特点在于:具有几乎可以乱真的视觉效果,给人以强烈的真实感;是真正的三维图形而不是用二维图像来造成视觉上的三维效果。这里所得结果对真实场景的图像模拟具有一定的实用价值;对装帧、装饰艺术也有一定的使用价值。另外,对计算机艺术工作者及印刷、纺织等领域的图案设计者都具有一定的参考价值。

1 建模原理

树或其他类似于树的植物都具有分形的最主要特性――自相似性。这一点正是分形独有的特点。所以利用分形来建立植物模型,具有得天独厚的自然优势。

首先,给定一个作为树干的线段(在二维情形中)或圆柱(在三维情形中),以确定其长度和位置;然后,将其复制,再沿其生长方向平移到某一点,即树的分叉点,将其按一定比例收缩后,绕该点向右旋转一定的角度。同样,将树干再次复制后沿生长方向向上平移到另外一个分叉点,将其按一定比例收缩后再绕该点向左旋转一定的角度;如此反复,根据需要决定树的总的大枝。平移的次数取决于树究竟需要几个分枝。平移后的落点就是树的分叉位置。对于三维情形,在旋转的时候不仅要向左右旋转,而且需要向前后旋转一定的角度,这样才能真正产生三维的图形。当完成平移之后,再将每个收缩并旋转之后的线段或圆柱作为新的树干,再重复前面的过程。如此循环下去,重复给定的次数之后,一棵树就构成了。对于树的形状也可以加以控制。比如,可以通过调整伸缩比例决定树的高度;调整平移的位置决定树冠的高度;调整旋转的角度决定每个分枝向外伸出的角度等。如果为了使所得图形更加逼真,还可以将上述参数取为某一范围之内的随机数。

用上述方法得到的树干和所有的树枝都是直的,如图1所示,因此不够逼真。为此,可在每次进行分枝的时候,在保持节点不动的情况下,用B样条曲线来替代直线,这样就可以得到所给出的例图的非常逼真的效果。图2和图3 就是采用这种方法构造的,具有非常逼真效果的例图。对于三维的情形,可以用拉伸的方法,将一个平面上的小小的圆,沿B样条曲线进行拉伸,得到三维效果且具有一定直径的不规则柱状树干或枝条,也可以用三维点来模拟三维空间中有一定直径的树干和枝条。图4和图5就是采用这种方法形成的。

图1 二维树的结构

图2 由例1的方法得到的树

2 算 法

下面是一般二维树的生成算法:

步骤1:给定一个主干,再给定一个树的级N,令n:=1;

步骤2:在主干上分别取点A,B,C及顶点D,并将A,B,C各点的水平坐标做一个微小的随机偏移;

步骤3:将主干分别平移到A,B,C,D各点,然后分别收缩为原来主干的r(小于1)倍,并向左或向右旋转α,β,γ,φ,ψ角度,如图1所示;

步骤4:做过主干端点及A,B,C各点的B样条曲线。令n:=n+1;

步骤5:若n

这里可以调整各旋转角度α,β,γ,φ,ψ,以决定各枝的分离程度;调整伸缩因子r,以决定各枝的长度;调整A,B,C的位置及其水平坐标偏移量,以决定树冠的高低以及树枝的弯曲程度。

3 数值模拟

例1:当在上述算法中取A,B,C位于主干的1.95/3,2.5/3,2.8/3处,收缩因子为r=5/7及N=5时,得到图2所示的树。每一级树枝都是1条B样条曲线,并根据不同的级确定不同的宽度,从而得到看起来的树干和树枝。

例2:图3也是依据上面的算法,并将其中的几个参数取为随机值所得到的结果。由于它的参数是由CPU时钟所决定的随机数,所以这样得到的图形是不可重复的。

图3 由例2的方法得到的树

图4 根据例3得到的模拟图

例3:图4中的两个图像,是将上述算法在OpenGL环境下应用到三维空间后所得到的一片三维蔬菜叶和一株三维树。其中,树的构造是完全空间化的,而叶则鉴于其本身的结构特性,只是浮雕式的。可以看出,在简单的光照下,结果的逼真程度是相当高的。

4 结 语

以上给出一个绘制分形树的算法,根据这一算法同时也可以绘制植物的叶,并经过数值实验得到了几个形态相当逼真的树的模型。这一结果对于植物的数值模拟有一定的意义,对于美术创作也有一定的使用价值。不足之处在于只有阴影而没有投影,这一问题有待进一步的解决。

参考文献

[1]霍翠花,柴立和.生态工业系统的分形生长理论分析与模拟[J].自然科学进展,2007,17(11):1 583-1 588.

[2]田雨.对分形算法中递归法的研究[J].四川大学学报,2007,44(5):990-994.

[3]程学珍,曹茂永,徐小平.基于分形的自然景物描述方法研究[J].系统仿真学报,2007,19(21):4 957-4 959.

[4]赵慧兰.基于分形几何学的植物图像计算机模拟[J].浙江师范大学学报,2007,30(3):299-302.

[5],赵德平,牛志成,等.基于广义Mandelbrot集的分形图像压缩算法研究[J].计算机工程与应用,2007,43(8):84-85.

[6]黄天云,张传武.分形插值算法在分形自然景物模拟中的应用[J].计算机工程与设计,2007,28(16):3 994-3 997.

[7]丁永胜,堵秀凤,张水胜.Matlab分形植物模拟[J].齐齐哈尔大学学报,2008,24(3):63-65.

[8]孙艳,刘弘.基于L-系统的植物形态模拟研究[J].信息技术与信息化,2007(5):80-81.

[9]郝卫亮,王剑英.基于分形的三维树木形态模型[J].计算机应用,2007,27(9):2 137-2 139.

[10]黄琼,徐丰.分形树的SAR 成像模拟[J].微波学报,2007,23(增刊):205-210.

上一篇:基于嵌入式ARM9的USB设计与实现 下一篇:软件需求获取形式化的案例研究