基于变形的真实感树木造型
2019-12-23王文莉陆玲舒丽君彭丽君
王文莉 陆玲 舒丽君 彭丽君
摘要:随着目前VR/AR技术的发展,三维真实感图形技术已经发挥着越来越重要的作用,计算机图形学已经向各个学科领域渗透。该文采用参数方程变形及分型造型方法生成树木粗略造型。树枝是使圆柱变形得到几何形状,再利用L系统分形生成树木分支;树叶的生成是利用矩形变形得到几何形状,通过调整颜色模拟树叶。最后通过区域填充、消隐、简单光照模型基于MFC进行可视化设计。实验模拟结果表明本文造型方法可以迅速生成随机生长的真实感树木。
关键词:变形;真实感;树木造型;叶片造型;L系统
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2019)31-0275-03
对于自然界中植物造型研究一直是图形学中的研究热点,对于真实感树木的生成一直以来也有许多种方法。早期涂超提出了基于粒子系统构造的植物的绘制。近期徐畅凯等人利用L-系统构造树形,圆柱形网格来表现树枝,并对树干实施纹理映射,树叶使用透空贴图技术构造。杨垠晖等人对树木的真实感建模与绘制进行了综述。
本文真实感树木枝干是通过对圆柱的弯曲变形及随机凹凸来模拟真实感,叶片造型是通过对规则矩形弯曲变形得到的,树木分支是基于L系统生成的。根据实验结果,本文生成算法相对于纹理映射算法及三维贴图技术更加快捷,颜色及形状调整也简单方便。
1真实感图形技术
本文使用扫描线填充算法生成多边形面。常用的扫描线填充方法是按扫描线顺序,计算扫描线与多边形的相交区间,设定区间颜色,即完成填充工作。
消隐是消除不可见的点、线或面,本文采用深度缓冲器算法判断点是否可见。算法的基本思想是对于投影到屏幕上的每个像素,记录投影到此像素位置的最靠近观察者的一个像素的z(深度)值。
为了使曲面具有真实感效果,使用简单光照模型模拟环境光。一个完全漫反射体上反射出来的光的强度同人射光与物体表面法线之间夹角的余弦成正比,即
其中Id表示漫反射光光强,L表示点光源入射光的光强,Kd是漫反射系数,θ是人射光L与表面发线n之间的夹角。
2单个枝干造型
2.1弯曲枝干造型
根据树干的形状类似圆柱形的特点,以上一章节的真实感技术,以圆柱体来粗略的模拟树干。自然界中树木的树干及树枝往往不是标准直筒圆柱形状,所以采用变形方法对圆柱按一定方向进行变形,对圆柱沿着x方向进行正弦变形,即修改圆柱参数方程的x方向分量值。以(Xo,Yo,Zo)为底面圆心坐标,R为底面圆半径,H为圆柱高,弯曲圆柱的参数方程为
式中:Ax控制弯曲幅度,£控制弯曲频率。圆柱弯曲变换图如图1所示。
图1(a)为原始未变形圆柱,圖1(b)中Ax=3,fx=1,图1(c)中Ax=5,fx=2。本文选用随机数控制Ax和fx的值,Ax的随机数是0~1,fx的随机数是0~2。
2.2表面凹凸造型
利用变形的方法使圆柱表面凹凸,来模拟树枝表面的树皮。本文采用的方法是沿着圆柱表面的法向量进行变形。对于圆柱,其表面法向量一定是垂直于v轴的,因此在v轴上是不需要进行凹凸变形的。则弯曲且凹凸变形的圆柱参数方程为
3分支造型
树木的分支我们可以采用计算机图形学中的分形造型,“分形”可以被看成是具有某种特征的集合,在这里我们可以看成是同种类的树枝产生的分型造型。实现分形的方法有很多种,可以用函数递归方法实现也可以用L系统来实现,在这里我们选择L系统来实现树木的分支造型。
L系统是一个字符串重写系统,首先定义字符集合,设置初始字符串和字符串替代规则,然后根据规则对原始字符串不断进行替代。每步选代过程中字符的替换都是并行的,即所有字符同时进行替代操作。最后通过将字符串解释成图形,可以生成许多经典的分形,特别是能很好地表达植物的分枝结构M。我们设定字符集合见表1。
在三维树枝生成中,字符集合包括树枝的生长方向及长度符号,控制树枝的方向就是分别绕三个正交轴uVw进行旋转,正交轴示意图如图3所示。
第二次与第三次替换后对应的图形如图4(b)与图4(c)所示。
1)模拟树枝粗细变化
从图中可以看出,树枝的生成过程非常类似树木的生长过程,因此人们常用L系统模拟树木生长。另外本文利用入栈符“[”与出栈符“]”调整分枝树枝的粗细程度,即当遇到入栈符“【”时,说明树枝分枝,需使树枝变细;当遇到出栈符“[”时,还原树枝粗细度。
2)模拟树枝随机弯曲
分别绕U、y、W轴旋转角度时,增添一个随机变量来控制旋转角度,并将当前生长方向也增加一个随机量,可生成随机树枝。
4叶片造型
植物的叶片形状包括叶形、叶尖、叶基和叶缘的边界轮廓形状,主要是确定沿平面切线方向的变形函数T(u,V),首先用矩形平面参数定义叶片的初始轮廓。通过在x与y方向使用不同的变形函数,可得到相应的叶片基本形状。叶片造型如图5所示。
在树枝上简单添加树叶,更显真实感。如图6所示。添加方法是在遇到出栈符“]”时,执行两次树叶成长。若需树叶更加茂盛可增加执行次数,若想树叶生长面积更大可在其他字符程序内添加树叶生长程序。
如图6所示,使用不同的替换规则,绕U、y、W设立不同的角度可以生成不同分支的树木。图6(a)使用的替换规则为:
5结束语
本文基于变形进行了真实感树木造型研究,基于L系统模拟了树木的分支生长,基本上能模拟自然界中的三维树木。建模速度快,树木枝桠可变性强,可将此树木造型方法运用于农业、广告、动画,游戏娱乐、园林艺术等方向,应用领域较广。