刘娟,胡杰,张权义,赵清,李富忠
基于随机分形的树木(枫树)可视化研究
刘娟1,胡杰2*,张权义1,赵清3,李富忠2*
1. 山西农业大学 文理学院, 山西 太谷 030801 2. 山西农业大学 软件学院, 山西 太谷 030801 3. 山西农业大学 农学院, 山西 太谷 030801
为了更好地发挥森林效益,提高森林的管理效果,需要虚拟不同树木生长过程的形态,建立相应的可视化系统,从而寻找树木生长规律,用来指导实践。本文首先介绍了虚拟单棵树木的两种分形方法:L系统和迭代函数系统。在此基础上对其进行改进,考虑到气候、温度、阳光和风向等因素对树木生长形态的影响,在生成规则和仿射变换、树木初始角度、树木主干与枝干的夹角、树枝的粗细和长度等五个方面分别引入随机因子,用Matlab软件进行编程,实现了枫树不同形态的绘制。此方法可以推广到虚拟不同植物的形态等,在虚拟农业研究、虚拟场景、景观设计、动画制作等方面有广泛的应用。
随机分形; 虚拟树木形态; 可视化
在自然界中,树木随处可见,并且种类繁多,形态各异。树木的叶形更是千奇百怪,无所不有。利用传统的试验方法研究不同树木的生长形态,不仅需要很长的试验周期,还要花费大量的费用、物力和人力。因此引入了虚拟树木技术,它需要借助计算机软件,定量地模拟不同树木的生长形态,直观地观察树木生长动态,可以快速地验证和检验树木的生长模型。这是一项重要且有意义的课题[1-8],在虚拟农业研究、虚拟场景、景观设计、动画制作等方面有广泛的应用。
虽然树木形态各异,结构不规则,但是观察到对于具体的树木而言,有树干、树枝、枝干、枝条和枝叶。并且发现树枝与树干的关系类似于枝条与枝干的关系,即局部和整体是相似的。同样地,叶脉的形状与整棵树的分枝结构相类似。基于以上树木特征,从几何的角度来看,局部与整体的关系可以通过一个仿射变换实现。所以可以把整个树木图形分成若干个子图,将原图在相应的仿射变换下变为所分的子图。以此类推,将所分的每个子图在仿射变换下形成更小的子图,这样得到一个分形集合。因此可以引入分形的方法对树木生长形态进行模拟,很好地表达了树木分枝的情形和相应的拓扑结构。常见的分形系统有分形L系统和迭代函数系统[1-4]。
近年来,许多研究人员应用分形系统模拟不同树木生长,如葡萄树、杏树、梨树、山楂树、桃树、开心苹果树等,并将其可视化[5-9]。所用的画图软件为OpenGL,本文将使用另外一种软件——Matlab软件进行编程,绘制任意形态的树木[9]。同时考虑到气候、温度、阳光和风向等因素对树木生长形态的影响,本文将在分形系统中引入一定的随机因子[10],控制树木的分支方向,树枝粗细,生长长度变化和生长角度等,使得到的树木形态更加逼真,自然。综上所述,本文将基于随机分形系统使用Matlab软件对树木生长形态进行模拟。
(1)将树木生长过程理想化:先生长出一根主干,再长出两条或者多条枝干,一段时间后每个枝干又生长出两条或者多条新的枝干。以此类推,生长出自然界中枝繁叶茂形态各异的树木。将上述过程进行简化,只考虑一根主干和由它生长出的两根枝条,即生成元。
(2)图1为某一种树的生成元,其中线段AB为树木的主干,长为L,(,)为初始点,(1,1)为终点。(2,2)为AB上一点,=1。由C点生出两条枝干,分别为线段CD和CE,=2,=3,且与主干的夹角分别为1和2。D点和E点的坐标分别为(3,3)和(4,4)。它们之间的相互关系为:
(1)式和(2)式中的绝对值保证了树木树枝的向上生长。并且需要保证主干线条比侧枝的线条粗一些。有时树木的主干不一定笔直的,可能是斜的。
图 1 某一种树的生成规则
(3)生成元与具体树木的结构特征有关。采取不同的生成元,生成的树木的图形也不一样。
自然界中常用分形理论来描述不规则且部分与整体以某种方式相似的景象。它的重要原则是自相似原则和迭代生成原则。常用的分形理论是L系统理论和迭代函数系统(IFS)理论。
L系统[11]通过对树木生长过程抽象概括所需的生成元(初始状态和生成规则),进行有限次迭代,对符号进行重写,可以生成形态各异的树木图形,很好地体现树木的拓扑结构。具体分为三步:
(1)对符号进行重写:通过一系列的字符串更换,更换原则为→,→,最后演变为:→→→→→。
(2)将树枝视为线段,根据树木的结构特点定义不同的字符,F: 表示沿原来的方向画树枝线段;z: 表示当前位置;n:表示递归深度;A:表示状态方向;+:表示沿当前方向逆时针旋转a角度;-:表示沿当前方向顺时针旋转a角度;[:表示进栈,保存当前状态;]:表示出栈,退出当前状态,即恢复原来状态;[ ]: 用来画树木的一个树枝,产生进栈和出栈操作。
(3)给定一个初始串,即初始状态,记为W。记生成规则为p,将p多次作用到W上,按照替换原则产生较长的命令串,进行图形的绘制。
迭代函数系统[11]是利用仿射变换(生成元)实现树木整体和局部相似的特性,一般为压缩放射变换,在重复迭代中可以旋转,放大,缩小,保持形状。常用来刻画树木的叶片和杆茎,描述树木的纹理结构。仿射变换一般为:
式子(3)中参数均为实数,对固定的树木而言,可以选择同一仿射变换,也可以选择不同的仿射变换。通常是按照一定的概率将树木整体形态以不同的仿射变换不断地迭代下去(变换的概率之和为1),进行树木形态的描述。
L系统模拟树木的拓扑结构,生成树干,树枝;迭代函数系统模拟树木纹理结构,刻画树木叶片。将两种方法相结合,可以描绘出一幅完整生动的树木生长图。
但是不论是L系统,还是迭代函数系统,若不改变生成元,那么生成的树木将会呈现一样的形态,呆板而又单一,毫无生机,不自然也不真实。同时考虑到气候、温度、阳光和风向等因素对树木生长形态的影响,这样得到的图形也不符合树木的生长规律。所以需要在以下影响树木形态的5个重要方面引入随机因子,改变生成元,从而实现形象逼真的树木形态。
(1) 控制生成规则和仿射变换
方法是由随机产生的数来决定新树枝的生成规则和仿射变换,如选取随机数c=rand(1),这样得到的树木形态更加生动逼真,贴近实际。
(2) 控制树木初始角度
树木的形态与初始角度有关,可以引入随机因子进行控制,如选取初始角度为A=20+rand*70等。
(3) 控制树木主干与枝干的夹角
树木主干与枝干的夹角影响树木的形态,可以引入随机因子进行控制,如选取树木主干与枝干的夹角为a=rand*70等。
(4) 控制树枝的粗细
由于树枝主干线条比侧枝的线条粗一些,所以粗细不是固定的,需要进行递减,如选取粗细为w=w-(1+rand*3)等,w为树木主干的粗度。
(5) 控制树枝的长度
同树枝的粗细一样,树枝的长度也是递减的,同时引入随机因子,如选取长度为L=L-(2+rand*4)等,L为树木主干的长度。
图 2 流程图
4.2.1 树木形态初始信息提取(以枫树为例) 枫树在晋中盆地随处可见,有很强的观赏性,尤其是深秋时,景色极其美丽。因此在虚拟场景中经常需要对枫树进行可视化研究。枫树是合轴树木,不像杨树[3]等单轴树木,有明显的主干,它具有复杂的形态,并且它的树叶很特别。通过查找资料[12],对枫树形态进行观察和分析,得到枫树具体的形态特征:
(1)关于枝干方面枫树为高大乔木,可高达24 m以上,冠幅可达16 m。枫树整个树冠呈开张状,树木顶芽生长到一定阶段后被侧芽取代,接在主轴上,分叉的角度一般为45°左右。抽象出初始信息,其中初始角度为A=pi/2,树木主干与枝干的夹角为a=pi/4,生成规则为:F[+F][-F]F[+F][-F]。当递推深度=4时,用Matlab软件编程,得到枫树图,见图3。
(2)关于树叶方面枫树叶片呈手掌型,并且是对生的,即枝条在每一节上一次生长出一双叶子,并且下一节对生的两个叶子与上一节的两个叶子有一定的角度,便于阳光的吸收,利于植物生长。抽象出初始信息后,我们需要通过求解6个方程得到仿射变换的6个未知数。取一片枫叶,按比例绘制图形,在原图中选择3个点(1,1),(2,2),(3,3),在作放射变换后,选择子图中对应的3个点(1´,1´),(2´,2´),(3´,3´),代入放射变换公式中,得到6个方程。通过求解下面两个方程组,即可得到仿射变换的6个未知数,,,,,为仿射变换的系数。
表 1 枫叶仿射变换的系数表
计算四组参数所占的概率。概率描述的是变换子图的面积在原图中所占的比例,计算公式为:
将表1中数据代入公式(7)依次得到相应的概率分别为0.13,0.28,0.26,0.33。当迭代次数为N=100000,用Matlab软件编程得到枫树叶,如图4。
图 4 枫树叶
4.2.2 改进及实现上面得到的枫树形态呆板而又单一,毫无生机,不自然也不真实,不符合枫树生长规律。现引入随机因子,服从均匀分布,取枫树主干与枝干的夹角为a= rand* pi/4,初始角度为A = pi/8+rand*3*pi/8,长度为L=L-(2+rand*4),选取粗细为w=w-(1+rand*3)。选择三种不同的生成方式分别为:p1= ‘F[+F][-F]F[+F][-F]’;p2='F[+F]F[-F[+F]]'; p3='FF-[-F+F+F]+[+F-F-F]'。取随机数c=rand(1),根据c的不同从而选择不同的生成方式。当>=0.8时,选择p1;当0.8>>=0.3时,选择p2;当<0.3时,选择p3,并且将L系统的递推深度和迭代系统的迭代次数N分别取为=6,=1000。
由于随机性,每次运行Matlab程序生成枫树的形态是不一样的。所以在操作过程中可以通过调整随机数的范围和生成规则,模拟自然界中枫树形态各异的生长状态。如图5,6,7,8。其中图5为静止时的枫树状态,图6,图7和图8为枫树随风摇曳的形态,图6为枫树随风向右摇摆,图7为枫树随风向左摇摆,图8为枫树随风左右摇摆。
图 5 枫树静止时的形态
图 6 枫树向右摇摆的形态
图 7 枫树向左摇摆的形态
图 8 枫树左右摇摆的形态
考虑到树木拓扑形态结构中整体与局部的相似性,本文采用分形L系统和迭代函数系统相结合的方法,并且在生成规则和仿射变换、树木初始角度、树木主干与枝干的夹角、树枝的粗细和长度等方面分别引入随机因子,借助Matlab软件进行编程,对枫树的不同形态进行了生动逼真的描述。
此方法具有广泛的应用,可以用来模拟不同树木,植物的生长形态,有很好的视觉效果,是虚拟农业研究、虚拟场景、景观设计、动画制作等方面的重要组成部分。此方法在农业中可以形象地模拟植物的形态,是计算机和农业相结合的一个领域。与传统农业相比,此技术既直观形象,又节省大量人力和物力。
本文还可以在此基础上做进一步的研究:(1)对树木生长形态进行三维模拟;(2)对树木生长形态进行动态模拟;(3)可以对树木群落进行模拟,不仅限于一棵树。
[1] 高扬,黎展荣,魏为,等.基于参数L系统的小叶榕树建模方法研究[J].计算机技术与发展,2016,26(7):156 -159
[2] 王安志,邵云.基于IFS的真实感分形植物仿真与实现[J].四川文理学院学报,2011,21(5):587-590
[3] 张权义.基于分形L系统的树木建模方法研究[J].山西农业大学学报(自然科学版),2017,37(8):605-608
[4] 李佳祺.基于中性景观模型的虚拟森林场景的构建方法研究[D].南京:南京大学,2018
[5] 吴翔,高晓阳,邵世禄,等.基于参数L系统的葡萄果枝生长可视化研究[J].中国农机化学报,2017,38(5):63-68
[6] 胡秀珍,张建,李淼,等.基于参数L系统的梨树树干模型三维可视化[J].计算机系统应用,2011,20(8):86-90
[7] 刘阁,周国民,胡林.基于L系统的开心形苹果树枝干模型[J].安徽农业科学,2009,37(16):7795-7796,7804
[8] Allen MT, Prusinkiewicz P, Dejong TM. Using L-systems for modeling source-sink interactions, architecture and physiology of growing trees: the L-PEACH model [J]. New Phytologist, 2005,166(3):869-880
[9] 尤鸿霞.使用MATLAB实现随机分形树模拟[J].南通纺织职业技术学院学报(综合版),2010,10(4):18-20
[10] 杨冬风,张娟,陈争光.随机可控递归分形树木模拟及实现[J].长春工程学院学报(自然科学版),2009,10(4):71-75
[11] 朱华,姬翠翠.分形理论及其应用[M].北京:科学出版社,2011:54-79
[12] 周云龙.植物生物学[M].北京:高等教育出版社,2007:45-50
[13] 吴欠,张怀清,陈永富,等.杉木形态三维可视化模拟技术研究[J].林业科学,2010,23(1):59 -64
[14] 赵庆丹,罗传文,孙海洪,等.基于OpenGL和VC的树木三维可视化模拟实现[J].东北林业大学学报,2010,38(11):54-57
[15] 孙红伟.基于迭代函数系统(IFS)的植物形态模拟与实现[D].兰州:兰州交通大学,2013
Study on Visualization of Maple Tree Based on Random Fractal
LIU Juan1, HU Jie2*, ZHANG Quan-yi1, ZHAO Qing3, LI Fu-zhong2*
1.030801,2.030801,3.030801,
In order to give full play to the forest benefits and improve the forest management effect, it is necessary to simulate the forms of different tree growth processes and establish the corresponding visualization system, so as to find the tree growth rules and guide the practice. This paper first introduces two kinds of fractal methods of virtual single tree: L system and iterative function system. On this basis, taking into account the influence of climate, temperature, sunlight and wind direction on the growth morphology of trees. Random factors are introduced in five aspects, including generation rule and affine transformation, initial angle of tree, angle between tree trunk and branch, thickness and length of branch, respectively. Matlab software was used to draw the different forms of maple. This method can be extended to the virtual forms of different plants, etc., and has been widely used in virtual agriculture research, virtual scenes, landscape design, animation production and so on.
Random fractal; virtual tree patterns; visualization
S757
A
1000-2324(2020)03-0495-05
10.3969/j.issn.1000-2324.2020.03.020
2019-01-02
2019-05-20
国家自然科学基金项目(31501876);国家自然科学基金面上项目(31872336);山西省科技厅面上青年基金项目(201601D021122);山西农业大学科技创新基金项目(2017005,2017019)
刘娟(1988–),女,硕士,讲师,研究方向:应用数学. E-mail:liujuannk@163.com
Author for correspondence. E-mail:17835425155@163.com; sxaulfz@126.com