楊旨窈,劉 驥
?
基于虛擬器官L系統(tǒng)的植物生長模擬
楊旨窈1,劉 驥2
(1. 重慶育才中學(xué),重慶 400030;2. 重慶大學(xué)計(jì)算機(jī)學(xué)院,重慶 400044)
L系統(tǒng)是一種基于字符和產(chǎn)生式的文法系統(tǒng),廣泛應(yīng)用于植物生長模擬。它使用字符對(duì)植物器官進(jìn)行描述,但這種表示方式存在不足。鑒于此提出了基于虛擬器官L系統(tǒng)的植物生長模擬方法。該方法首先將植物器官的形態(tài)和生理屬性表示為虛擬器官,并利用虛擬器官間的關(guān)系構(gòu)成整個(gè)植物。然后用虛擬器官替代L系統(tǒng)中的字符。最后以虛擬器官的變化為核心建立L系統(tǒng)的產(chǎn)生式規(guī)則,并通過應(yīng)用產(chǎn)生式規(guī)則控制虛擬器官進(jìn)行變化,從而模擬植物的生長。實(shí)驗(yàn)證明該方法能夠?qū)χ参锷L進(jìn)行逼真的模擬。
虛擬植物;L系統(tǒng);植物器官;植物生長模擬;可視化
虛擬植物是一種應(yīng)用計(jì)算機(jī)技術(shù)對(duì)植物的生長變化過程進(jìn)行仿真并以3D圖形的方式進(jìn)行展現(xiàn)的技術(shù)。虛擬植物在3D場景重建、數(shù)字娛樂、動(dòng)畫生成、農(nóng)林業(yè)和植物生態(tài)等方面均有大量的研究[1],其中植物的生長模擬是虛擬植物研究的重要組成[2]?,F(xiàn)有的植物生長模擬技術(shù)包括L系統(tǒng)、函數(shù)迭代系統(tǒng)、A-系統(tǒng)、粒子系統(tǒng)、AMAP系統(tǒng)[3]及雙尺度自動(dòng)機(jī)模型[4]等。
L系統(tǒng)是現(xiàn)有技術(shù)中應(yīng)用最廣泛、研究最充分的一種技術(shù)[5]。它首先由植物學(xué)家Lindenmayer于1968年提出,其后通過Prusinkiewicz等的擴(kuò)展,形成了參數(shù)化L系統(tǒng)、隨機(jī)L系統(tǒng)、上下文相關(guān)L系統(tǒng)等擴(kuò)展系統(tǒng)[6]。L系統(tǒng)是系統(tǒng)狀態(tài)可以根據(jù)規(guī)則不斷演化的迭代系統(tǒng),其實(shí)質(zhì)是一種基于字符和產(chǎn)生式的文法系統(tǒng)。其系統(tǒng)狀態(tài)由字符構(gòu)成的字符串表示,稱為L字符串(L-String)。系統(tǒng)的初始狀態(tài),即初始L字符串稱為公理(Axiom)。產(chǎn)生式(Production)是L字符串中字符的變化規(guī)則。在每個(gè)演化周期,L系統(tǒng)應(yīng)用產(chǎn)生式對(duì)系統(tǒng)狀態(tài)進(jìn)行修改,形成新的L字符串。由于植物的生長過程與L字符串的變化過程非常類似,因此可以用L系統(tǒng)的演化模擬植物的生長。為了對(duì)植物進(jìn)行3D展示,L字符串中還可以添加用于3D繪制的符號(hào)信息,稱為L字符串的Turtle解釋(Turtle interpretation)。在文獻(xiàn)[6]中定義的L系統(tǒng)功能完整、應(yīng)用廣泛,被L-Studio等植物模擬軟件所采用。為了便于表述,本文余下部分所述的L系統(tǒng)均是文獻(xiàn)[6]中定義的系統(tǒng),其Turtle解釋也參考文獻(xiàn)[6]。
L系統(tǒng)能夠較好的描述植物的形態(tài)結(jié)構(gòu),對(duì)大多數(shù)植物能夠產(chǎn)生較為逼真的3D植物圖形。但用L系統(tǒng)描述的植物生長規(guī)則比較復(fù)雜,對(duì)特定種類植物生長規(guī)則的提取和定義非常困難。造成這種情況的原因在于L系統(tǒng)用字符表示植物的各個(gè)器官,這種描述機(jī)制在描述植物器官的變化上存在不足。在本文余下的章節(jié)中將首先詳細(xì)分析現(xiàn)有L系統(tǒng)在描述植物器官上所存在的不足,然后引入虛擬器官(Virtual Organ)的概念,用虛擬器官和虛擬器官間的關(guān)系構(gòu)成整個(gè)植物,以虛擬器官的變化為核心建立產(chǎn)生式規(guī)則,形成虛擬器官L系統(tǒng)。在L系統(tǒng)的每個(gè)演化周期,應(yīng)用產(chǎn)生式對(duì)組成植物的各個(gè)虛擬器官進(jìn)行演化,形成新的系統(tǒng)狀態(tài),從而模擬植物的生長。
為了證明該方法的有效性,本文設(shè)計(jì)了一個(gè)支持虛擬器官L系統(tǒng)的原型系統(tǒng),模擬了辣椒和茄子的生長過程,并將模擬的結(jié)果與L-Studio的模擬結(jié)果進(jìn)行了對(duì)比。這些實(shí)驗(yàn)表明該方法能對(duì)植物生長進(jìn)行逼真的模擬。
為了更好的說明現(xiàn)有L系統(tǒng)所存在的不足,首先需要分析一下現(xiàn)有L系統(tǒng)如何描述植物。假設(shè)圖1是某植物的一個(gè)生長過程。
圖1 植物生長
在植物生長之前,該植物由主干、枝干以及果實(shí)構(gòu)成。主干、枝干和果實(shí)均是該植物的器官。在這個(gè)生長過程中,各個(gè)植物器官的形態(tài)和生理屬性發(fā)生了改變,并且在主干之上長出了一個(gè)新生枝干。假設(shè)該植物生長過程中植物器官的形態(tài)、生理屬性和器官間的關(guān)系如圖2所示:
圖2 植物器官的形態(tài)、生理屬性以及器官間的關(guān)系
現(xiàn)有L系統(tǒng)首先用字符表示植物的各個(gè)器官,并用字符的參數(shù)表示植物器官的生理屬性,然后用這些參數(shù)化字符構(gòu)成L字符串。同時(shí)為了繪制植物還需要在L字符串中引入3D繪制字符用于表示植物器官的形態(tài)屬性。假設(shè)用字母A表示主干,B表示枝干,C表示果實(shí),D表示新生枝干。對(duì)于圖1所示植物,其生長前的狀態(tài)可以用字符串A(6,5)[+ (45)B(3,2) [+(45)C(1,1)]]來表示。其中A(6,5) 表示A的長度為6,年齡為5。B(3,2) 表示B的長度為3,年齡為2。C(1,1) 表示C的大小為1,年齡為1?!癧”和“]”構(gòu)成一個(gè)分支,+(45)是3D繪制字符表示向左傾斜45度。而植物生長之后的狀態(tài)可以表示為A(7,6) [+(45)B(4,3) [+(45)C(2,2)]] [-(45)D(3,1)]。其中A(7,6) 表示A的長度為7,年齡為6。B(4,3) 表示B的長度為4,年齡為3。C(2,2)表示C的大小為2,年齡為2。D(3,1)表示D的長度為3,年齡為1。-(45)是3D繪制字符表示向右傾斜45度。
從上述描述中可以看出現(xiàn)有L系統(tǒng)對(duì)植物的表示存在明顯的缺陷。其具體表現(xiàn)有以下幾個(gè)方面:
(1)字符的參數(shù)不適合表示植物的生理屬性。當(dāng)看到字符A(6,5)和C(2,2)這樣的符號(hào)時(shí),很難明確參數(shù)的含義。例如A的第一個(gè)參數(shù)代表長度,而C的第一個(gè)參數(shù)則代表的是大小。因此定義產(chǎn)生式時(shí)(尤其是那些對(duì)生理屬性進(jìn)行改變的產(chǎn)生式)存在不便,也不利于對(duì)植物器官的生理變化進(jìn)行精確控制。
(2)植物器官的形態(tài)屬性與植物器官的生理屬性是分離的。例如+(45)B(3,2)表示向左旋轉(zhuǎn)45度,然后繪制器官B。其中+(45)屬于B的形態(tài)屬性,(3,2)是B的生理屬性。在現(xiàn)有L系統(tǒng)中,+(45)和B(3,2)是獨(dú)立的字符。因此當(dāng)B的生理屬性發(fā)生改變時(shí),+(45)無法修改。但在植物生長過程中經(jīng)常存在由于生理屬性發(fā)生改變而導(dǎo)致形態(tài)屬性發(fā)生變化的情況。
(3)現(xiàn)有L系統(tǒng)只能通過對(duì)L字符串的遍歷獲取植物器官間的關(guān)系。例如A(6,5)[+(45)B(3,2)[+ (45)C(1,1)]]中,B(3,2)和C(1,1)是A(6,5)的分支,或者稱為A(6,5)上的子器官。這個(gè)信息在A(6,5)中沒有保存,而是通過遍歷L字符串并識(shí)別“[”和“]”而獲取的。在定義產(chǎn)生式時(shí),很多情況下需要根據(jù)器官間的信息來決定當(dāng)前器官的變化。由于這個(gè)重要的信息沒有保存,因此在定義某些產(chǎn)生式時(shí)會(huì)導(dǎo)致不便。
(4)植物器官的屬性(包括生理和形態(tài)屬性)并非都是數(shù)字,也可能是字符串等其他類型。目前參數(shù)化字符所支持的參數(shù)只能是數(shù)字,這也限制了L系統(tǒng)的表達(dá)能力。
為了更好的對(duì)植物器官進(jìn)行描述,本文提出虛擬器官用于描述植物器官以下3個(gè)方面的信息:
(1)器官的形態(tài)屬性,包括器官的3D形態(tài)、大小、3D空間位置向量和方向向量等。此類屬性主要影響器官的3D展現(xiàn)。在植物生長過程中器官的形態(tài)屬性是不斷變化的。
(2)器官的生理屬性,包括器官的類型、年齡、水分、營養(yǎng)物質(zhì)和激素等。此類屬性是器官生長的決定因素。
(3)器官間的關(guān)系。器官之間是有相互聯(lián)系相互影響的,器官間的關(guān)系也是器官生長變化的重要屬性。由于植物的特殊結(jié)構(gòu),植物器官間的關(guān)系構(gòu)成一種“樹形結(jié)構(gòu)”,即除根(或者構(gòu)成植物的第一個(gè)器官)以外的植物器官必有唯一的父器官。
下面給出虛擬器官的形式化描述:
定義2:虛擬植物(Virtual Plant)定義為植物的根器官即VP=Vo,且Vo是植物中的根器官,即Parent屬性為null的虛擬器官。由于Vo的屬性記錄了器官間的關(guān)系,因此可以通過遍歷Vo訪問虛擬植物上面所有的器官。
定義3:定義符號(hào)Rx(degree)、Ry(degree)、Rz(degree)是表示空間旋轉(zhuǎn)的符號(hào)。Rx表示繞x軸旋轉(zhuǎn)degree度,Ry表示繞y軸旋轉(zhuǎn)degree度,Rz表示繞z軸旋轉(zhuǎn)degree度。其中x軸的正向?yàn)橛?jì)算機(jī)屏幕的右方向,y軸的正方向?yàn)橛?jì)算機(jī)屏幕的上方向,z軸的正方向?yàn)橛?jì)算機(jī)屏幕的外方向。Rx、Ry、Rz可以進(jìn)行任意的組合,例如Rx(a)Ry(b)Rz(c)表示先繞x旋轉(zhuǎn)a度,然后繞y軸旋轉(zhuǎn)b度,最后繞z軸旋轉(zhuǎn)c度。
為了便于對(duì)虛擬器官的屬性進(jìn)行訪問,下面定義幾個(gè)訪問操作。
定義4:設(shè)Vo是一個(gè)虛擬器官,定義操作Vo.PropertyName表示對(duì)PropertyName所對(duì)應(yīng)的PropertyValue的訪問,例如Vo1.length、Vo1.age分別返回Vo1的legnth和age屬性的值。Vo.type返回Vo的類型,例如Vo1.type返回Vo1的類型A。
定義5:設(shè)Vo是一個(gè)虛擬器官,定義操作Vo.childs(i)是對(duì)第i個(gè)子器官的訪問。
上述虛擬器官的定義和表示方式解決了參數(shù)化字符所存在的不足。通過虛擬器官可以直觀的看出器官的屬性名稱和屬性值,便于編寫植物的生長規(guī)則。形態(tài)和生理屬性也都包含在虛擬器官中,使得基于生理對(duì)器官形態(tài)進(jìn)行控制成為可能。器官間的關(guān)系通過parent和childs屬性進(jìn)行了保存,便于在定義規(guī)則時(shí)使用這些信息。虛擬器官所能夠表示的屬性也不僅僅是數(shù)字,例如direction屬性的值是由Rx、Ry、Rz組成的字符串。在本文的實(shí)驗(yàn)部分,還將植物器官的3D模型保存在虛擬器官的屬性中。因此這種擴(kuò)展豐富了系統(tǒng)的表達(dá)能力。
基于虛擬器官可以重新定義L系統(tǒng),使得L系統(tǒng)能夠以虛擬器官為核心表示植物的生長變化,本文稱這種L系統(tǒng)為虛擬器官L系統(tǒng)。下面給出這種L系統(tǒng)的形式化定義。
下面給出基于虛擬器官L系統(tǒng)的植物生長模擬算法:
算法1:植物的生長PlantGrow
(2)令Vo=VP。
(4)令i=1。
(5)如果i>Vo.childs.size,退出算法。
算法2:器官的生長OrganGrow
(1)令i=1,size表示P中產(chǎn)生式的個(gè)數(shù)。
(2)如果i>size,則退出算法。
(4)如果Vo.type!=type,則i++,跳到(2)。
(5)如果Vo不滿足codition,則i++,跳到(2)。
(6)產(chǎn)生一個(gè)隨機(jī)數(shù)x,使得x∈(0,1)。
在上述算法中,植物的生長過程被描述為各個(gè)器官的生長過程。即通過遍歷全部的虛擬器官,并應(yīng)用L系統(tǒng)的產(chǎn)生式規(guī)則使得虛擬器官發(fā)生改變,從而模擬植物的生長。
為了證明本方法的有效性,本文設(shè)計(jì)了支持虛擬器官L系統(tǒng)的植物生長模擬軟件[7-12]。該軟件用Java編寫,用Java3D繪制植物的3D圖形,在使用時(shí)通過虛擬器官L系統(tǒng)描述語言定義虛擬器官L系統(tǒng),系統(tǒng)的編譯程序?qū)⒃撜Z言轉(zhuǎn)化為對(duì)應(yīng)的虛擬器官L系統(tǒng)。系統(tǒng)同時(shí)包括器官庫、器官綁定、生長函數(shù)、生長演化和動(dòng)畫演示等功能?;谠撥浖到y(tǒng),本文對(duì)辣椒的生長過程(圖3)、茄子的生長過程(圖4)進(jìn)行了模擬,并將結(jié)果與L-studio的效果(圖5)進(jìn)行了對(duì)比。
圖3 辣椒的生長模擬
虛擬器官描述了植物器官的形態(tài)、生理屬性和植物器官間的關(guān)系。虛擬器官L系統(tǒng)以其為核心,改進(jìn)了現(xiàn)有L系統(tǒng)在描述植物器官上所存在的不足。實(shí)驗(yàn)表明本方法能夠?qū)Χ喾N植物的生長過程進(jìn)行模擬。由于這種方法能夠更好的描述生長過程中植物器官形態(tài)和生理屬性的變化,因而產(chǎn)生的3D展示效果比L-studio更為逼真。目前本文提出的方法尚沒有考慮環(huán)境因素對(duì)植物生長的影響。如何擴(kuò)展本文方法,以模擬環(huán)境影響下的植物生長是下一步需要研究的問題。
圖4 茄子的生長模擬
圖5 L-studio模擬的辣椒和茄子
[1] 馬新明, 楊娟, 熊淑萍. 植物虛擬研究現(xiàn)狀及展望[J]. 作物研究, 2003, 3(17): 148-151.
[2] 歐中斌, 廖桂平, 喻飛. 虛擬植物生長建模[J]. 系統(tǒng)仿真學(xué)報(bào), 2006, (S1): 291-294.
[3] P. DeReffye, T. Fourcaud, F. Blaise, D. Barthelemy, F. Houllier. A functional model of tree growth and tree architecture [J]. Silva Fennica, 1997, 31: 297-311.
[4] 趙星, Philippe de Reffye, 熊范綸, 胡包鋼, 展志崗. 虛擬植物生長的雙尺度自動(dòng)機(jī)模型[J]. 計(jì)算機(jī)學(xué)報(bào), 2001, 24(06): 608-615.
[5] 李云峰, 朱慶生, 傅鶴崗, 古平. 基于L系統(tǒng)改進(jìn)的虛擬植物原型系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用研究, 2006, (08): 232-239.
[6] P. Prusinkiewicz, A. Lindenmayer. The Algorithmic Beauty of Plants [M]. New York: Springer, Berlin Heidelberg, 1990.
[7] 李秀玲. 計(jì)算機(jī)虛擬實(shí)驗(yàn)?zāi)M訓(xùn)練系統(tǒng)的設(shè)計(jì)[J]. 軟件, 2012, 33(4): 44-46.
[8] 郭培源, 馮博. 基于云計(jì)算平臺(tái)的虛擬實(shí)驗(yàn)室設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2012, 33(10): 106-109.
[9] 呂杰英. 虛擬機(jī)技術(shù)在計(jì)算機(jī)基礎(chǔ)教學(xué)中的應(yīng)用[J]. 軟件, 2015, 36(5): 113-116.
[10] 尹航, 楊歡, 崔海斌, 等. 基于大數(shù)據(jù)應(yīng)用的虛擬化云平臺(tái)建設(shè)方法研究[J]. 軟件, 2018, 39(4): 201-207.
[11] 何雋, 孔繁偉. 三維仿真動(dòng)畫角色綁定與動(dòng)畫技巧探究[J]. 軟件, 2018, 39(4): 92-96.
[12] 王連杰, 韋群. 三維云圖仿真系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2018, 39(5): 151-155.
Plant Growth Simulation Based on Virtual Organ L System
YANG Zhi-yao1, LIU Ji2
(1. Chongqing Yucai Secondary School, Chongqing 400030, China; 2. College of Computer Science, Chongqing University, Chongqing 400044, China)
L system which is widely used to simulate plant growth is a grammar system based on letters and productions. It uses letters to describe plant organs, but this kind of description has some disadvantages. In order to solve this problem, a plant growth simulation method based on virtual organ L system is presented. Firstly, geometric and physiological properties of a real plant organ are represented by virtual organ, and the relations among virtual organs are used to construct the structure of a plant. Then letters in L system are replaced by virtual organs. Finally, productions of L system are built according to the changes of virtual organs, and these productions are applied to control the variations of virtual organs during the plant growth simulation process. Experiments show that plant growth can be simulated realistically by this method.
Virtual plant; L system; Plant organ; Plant growth simulation; Visualization
TP391.9
A
10.3969/j.issn.1003-6970.2018.10.034
劉驥(1981-),男,講師,主要研究方向:計(jì)算機(jī)圖形學(xué)。
楊旨窈,劉驥. 基于虛擬器官L系統(tǒng)的植物生長模擬[J]. 軟件,2018,39(10):182-186