基于OpenGL的分形植物模拟

2009-9-24 作者: 宋巨龙 孙淑娥 林椹妙 来源: 万方数据

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

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

  引言

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

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

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

  1、建模原理

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

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

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




责任编辑:熊东旭