摘要:在對林學(xué)中的植物生長模型和環(huán)境模型綜合研究的基礎(chǔ)上,提出了一個基于環(huán)境敏感的植物動態(tài)生長模型,并對此模型的原理和實(shí)現(xiàn)方法進(jìn)行了分析和研究,最后通過相應(yīng)的可視化技術(shù)將該模型應(yīng)用于虛擬森林的動態(tài)仿真系統(tǒng)。
關(guān)鍵詞:L系統(tǒng);植物模型; 動態(tài)生長模型; 環(huán)境敏感性
中圖分類號:TP391文獻(xiàn)標(biāo)志碼:A
文章編號:1001—3695(2007)03—0223—03
隨著計(jì)算機(jī)圖像和仿真的發(fā)展,對植物的模擬需求也不斷增大,特別是在林業(yè)上的應(yīng)用已成為關(guān)注熱點(diǎn)。L系統(tǒng)[1]是目前比較流行的通過計(jì)算機(jī)來模擬植物生長的一項(xiàng)技術(shù),其應(yīng)用也很廣。比較典型的有著名的加拿大Calgary大學(xué)的Prusinkiewicz教授和美國生物學(xué)家Lindenmayer共同開發(fā)了基于L系統(tǒng)的用來模擬不同物種的多種算法[2~4]。另外M. Aono,T.L. Kunii和J. Bloomenthal等人也作了相關(guān)研究[5,6]。
在對這些相關(guān)研究作了分析后,為了能更好地服務(wù)于森林的動態(tài)仿真,筆者將林窗模型[7]與L系統(tǒng)進(jìn)行了有機(jī)結(jié)合,并在此基礎(chǔ)上提出了基于環(huán)境變化的植物動態(tài)生長模型。該模型通過控制外部環(huán)境因素(陽光、水分、溫度等)來影響植物的內(nèi)部生長因素,從而能更好地體現(xiàn)植物在不同環(huán)境中生長的真實(shí)性。本文簡單介紹L系統(tǒng)的相關(guān)原理,然后提出概念模型,再根據(jù)概念模型構(gòu)造植物動態(tài)生長模型,并進(jìn)行系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)。
1L系統(tǒng)的基本原理
L系統(tǒng)是美國生物學(xué)家Lindenmayer于1968年提出的一個用來模擬植物生長的數(shù)學(xué)模型,其實(shí)質(zhì)就是一個基于字符的重寫系統(tǒng)[2]。它通過自定義一套由字符串組成的文法和一組相應(yīng)的替換產(chǎn)生式規(guī)則,然后用這些規(guī)則對文法進(jìn)行分析和替換模擬出結(jié)果,從而達(dá)到用形式語言的方法來描述植物的生長過程。 L系統(tǒng)主要分為上下文無關(guān)L系統(tǒng)(D0L系統(tǒng))、概率L系統(tǒng)、參數(shù)L系統(tǒng)和上下文相關(guān)L系統(tǒng)。其中D0L系統(tǒng)是最簡單的一種,只含有簡單文法的定義和規(guī)則,適合模擬簡單的樹[2]。
以D0L系統(tǒng)為例來說明其主要思想。令V表示字母,V*表示V上所有單詞的集合,一個D0L系統(tǒng)是一個有序的三元集G=V, w, P,這里w是一個非空單詞,也是起始符號元,稱作公理,P是所謂產(chǎn)生式的有限集合,產(chǎn)生式寫作a→x,字母a和單詞x分別稱作產(chǎn)生式的前驅(qū)和后繼。規(guī)定對任何字母a∈V,至少存在一個非空單詞x,使得a→x。若對給定的前驅(qū)a∈V無明確解釋的產(chǎn)生式,則規(guī)定a→a這個特殊的產(chǎn)生式屬于P。對每個a∈V,當(dāng)且僅當(dāng)恰有一個非空單詞x,使a→x,那么就說D0L系統(tǒng)是一個確定的,記為D0L系統(tǒng)。依據(jù)D0L系統(tǒng)的原理,按照一定的重寫規(guī)則,并加以參數(shù)控制,即可模擬植物的各種形態(tài)及其生長過程。
植物在生長過程中,從總體形態(tài)可看出,處處蘊(yùn)涵著分形的性質(zhì)。如果簡化植物的生長過程,先從土中長出一根小樹桿,然后隨著樹桿的生長,又會長出分支;而各個分支又會長出更小的分支,如此反復(fù)。一般植物的分支結(jié)構(gòu)可以用L系統(tǒng)的迭代重寫過程來生成。下面給出一個簡單的L文法來模擬一棵簡單的樹(圖1)。
[為將當(dāng)前狀態(tài)存入堆棧;
]為取出堆棧中的最后一個入棧的狀態(tài)。
首先文法中定義了一個迭代次數(shù),然后給出了一個公理A,接著列出了兩條替換規(guī)則,在每次迭代時,都會將公理中含有A和F的地方分別用規(guī)則進(jìn)行替換。圖1就是文法1經(jīng)過八次迭代所得到的圖形。
2環(huán)境敏感模型的構(gòu)建
通過對植物與環(huán)境交互的概念模型的研究,本文對環(huán)境敏感模型進(jìn)行了分析和構(gòu)建。由于植物的生長機(jī)理比較復(fù)雜,所以要建立一個完整的生長模型十分困難,因此本文對L系統(tǒng)和環(huán)境參數(shù)作了相應(yīng)的改變和擴(kuò)展,并且以最典型的植物——樹作為具體的研究對象,而如何將環(huán)境因素融入到樹生長過程中的研究作為本模型的核心,即如何確定環(huán)境因素與樹木生長之間相互關(guān)系的量化表示,最后用OpenGL技術(shù)作為模擬平臺來描述樹木在不同的環(huán)境參數(shù)影響下拓?fù)浼靶螒B(tài)結(jié)構(gòu)的構(gòu)成和變化。
2.1植物與環(huán)境交互概念模型
雖然用L系統(tǒng)通過簡單的文法能模擬出一些簡單的植物,甚至可以模擬出比較復(fù)雜的植物模型,但是它只能是從大致的外部形態(tài)上去仿真,而植物的形態(tài)除了由其內(nèi)部生長因素決定外,還受到許多外部環(huán)境因素的影響[8]。根據(jù)Prusinkiewicz在文獻(xiàn)[9]中提出的概念模型可知,當(dāng)植物接收來自外界的陽光、水分、氣候等環(huán)境因素的時候,它的內(nèi)部生長系統(tǒng)會受到一定的影響,從而導(dǎo)致外部形狀的變化。植物的生長過程就是它與它所在的環(huán)境之間交替進(jìn)行接收信息、反饋信息的過程,是一個連續(xù)的事件鏈。當(dāng)它察覺到外部環(huán)境某些刺激物時,一些信息會被傳遞到其內(nèi)部,并作出相應(yīng)的反應(yīng);而此反應(yīng)又會反作用于環(huán)境,使環(huán)境發(fā)生改變。例如,土壤里的根系會根據(jù)其周圍的水分濃度,進(jìn)行吸收水分或者釋放水分。根據(jù)這一原則,植物與環(huán)境的相互作用可以概括為兩個互相交流的同步進(jìn)程,因此形成了一個信息流的反應(yīng)鏈(圖2)[9]。
從此模型中可以概括如下結(jié)論。
對于植物而言,它所要處理的主要過程有:①通過各個組織器官來接收環(huán)境信息;②將得到的信息轉(zhuǎn)移到內(nèi)部并進(jìn)行處理;③以生長的方式(如生長出新枝)將處理后的信息繼續(xù)反饋給環(huán)境。
同樣,對于環(huán)境來說也有相似的運(yùn)行機(jī)制,即感知植物的反饋信息;環(huán)境內(nèi)部數(shù)據(jù)的處理;形成新的環(huán)境,被植物所感知。
2.2環(huán)境敏感模型分析
根據(jù)上述的概念模型提出了一個基于植物動態(tài)生長的模型,此模型不但能解釋一般L文法,而且還增加了一個植物和環(huán)境的交互模塊,即生長模型—環(huán)境模型(圖3)。該模型包括了植物表達(dá)模型、植物生長模型、環(huán)境分析模型和環(huán)境參數(shù)(陽光、溫度、水分等)。其中植物表達(dá)模型主要是L文法的表示,植物生長模型則在接收環(huán)境模型所傳遞的信息同時將文法進(jìn)行分析模擬;而環(huán)境分析模型主要用來接收環(huán)境參數(shù)和傳遞信息給生長模型。由于植物生長受到自身內(nèi)部因素的控制,所以這里提出了兩個重要概念,即內(nèi)部生長因子和外部環(huán)境因子。內(nèi)部生長因子是控制植物生長的因素;而外部環(huán)境因子是影響內(nèi)部生長參數(shù)的因素。因此該系統(tǒng)通過環(huán)境模型接收外部環(huán)境參數(shù),然后通過一定的生長計(jì)算模型來改變內(nèi)部生長因子,從而達(dá)到控制植物生長的效果。
2.3環(huán)境敏感模型的實(shí)現(xiàn)
由于林學(xué)上對環(huán)境與植物生長的關(guān)系已有研究,比較著名的是Watt提出的林窗模型[7]。
林窗模型是建立在森林循環(huán)動態(tài)理論基礎(chǔ)上,通過模擬林分內(nèi)單木的出生、生長和死亡與環(huán)境因子的關(guān)系來研究森林的動態(tài)變化。本文以典型的杉木林窗模型為例來實(shí)現(xiàn)此模型,它包括了溫度效應(yīng)、濕度效應(yīng)和光照效應(yīng)等環(huán)境適宜性函數(shù)。一般來說一棵樹可以通過以下幾個特征:胸徑(DBH)、樹高(H)、冠幅(CD)和冠高(CH),就可以大致地描繪出該樹的基本形狀。杉木林窗模型為我們提供了一個生長模型,此生長模型先假設(shè)在理想的環(huán)境下,然后用現(xiàn)實(shí)環(huán)境因子(G,V)對它進(jìn)行修正,最后得到實(shí)際生長量,即胸徑的最優(yōu)生長方程:
其中,fDBH(t)、 fH(t)分別為胸徑和樹高;Dmax和Hmax表示樹木的最大胸徑和樹高,fCD(t)為冠幅,t為年齡。G是生長參數(shù),是影響群落演變的關(guān)鍵參數(shù),與生長環(huán)境有關(guān);生長環(huán)境參數(shù)V取值為0~1,若生長環(huán)境優(yōu)越,則G取最大值310;若生長環(huán)境差,生長環(huán)境參數(shù)取值則小,G值也越小。
從以上公式中可以看出,其主要功能是樹與環(huán)境之間建立了一種關(guān)系,使得樹的生長受外界環(huán)境的影響。但是樹的特征不夠多,為了能更好更詳細(xì)地描述樹的特征,如樹干樹枝的直徑、樹枝的生長角度等,同時也使模擬過程更加逼真和靈活,筆者又參考了林學(xué)中的一些樹生長計(jì)算模型,引用了以下樹特征約束方程[9~13],并通過其中的接口參數(shù)(fDBH(t)、fH(t)、fCD(t)來實(shí)現(xiàn)與前面提到的林窗模型進(jìn)行有效連接,從而達(dá)到預(yù)期效果。
從以上公式中可以看出,如果給定某樹種,則可根據(jù)該樹種的植物學(xué)特點(diǎn)分析得到特定環(huán)境對應(yīng)的生長參數(shù)G,再通過時間t可計(jì)算得出該樹種的生長量以及各個特征屬性(胸徑、樹高、冠高、冠幅、樹枝粗細(xì)方位等),而這些特征屬性正好為L文法提供了所需的參數(shù)。如第1.1節(jié)中的L文法:
其中可以把迭代數(shù)映射到時間t以及樹高,把+/映射到樹枝轉(zhuǎn)角,改變F→FF產(chǎn)生式可以映射成生長速度等,還可以根據(jù)需求增加相應(yīng)的參數(shù)來增強(qiáng)模擬的效果,從而為森林動態(tài)生長模擬提供了堅(jiān)實(shí)的基礎(chǔ)。
3應(yīng)用
通過上文的實(shí)現(xiàn)方法,將該模型應(yīng)用到虛擬森林的動態(tài)仿真系統(tǒng)中,以VC++作為程序的開發(fā)平臺,并且利用目前主流的圖形開發(fā)庫OpenGL作為圖像的模擬核心引擎,再根據(jù)相應(yīng)的樹種,就可以模擬出該樹種在不同環(huán)境下(即不同的環(huán)境參數(shù)G)的生長狀態(tài)。
本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。