高 揚(yáng),黎展榮,魏 為,劉 峰
(廣西大學(xué) 計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
基于參數(shù)L系統(tǒng)的小葉榕樹(shù)建模方法研究
高 揚(yáng),黎展榮,魏 為,劉 峰
(廣西大學(xué) 計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
為建立具有較強(qiáng)真實(shí)感的觀賞性樹(shù)木模型,以南方小葉榕樹(shù)為建模研究對(duì)象,結(jié)合參數(shù)L系統(tǒng),提出了根據(jù)特征差異性進(jìn)行分步建模的方法。首先從整體的角度對(duì)小葉榕樹(shù)的形態(tài)特征進(jìn)行分析,之后把樹(shù)木不同部位的特征參數(shù)化,結(jié)合參數(shù)L系統(tǒng)建立具有二級(jí)映射關(guān)系的產(chǎn)生式規(guī)則,以此構(gòu)建具有良好交互性的小葉榕樹(shù)枝干模型。在最后繪制模型時(shí),為減少模型的數(shù)據(jù)量以及保證繪制的高效率,使用改進(jìn)的矩形面片拼接的方法來(lái)實(shí)現(xiàn)這些要求,借助OpenGL圖形庫(kù)繪制出整棵榕樹(shù)的模型。實(shí)驗(yàn)結(jié)果表明:繪制出的模型數(shù)據(jù)量小,具有較強(qiáng)的真實(shí)感以及良好的交互性。
小葉榕樹(shù);參數(shù)L系統(tǒng);分步建模;交互性;OpenGL
對(duì)現(xiàn)實(shí)場(chǎng)景進(jìn)行虛擬化時(shí),樹(shù)木模型一直都是不可或缺的元素。在植物建模領(lǐng)域,L系統(tǒng)對(duì)植物的分支結(jié)構(gòu)具有良好的模擬效果,已成為構(gòu)建植物模型普遍采用的方法[1]。許多學(xué)者以此為基礎(chǔ),對(duì)多種特定樹(shù)木模型及可視化進(jìn)行了相關(guān)研究,成為樹(shù)木建模的一個(gè)重要組成部分。
在當(dāng)前特定樹(shù)木模型研究領(lǐng)域,更多的是針對(duì)農(nóng)業(yè)作物的模型研究,而對(duì)觀賞性植物的建模研究卻不多,后者更多地要求在整體形態(tài)方面具有良好的逼真度,且具有較好的交互性。雖然農(nóng)業(yè)作物的建模研究多集中在植物的局部細(xì)節(jié),但對(duì)于觀賞性植物的建模研究也有一定的借鑒意義。文獻(xiàn)[2-5]在L系統(tǒng)的基礎(chǔ)上,分別對(duì)四種作物的不同部位進(jìn)行了建模,但對(duì)植物的整體形態(tài)缺少模型化描述,模型的可交互性也顯得不足,這些在觀賞性植物的建模方面仍需要做進(jìn)一步研究。
小葉榕樹(shù)是一種典型的南方樹(shù)種,作為觀賞性植物具有很強(qiáng)的代表性,被廣泛應(yīng)用于市政綠化、園藝設(shè)計(jì)等領(lǐng)域。文中以小葉榕樹(shù)為建模研究對(duì)象,從樹(shù)木的整體形態(tài)出發(fā)對(duì)各個(gè)部分進(jìn)行形態(tài)分析,汲取對(duì)農(nóng)業(yè)植物局部建模的優(yōu)點(diǎn),結(jié)合參數(shù)L系統(tǒng)來(lái)構(gòu)建小葉榕樹(shù)的模型,使其具有良好的交互性,從而為園藝設(shè)計(jì)起到一定的指導(dǎo)作用,也為南方城市場(chǎng)景的虛擬化提供具有較強(qiáng)真實(shí)感的樹(shù)木模型。
1.1 參數(shù)L系統(tǒng)
美國(guó)生物學(xué)家Lindenmayer于1968年首次提出了一種字符串迭代重寫機(jī)制,這種機(jī)制便稱之為L(zhǎng)系統(tǒng)[6]。L系統(tǒng)可以用來(lái)模擬植物的分支結(jié)構(gòu),但在面對(duì)樹(shù)木這類具有復(fù)雜分支結(jié)構(gòu)的植物時(shí),模擬能力還是相當(dāng)有限。為此,Lindenmayer和Hanan[7-8]提出在L系統(tǒng)中引入?yún)?shù)的方法,構(gòu)建了參數(shù)L系統(tǒng)。它在原先L系統(tǒng)的基礎(chǔ)上新增了一個(gè)形式參數(shù)集合,從而被定義為一個(gè)有序四元組:
G=
其中,V表示字母表;Σ表示形式參數(shù)集;ω表示起始字符串;P表示產(chǎn)生式,由前驅(qū)和后繼組成。
產(chǎn)生式的替換規(guī)則應(yīng)當(dāng)滿足的條件有:模塊中的字母和產(chǎn)生式前驅(qū)中的字母相同;模塊中實(shí)際參數(shù)的數(shù)目要和產(chǎn)生式前驅(qū)中的形式參數(shù)數(shù)目相同;如果條件值為真,則使用產(chǎn)生式中的形式參數(shù)置換實(shí)際參數(shù)[9]。若滿足條件,則用產(chǎn)生式的后繼替換現(xiàn)有模塊,否則對(duì)現(xiàn)有模塊進(jìn)行自身恒等替換。下列字符串組合演示了參數(shù)L系統(tǒng)的替換過(guò)程:
ω:X(1)Y(3,2)
P1:Y(a,b):b≤3→Y(a*2,a+b)
P2:Y(a,b):b>3→X(a)Y(a/b,0)
P3:X(a):a<1→D
P4:X(a):a≥1→X(a-1)
迭代1次:S1:X(0)Y(6,5)
迭代2次:S2:X(2)X(6)Y(1.2,0)
1.2 空間幾何解釋
在平面內(nèi),L系統(tǒng)采用的是二維海龜解釋模型,根據(jù)Abelson和diSessa[10]的思想,可以將L系統(tǒng)的龜形解釋模型擴(kuò)展到三維空間。在圖1(a)中,使用[L,U,H]三個(gè)相互垂直的單位向量來(lái)確定海龜?shù)漠?dāng)前位置,在這三個(gè)方向上構(gòu)成3×3的旋轉(zhuǎn)矩陣[11]并根據(jù)旋轉(zhuǎn)的角度實(shí)現(xiàn)控制海龜?shù)某颉?/p>
圖1 空間幾何解釋
上述海龜幾何解釋模型是L系統(tǒng)使用的傳統(tǒng)解釋方法。如圖1(b)所示,通過(guò)對(duì)樹(shù)木枝干的生長(zhǎng)角度分析,可知枝干生成的角度和位置只在θ和Φ兩個(gè)維度進(jìn)行變化[12]。相對(duì)于傳統(tǒng)龜形幾何解釋,文中只使用在Z和A方向上的幾何解釋以實(shí)現(xiàn)小葉榕樹(shù)的枝干模型,并在表1中給出了幾何字符解釋。
表1 幾何字符解釋
2.1 小葉榕樹(shù)的形態(tài)分析
通過(guò)對(duì)小葉榕樹(shù)的形態(tài)進(jìn)行分析,從而實(shí)現(xiàn)對(duì)小葉榕樹(shù)枝干及樹(shù)葉的特征提取。把提取到的特征數(shù)據(jù)化,將其作為參數(shù)引入到參數(shù)L系統(tǒng),為產(chǎn)生式的提出提供依據(jù)。結(jié)合現(xiàn)實(shí)中小葉榕樹(shù)的分枝形態(tài)以及文獻(xiàn)[13]對(duì)小葉榕樹(shù)的特征描述,可將小葉榕樹(shù)的形態(tài)特征總結(jié)為以下3個(gè)部分:
(1)榕樹(shù)基部主干。
作為支撐整棵樹(shù)木重量的部分,相較于側(cè)枝,它具有短而粗的特點(diǎn)。隨著樹(shù)齡的增長(zhǎng),主干直徑逐漸增加,一般主干直徑多在20~50 cm之間,高度在1.5~2 m之間。
(2)榕樹(shù)側(cè)生主干。
側(cè)生主干是構(gòu)成榕樹(shù)冠蓋的主體組成部分,根據(jù)其生長(zhǎng)在主干上的不同位置,又可將其歸納為兩類:
一類是生長(zhǎng)在主干較低的位置,沿著近似平行于地面的角度橫向生長(zhǎng),角度在70°~90°之間,長(zhǎng)度在5~7 m之間,之后在末端逐漸形成向上生長(zhǎng)的分枝。
另一類則是生長(zhǎng)在主干較高的位置,沿著與主干20°~40°的夾角向上生長(zhǎng),在末端形成更多細(xì)小的分枝。
(3)榕樹(shù)末枝與樹(shù)葉。
西方人飲食崇尚營(yíng)養(yǎng)和天然,這與中國(guó)飲食講究色香味俱全的文化有著天壤之別。區(qū)別的背后,是中國(guó)飲食為了追求色香味幾近極致的“創(chuàng)舉”,比如派生出擅長(zhǎng)雕龍刻鳳的廚師,對(duì)胡椒、生姜、八角、桂皮、大蒜等佐料推崇備至,對(duì)味精、醬油等調(diào)味品的使用習(xí)以為?!茈y說(shuō)誰(shuí)對(duì)誰(shuí)錯(cuò),但可以肯定的是,飲食演變絕非一朝一夕,肯定鍥入了太多的歷史基因,比如餐桌上那僅供觀瞻的雕刻,很大程度上來(lái)自于宮廷的幻象。
末枝是側(cè)生主干的最后衍生部分,圍繞著側(cè)生主干的末端朝著不同的方向生長(zhǎng),與主枝干形成20°~60°的夾角。最后樹(shù)葉從末枝長(zhǎng)出,呈橢圓狀,邊緣光滑無(wú)鋸齒。不同位置的樹(shù)葉差異性較小,顏色由深綠向淺綠色過(guò)渡。
2.2 榕樹(shù)模型的產(chǎn)生式規(guī)則
通過(guò)以上對(duì)小葉榕樹(shù)形態(tài)的分析,主干與側(cè)生主干有較大的差異性,故相較于側(cè)枝的建模,主干的建模較為簡(jiǎn)單,其關(guān)鍵在于如何控制側(cè)枝主干的生成位置。文中給出了在有限范圍內(nèi)產(chǎn)生隨機(jī)變量的方法來(lái)控制側(cè)枝的出現(xiàn)位置,并對(duì)出現(xiàn)的位置進(jìn)行標(biāo)記,用來(lái)實(shí)現(xiàn)和側(cè)枝模型的對(duì)接。其產(chǎn)生式規(guī)則如下:
P1:B(d,r)→F(d)$(r*0.85)F(d)$(r* 0.85)F(d)$(r*0.85)
P2:D(d,r)→F(d*0.57) $(r*0.95)[A]
A:{A|<Σ,Φ,Ω,δ,η>}
其中,[]用來(lái)表示分枝在字符串中出現(xiàn)的位置;A是一個(gè)有序的特殊字符集。
文中只對(duì)主干的起始字符串迭代一次,則最終字符串將會(huì)包含5個(gè)A字符,這5個(gè)字符將由A字符集中的5個(gè)字符依次替換,用來(lái)標(biāo)記側(cè)枝在主干中出現(xiàn)的層級(jí)。另外A中每個(gè)特殊字符被賦予整數(shù)值,用來(lái)表示在某一層級(jí)出現(xiàn)分枝的個(gè)數(shù),用戶可以修改這些整數(shù)值,用來(lái)構(gòu)建不同的分枝形態(tài),從而為榕樹(shù)的側(cè)生主干建模奠定基礎(chǔ)。
由于側(cè)生主干具有多種不同特征,將這些特征參數(shù)化后會(huì)產(chǎn)生大量數(shù)據(jù),從而導(dǎo)致參數(shù)L系統(tǒng)的產(chǎn)生式規(guī)則產(chǎn)生大量冗余。為了簡(jiǎn)化字符串的迭代步驟,文中通過(guò)建立產(chǎn)生式規(guī)則映射表的方法來(lái)壓縮產(chǎn)生式的規(guī)模。如表2所示,在產(chǎn)生式映射表中,每個(gè)字母對(duì)應(yīng)帶有參數(shù)的產(chǎn)生式,用以描述榕樹(shù)側(cè)生主干的局部特征,從而形成一級(jí)產(chǎn)生式。之后,在一級(jí)產(chǎn)生式的基礎(chǔ)上建立了二級(jí)產(chǎn)生式P1-P4,最終建立的側(cè)枝主干的模型只需根據(jù)起始字符串使用二級(jí)產(chǎn)生式迭代即可得到最終字符串。
表2 產(chǎn)生式規(guī)則映射表
表2中z對(duì)應(yīng)的產(chǎn)生式中,R1是取(0,180)之間的無(wú)重復(fù)隨機(jī)數(shù),R2是取(15,90)之間的隨機(jī)數(shù),二者共同確定了側(cè)枝主干在主干中的出現(xiàn)位置。文中給出了7個(gè)分枝的起始字符串,用來(lái)替換主干產(chǎn)生式A序列中的特殊字符。用戶可以定義每層產(chǎn)生分枝的個(gè)數(shù),但總的側(cè)枝主干數(shù)不超過(guò)7個(gè)。文中給出的7個(gè)分枝字符串如下:
①zaae[H(d,r)][K(d,r)]
②zaea[H(d,r)]aaa[K(d,r)]aaaee
③zeaa[K(d,r)]N(d,r)[H(d,r)]eee
④zaaa[K(d,r)][H(d,r)]eN(d,r)
⑤ze[H(d,r)][K(d,r)]eN(d,r)
⑥zaa[heN(d,r)]a[H(d,r)]aee
⑦ze[kN(d,r)]e[iN(d,r)]e[k]eeM(d,r)
把主干與側(cè)枝分開(kāi)建模,結(jié)合二級(jí)產(chǎn)生式規(guī)則,實(shí)現(xiàn)了對(duì)小葉榕樹(shù)的模塊化建模。用戶可以修改模型的參數(shù),替換產(chǎn)生式映射表的內(nèi)容,使整個(gè)系統(tǒng)具有良好的交互性,從而為建立不同形態(tài)的小葉榕樹(shù)模型提供了可能。
3.1 繪制枝干模型
繪制速度快、占用系統(tǒng)資源少是繪制樹(shù)木模型的優(yōu)點(diǎn),另外作為虛擬化城市場(chǎng)景的一部分,樹(shù)木模型的數(shù)據(jù)量應(yīng)當(dāng)盡可能小,以保證場(chǎng)景瀏覽的流暢度。那么對(duì)于繪制小葉榕樹(shù)的模型,也應(yīng)當(dāng)滿足以上要求。
在文獻(xiàn)[14]中,孔令麒等使用多個(gè)矩形面片拼接的方法繪制圓柱來(lái)模擬枝干的變化,這樣可以起到減少模型數(shù)據(jù)量的效果,然而使用該方法會(huì)出現(xiàn)兩個(gè)圓柱連接處的面片坐標(biāo)被重復(fù)計(jì)算的問(wèn)題,從而導(dǎo)致過(guò)多內(nèi)存資源被占用。
文中以建立連接處頂點(diǎn)坐標(biāo)索引的方法來(lái)解決該問(wèn)題,從而提高系統(tǒng)資源的使用效率,最終實(shí)現(xiàn)繪制速度快、數(shù)據(jù)量小的小葉榕樹(shù)模型。
如圖2所示,每個(gè)字母分別代表矩形面片的頂點(diǎn)坐標(biāo),e和d的坐標(biāo)相同,f和c的坐標(biāo)相同,而原來(lái)的方法要對(duì)相同的坐標(biāo)計(jì)算兩次。繪制矩形是按照逆時(shí)針的順序排列坐標(biāo),如abcd、efgh,那么將c和d在序列中的位置3,4記錄在索引表中,在需要e,f的坐標(biāo)時(shí)只查找索引表找到c,d的坐標(biāo)就可重復(fù)使用,從而避免了相同坐標(biāo)的重復(fù)計(jì)算。文中采用這種改進(jìn)的繪制圓柱體的方法來(lái)模擬小葉榕樹(shù)的枝干,從而大大提高了小葉榕模型的繪制效率。
圖2 拼接矩形面片
3.2 繪制樹(shù)葉模型
繪制小葉榕樹(shù)的樹(shù)葉由兩個(gè)要素決定:一是確定樹(shù)葉在末枝的長(zhǎng)出位置;二是對(duì)樹(shù)葉本身的坐標(biāo)計(jì)算以及著色。
確定樹(shù)葉的長(zhǎng)出位置由末枝條的半徑大小來(lái)確定。如果枝條半徑小于設(shè)定的閾值,則使用特定序列內(nèi)的隨機(jī)數(shù)來(lái)確定樹(shù)葉在垂直于末枝的水平面中出現(xiàn)的角度以及與末枝的夾角。依據(jù)小葉榕樹(shù)葉片生長(zhǎng)的特征,文中使用的特定序列是{60,50,40,30},縱向夾角在20°~50°之間。以上方法可以快速地確定葉片的長(zhǎng)出位置。
在確定了樹(shù)葉的長(zhǎng)出位置后,就需要計(jì)算葉片的坐標(biāo)。葉片本身是一種不規(guī)則的幾何體,如果使用三角面片拼接的方法,不僅會(huì)增加模型的數(shù)據(jù)量,還會(huì)降低樹(shù)葉的仿真度。故文中使用矩形面片結(jié)合葉片貼圖的方法來(lái)模擬榕樹(shù)樹(shù)葉,這樣可以較好地保證樹(shù)葉的仿真度。
在樹(shù)葉的繪制階段,通過(guò)對(duì)三種不同反射光線的計(jì)算得到材質(zhì)的屬性,之后將貼圖的每個(gè)像素點(diǎn)與矩形坐標(biāo)相對(duì)應(yīng),位于葉片之外的像素忽略不計(jì)。
使用該方法可以有效減少葉片坐標(biāo)的數(shù)量,從而減少對(duì)系統(tǒng)資源的消耗并提高繪制速度。
實(shí)驗(yàn)硬件環(huán)境為Intel i7-4790、NVDIA GeForce GTX 970。軟件環(huán)境為Qt、Visual Studio 2013,OpenGL著色語(yǔ)言—GLSL。
圖3左側(cè)為真實(shí)的小葉榕樹(shù)圖片,右側(cè)則是根據(jù)小葉榕樹(shù)的枝干數(shù)據(jù)構(gòu)建的枝干模型。圖4為小葉榕樹(shù)模型添加樹(shù)葉后兩種不同形態(tài)的效果圖。
圖3 真實(shí)小葉榕樹(shù)的枝干模型
圖4 添加樹(shù)葉后的小葉榕樹(shù)模型
相對(duì)于特定樹(shù)木的局部建模,文中能夠從整體的角度出發(fā)對(duì)小葉榕樹(shù)分步建模,在參數(shù)L系統(tǒng)的基礎(chǔ)上,優(yōu)化了模型字符串的替換方式,使得建立的模型具有良好的可替換性與交互性。對(duì)原有的模型繪制方式進(jìn)行改進(jìn),使得繪制出的小葉榕樹(shù)模型數(shù)據(jù)量小且擁有較強(qiáng)的真實(shí)感,從而為南方城市的場(chǎng)景虛擬化提供合適的模型,另外對(duì)觀賞性樹(shù)木的建模有一定的借鑒意義。由于文中對(duì)樹(shù)葉建模使用了貼圖,使得樹(shù)葉模型的特異性降低。那么如何增強(qiáng)樹(shù)葉模型的特異性將是以后的研究方向。
[1] 譚云蘭,賈金原,張 晨,等.3D樹(shù)木建模技術(shù)研究進(jìn)展[J].中國(guó)圖象圖形學(xué)報(bào),2013,18(11):1520-1528.
[2] 廖桂平,李錦衛(wèi),歐中斌,等.基于參數(shù)L-系統(tǒng)的油菜花朵與花序生長(zhǎng)可視化研究[J].農(nóng)業(yè)工程學(xué)報(bào),2009,25(4):150-156.
[3] 劉 閣,周國(guó)民,胡 林.基于L系統(tǒng)的開(kāi)心形蘋果樹(shù)枝干模型[J].安徽農(nóng)業(yè)科學(xué),2009,37(16):7795-7796.
[4] 胡秀珍,張 建,李 淼,等.基于參數(shù)L系統(tǒng)的梨樹(shù)枝干模型三維可視化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(8):86-90.
[5] 辛龍嬌,徐立鴻,李大威,等.基于參數(shù)L-系統(tǒng)的溫室番茄植株的三維重建[J].現(xiàn)代農(nóng)業(yè)科技,2014(3):340-343.
[6] Lindenmayer.Mathematical models for cellular interaction in development[J].Journal of Theoretical Biology,1968,18:230-315.
[7] Prusinkiewicz A L P,Lindenmayer A,Hanan J S,et al.植物的算法美[M].孟 軍,鄧華玲,傅麗芳,等,譯.北京:科學(xué)出版社,1990:5-15.
[8] Lindenmayer A.Adding continuous components to L-systems[J].L Systems,1974,15:53-68.
[9] 石銀濤,程效軍,張鴻飛.基于參數(shù)L-系統(tǒng)的三維樹(shù)木仿真[J].同濟(jì)大學(xué)學(xué)報(bào):自然科學(xué)版,2011,39(12):1871-1876.
[10] Abelson H.diSessa A.Turtle geometry[M].Cambridge:MIT Press,1982.
[11] Foley J D,van Dam A.Fundamentals of interactive computer graphics[M].Massachusetts:Addison-Wesley,1982.
[12] Qi Hang,Qiu Ruichao,Jia Jinyuan.L-system based interactive and lightweight web3D tree modeling[C]//Proceedings of the 10th conference on virtual reality continuum and its application in industry.New York:ACM,2011:589-592.
[13] 楊江南,孫川紅.小葉榕的改造與管護(hù)[J].四川農(nóng)業(yè)科技,2010(1):39-39.
[14] 孔令麒,黎展榮,韋 婷,等.基于L系統(tǒng)的樹(shù)木建模與仿真[J].科學(xué)技術(shù)與工程,2013,13(32):9536-9540.
Research on Modeling Method of Ficus Microcarpa Based on Parametric L System
GAO Yang,LI Zhan-rong,WEI Wei,LIU Feng
(School of Computer and Electronic Information,Guangxi University,Nanning 530004,China)
To build the ornamental tree model with a strong sense of reality,taking the ficus microcarpa tree as the modeling object,combined with parametric L-system,a method about multi-step modeling based on characteristic difference is proposed.First the morphological characteristics of ficus microcarpa tree is analyzed from whole angle,then the characteristics of different parts is converted into parameters,to build generative rules with two levels of mapping relations on the basis of L-system,and the branch model of tree is established with better interactivity.In the part of rendering model,in order to reduce the model data and guarantee the high efficiency of rendering,an improved method of mosaicing rectangular planes is used to meet the requirements.Finally,the whole model is rendered by using OpenGL graphics library.Experiment shows that the ficus microcarpa model has a small amount of data,a strong sense of reality and good interaction.
ficus microcarpa;parametric L-system;multi-step modeling;interaction;OpenGL
2015-10-13
2016-01-19
時(shí)間:2016-05-25
國(guó)家自然科學(xué)基金青年基金項(xiàng)目(61401108)
高 揚(yáng)(1990-),男,碩士研究生,研究方向?yàn)橛?jì)算機(jī)圖形學(xué);黎展榮,副教授,碩士研究生導(dǎo)師,通信作者,研究方向?yàn)橛?jì)算機(jī)圖形學(xué)。
http://www.cnki.net/kcms/detail/61.1450.TP.20160525.1711.074.html
TP391.9
A
1673-629X(2016)07-0156-04
10.3969/j.issn.1673-629X.2016.07.033