文章信息
- 白静, 张怀清, 刘闽
- Bai Jing, Zhang Huaiqing, Liu Min
- 合轴分枝树木形态结构三维可视化模拟方法
- Three-Dimensional Visual Simulation of Sympodial Branching Trees Morphological Architecture
- 林业科学, 2014, 50(12): 73-78
- Scientia Silvae Sinicae, 2014, 50(12): 73-78.
- DOI: 10.11707/j.1001-7488.20141210
-
文章历史
- 收稿日期:2014-01-22
- 修回日期:2014-06-26
-
作者相关文章
树木三维可视化模拟是指运用计算机图形学中的科学可视化技术与方法对树木的形态结构、空间结构及动态生长过程等进行模拟(郝小琴,2001)。树木种类繁多,几何形态与结构复杂,按分枝模式不同,树木可分为单轴分枝与合轴分枝以及假二叉分枝树木,其中最主要的是单轴分枝和合轴分枝树木。单轴树木,其形态相对简单,对其进行的可视化模拟研究较多,如杉木(Cunninghamia lanceolata)(卢康宁等,2010; 吴谦等,2010; Liu et al.,2010; Zhang et al.,2009)、樟子松(Pinus sylvestris var.mongolica)(董灵波等,2011)、马尾松(Pinus massoniana)(孙静静等,2007; 唐丽玉等,2006)、红松(Pinus koraiensis)(赵庆丹等,2010)等都已经实现了三维可视化,但是合轴树木相对结构复杂,只有较少的研究涉及(胡秀珍等,2011)。
常见的树木可视化技术有L-System(徐畅凯等,2012)、迭代函数系统IFS方法(李庆忠等,2004; 肖海荣,2011; 刘树群等,2012; Sprott,1994; Barnsley et al.,1985)及粒子系统模型(雷蕾等,2004)等。IFS方法模型简单,适于表达整体与局部自相似性的物体,在树木形态模拟方面比其他方法更具明显优势。
本研究基于DirectX平台,运用C#语言实现了合轴分枝树木的三维可视化模拟,指出了能够描述合轴分枝树木特征的参数指标,并以槐(Sophora japonica)为例,统计分析了参数指标的分布规律与范围,建立了适于表达合轴分枝形态特点的数据结构,给出了IFS入口参数对应于合轴分枝结构的实际意义,并对所有参数都引入一定的随机量,应用IFS方法完成了合轴分枝树木的形态结构建模。
1 合轴分枝树木形态结构 1.1 合轴分枝定义不同的树木,其枝条与主干间有着不同的着枝角度,呈现出千姿百态的特征。分枝方式可以被看作是物种生物学、分类学的一个重要特征。合轴分枝植物在现实世界中十分常见,树冠呈开张状态。
合轴分枝植物顶芽发育一定时间后就会死亡或生长缓慢、或分化成花芽、或成为卷须等变态器官,而位于顶芽下面的侧芽代替原来的主轴继续发育,不断生长形成强的侧枝连接在原来的主轴上。生长一段时间后,侧枝上的顶芽停止发育,又由它下面的侧芽来代替,如此更迭,就形成了弯曲的主轴。由于这种主干是由许多腋芽发育而成的侧枝联合组成,所以称为合轴。以这种方式分枝的植物,没有明显的主干,而是形成多个弯曲的主轴。
1.2 合轴分枝树木分枝结构的描述指标合轴分枝树木的形态结构遵循自相似规律,局部与整体相似。其形态结构是分层组织的,由主干分生第一层分枝,再由第一层分枝分生第二层分枝,如此一层一层分生下去直至树叶,呈现出一定的自相似分形特征。
将描述合轴分枝树木的分枝结构指标分为2类: 一类为形态指标,描述树木的整体形态; 另一类为结构指标,体现树木的几何结构特征。形态指标包括树高、冠长、冠幅等; 结构指标包括分枝仰角、枝径、枝长、分枝级数等。本研究的分枝级数指分枝的层数,即第一层分枝为一级分枝,第二层分枝为二级分枝,以此类推。合轴分枝树木每一分枝的子枝至少有2个, 其中枝径大的作为主枝,其余作为次枝(图 1)。
采用美国FARO公司生产设计的三维激光扫描仪FARO LS 120扫描槐树3株,基本信息见表 1。处理得到点云数据,提取树高、冠幅等基本信息,并以分枝为基本单位,提取3株槐树1~4级分枝的枝径、枝长、仰角等分枝结构参数。
将分枝分为主枝和次枝分别进行统计分析,主要考虑主、次枝的枝径、枝长、仰角的分布范围以及与枝下高的相关性。从表 2可知,主枝枝径的平均值大于次枝,而仰角和枝长的平均值则小于次枝;主枝与次枝仰角集中在20°~40°,主枝仰角的偏度系数Skewness=0.288 <1,峰度系数Kurtosis=0.151<1;次枝仰角的偏度系数Skewness=0.205<1,峰度系数Kurtosis=-0.189<1,故主枝与次枝的仰角都呈正态分布;主、次枝的枝长都主要分布在20~40 cm的范围内(图 2)。
从表 3(样本数为189)可以看出,枝径与枝下高呈负相关,相关性较强,仰角随着枝下高增大有增大的趋势,而枝下高对枝长的影响不明显。利用这些参数的分布规律确定IFS入口参数的范围,为构建合轴分枝树木形态模型提供数据基础。
迭代函数系统IFS(iterated function system)是Barnsley等(1985)提出并发展起来的一种研究分形集的数学方法,公式的具体形式是:
$ {W_n}\left( X \right) = {A_n}X + {B_n} = \left( {\begin{array}{*{20}{c}} {{a_n}}&{{b_n}}&{{c_n}}\\ {{d_n}}&{{e_n}}&{{f_n}}\\ {{g_n}}&{{h_n}}&{{i_n}} \end{array}} \right)\left( {\begin{array}{*{20}{c}} x\\ y\\ z \end{array}} \right) + \left( {\begin{array}{*{20}{c}} {{u_n}}\\ {{v_n}}\\ {{w_n}} \end{array}} \right)。 $ | (1) |
为了更加明确地表达合轴分枝树木的枝系结构,将式(1)转化为下式:
$ \left( {\begin{array}{*{20}{c}} {x'}\\ {y'}\\ {z'} \end{array}} \right) = S \times \left( {\begin{array}{*{20}{c}} {\cos \beta \cos \alpha }&{\sin \beta }&{ - \cos \beta \sin \alpha }\\ { - \sin \beta \cos \alpha }&{\cos \beta }&{\sin \beta \sin \alpha }\\ {\sin \alpha }&0&{\cos \alpha } \end{array}} \right)\left( {\begin{array}{*{20}{c}} x\\ y\\ z \end{array}} \right) + \left( {\begin{array}{*{20}{c}} 0\\ 0\\ h \end{array}} \right)。 $ | (2) |
式中: x′,y′,z′表示x,y,z经过IFS变换后的坐标; S为枝长比(子枝长与父枝长的比值),在IFS迭代时控制分枝缩放比例的收缩矩阵; α为分枝的仰角,β为相应的方位角,旋转矩阵的作用是将分枝绕Y轴旋转α角,并且绕Z轴旋转β角; h表示每次迭代的位移值,单轴分枝树木每一分枝的位移值为枝下距,而合轴分枝树木为上一级分枝的长度。
根据IFS本身的特点以及合轴分枝树木形态参数的意义,给出了IFS因子与形态参数间的对应关系(图 3),即应用分枝个数来控制IFS的迭代次数,枝长、仰角和方位角确定分枝的位置,枝长比确定分枝的大小。
为了说明合轴分枝的迭代方法,将树木枝系结构分为主干、分枝分别说明。主干是一个特殊的IFS迭代,即进行仰角、方位角、位移值均为0的仿射变换。分枝是主干经过旋转、平移、收缩变换后得到的,每一次迭代产生一个分枝,每一分枝都可看作是主干的一个复制品。树木的分枝级数控制IFS算法中迭代次数,达到分枝级数时IFS停止迭代,迭代过程如图 4所示。
使用如下递归算法:
Step1: 参数初始化,包括枝长、仰角、分枝级数CN、分枝个数R等;
Step2: 建立主干,即一个SymTreeNode,主干不需要做IFS变换;
Step3: 判断CN的值,不等于0时,建立R个n-1级树枝;
Step4: 当CN等于0时结束,否则CN=CN-1,转到Step3。
树木的每一层分枝都与其上一层分枝相似,单轴分枝树木的每一分枝枝系都是相似的,故在模拟时迭代使用的仿射变换通常是相同的一组,而合轴分枝树木的主枝与次枝枝系有不同的特点。因此为了使构建的形态模型更加符合真实树木的形态,在利用递归算法构造树木模型时,建立2组仿射变换对应于主枝与次枝,并对分枝参数指标值仰角、枝长、方位角等引入随机因子,使用C#语言中的R and om类产生随机数,在原有值的基础上加一个随机数,使这些参数在分布范围内随机变化,且考虑其级数的不同采用不同的收缩矩阵、旋转矩阵,使得树木分枝角度和长度产生随机变动,避免所构建的合轴分枝树木模型千篇一律,绘制过程如图 5所示。
基于合轴分枝树木的形态特点,设计如下数据结构表示每一分枝:
public class SymTreeNode
{
public int BranchClassNumber;//记录当前枝级数
public float Diameter;//记录当前枝的枝径
public float angle;//记录当前枝的仰角
public Vector3 Position1;//记录当前枝的起始点坐标
public Vector3 Position2;//记录当前枝的结束点坐标
public SymTreeNode Parent;//记录当前枝的父枝
public SymTreeNode Brother;//记录当前枝的同级枝
public SymTreeNode Child;//记录当前枝的子枝
}
每一个分枝即一个SymTreeNode,通过字段Parent记录该分枝的上一级枝,字段Brother记录该分枝的同级枝,字段Child记录该分枝的下一级枝。所有分枝都建立好后,遍历所有的SymTreeNode,得到该合轴分枝树木的枝系结构。
2.4 纹理贴图设定叶子着生在最外层的分枝上,在最外层枝两侧生成相对排列的三维矢量矩形。叶子的绘制采用billboard技术,在矩形贴上带有Alpha通道的真实叶子纹理。
在DirectX中使用关键色透明技术,通过设置渲染状态ALPHATSTE-ABLE和参考值ALPHAREF进行Alpha测试。程序根据Alpha测试函数比较当前像素的Alpha值与ALPHAREF的值,由比较结果决定是否绘制该像素,如果返回TRUE,则通过测试并绘制像素,反之则不予绘制(吴谦,2008)。使用真实的树干、树叶照片作为纹理贴图,三维模型具有更强的真实感。
3 实现与效果展示采用C#语言,使用面向对象的方法,基于DirectX平台开发,实现了合轴分枝树木形态的三维可视化模拟。形态参数设置窗口如图 6所示。
根据形态结构参数的统计分析结果设置形态参数,设置分枝级数为5级,构建槐树形态结构模型,效果如图 7所示。
确定了描述合轴分枝特征的指标参数,以槐树为例,统计分析了槐树主、次枝枝径、仰角、枝长等参数的分布规律。以槐树基本形态特征的数据分析结果为依据,结合IFS算法,构建了槐树的三维可视化模型,实现了合轴分枝树木的三维可视化模拟,并使用真实的纹理贴图,提高了三维可视化效果。本研究表明,以树木分枝形态结构参数所建立的树木形态结构模型,可以实现对合轴分枝树木的基本形态结构的表达。
本研究由于获取的槐树数据有限,仅对合轴分枝树木的形态结构进行了模拟,没有考虑环境因子和生理因子的影响,因此将植物生长机制与坏境的影响加入到合轴分枝树木的可视化模拟中是进一步研究的方向;并且在渲染速度上也有一定提高的空间,可以考虑与计算机硬件技术相结合,进一步提高渲染速度。
[1] | 董灵波,刘兆刚.2011.基于形态结构特征参数的樟子松人工林单木可视化研究.北京林业大学学报,33(5):20-27.(1) |
[2] | 郝小琴.2001.林业科学与科学可视化.林业科学,37(6): 105-108.(1) |
[3] | 胡秀珍,张建,李淼,等.2011.基于参数L系统的梨树枝干模型三维可视化.计算机系统应用,20(8): 86-90.(1) |
[4] | 雷蕾,郭新宇,周淑秋.2004.基于粒子系统思想的叶片纹理构造.计算机工程与应用,40(36): 218-219.(1) |
[5] | 李庆忠,韩金姝.2004.基于IFS的树木形态模拟方法.计算机辅助工程,13(4): 20-24.(1) |
[6] | 刘树群,张雯雯.2012.遗传算法与IFS相结合的植物形态模拟.计算机系统应用,21(1): 176-178.(1) |
[7] | 卢康宁,张怀清,刘闽.2010.杉木形态结构可视化模拟调查方法研究.中南林业科技大学学报,30(1): 34-40.(1) |
[8] | 孙静静,唐丽玉,姚林强,等.2007.基于形态结构特征的马尾松几何建模研究.林业科学,43(4):71-76.(1) |
[9] | 唐丽玉,陈崇成,王钦敏,等.2006.马尾松的形态结构分析与三维可视化.系统仿真学报,18(1):315-318.(1) |
[10] | 吴谦,张怀清,陈永富.2008.基于生长规律与图像相结合的树木叶片动态模拟.林业科学研究,21(增):122-125.(1) |
[11] | 吴谦,张怀清,陈永富,等.2010.杉木形态三维可视化模拟技术研究.林业科学研究,23(1): 59-64.(1) |
[12] | 肖海荣.2011.基于IFS分形算法的树木形态分析与实现.计算机仿真,6(6): 274-279.(1) |
[13] | 徐畅凯,徐文华.2012.基于L-系统的真实感树木生成算法与实现.计算机应用与软件,29(7):231-234.(1) |
[14] | 赵庆丹,罗传文,孙海洪,等.2010.基于OpenGL和VC的树木三维可视化模拟实现.东北林业大学学报,38(11):54-57.(1) |
[15] | Barnsley M F,Demko S.1985.Iterated function systems and the global construction of fractals.Proc Roy Soc London,243-275.(2) |
[16] | Liu M,Zhang H Q,Lu K N.2010.Research on three-dimensional simulation of tree's morphology based on tree-crown growth model.International Conference on Computational Intelligence and Software Engineering(CiSE 2010).(1) |
[17] | Sprott J C.1994.Automatic generation of iterated function systems.Computers & Graphics,18(3):417-425.(1) |
[18] | Zhang H Q,Liu M.2009.Tree growth simulation method based on improved IFS algorithm.Proceedings of International Conference on Computer Intelligence and Software Engineering(CiSE 2009).(1) |