魯玉佳,張金區(qū)
(華南師范大學(xué)計(jì)算機(jī)學(xué)院,廣州 510000)
作為自然界中最常見的景物之一,植物擁有復(fù)雜的三維結(jié)構(gòu),且其種類繁多,功能各異,為地球其他生靈提供了賴以生存的環(huán)境。植物的生長過程具有明顯的形態(tài)結(jié)構(gòu)變化,通過觀察其生長動(dòng)態(tài)模型,具有揭示自然規(guī)律與進(jìn)行科普教育的意義。
虛擬現(xiàn)實(shí)是在計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)仿真與硬件檢測等信息技術(shù)交叉綜合形成的前沿技術(shù)[1]。運(yùn)用虛擬現(xiàn)實(shí)技術(shù)對(duì)植物進(jìn)行仿真建模,探尋植物生長規(guī)律,同時(shí)對(duì)植物生長環(huán)境,如陽光、土壤、水分等影響的研究同樣具有重要價(jià)值。本文針對(duì)草本、喬木、藤木等三種植物類型的部分植物進(jìn)行建模,基于野外測量的真實(shí)植物高度、葉長、葉寬、枝杈長度、結(jié)節(jié)數(shù)等參數(shù)進(jìn)行仿真可視化建模,制作植物從幼芽、植株、花、果實(shí)、種子全部生長過程的植物動(dòng)畫。
目前構(gòu)建虛擬植物模型的工具主要有:SpeedTree、Xfrog、Plant Studio、L-studio、PlantFactory 等。它們可以根據(jù)植物的幾何特征,構(gòu)建真實(shí)的植物模型,根據(jù)植物生長規(guī)律,定量地模擬植物生長過程[2]。SpeedTree是目前的主流植物建模軟件,主要用于游戲與大規(guī)模真實(shí)感樹林的建造,側(cè)重于植物模型的美觀,但是除了一些風(fēng)吹動(dòng)畫外,無法制作生長動(dòng)畫。Xfrog與Plant Studio定義了描述植物真實(shí)屬性的參數(shù)表,符號(hào)輸入植物結(jié)構(gòu),葉、花、樹干組合成真實(shí)植物,但是不可以自定義植物模型。L-studio是基于L系統(tǒng)開發(fā)的軟件,基于拓?fù)浣Y(jié)構(gòu)結(jié)合計(jì)算機(jī)圖形學(xué)描述植物模型,是應(yīng)用廣泛的科學(xué)研究軟件[3],但其專用的編程語言復(fù)雜,難于理解。PlantFactory是一款功能強(qiáng)大的植物制作軟件,花、草、樹木所有都能建模實(shí)現(xiàn),支持自定義植物建模,擁有精細(xì)風(fēng)場、生長及四季動(dòng)畫。
由E-on Software公司開發(fā)的PlantFactory,被稱作植物工廠,是一款強(qiáng)大的植物建模軟件,能制作小草、花木、現(xiàn)實(shí)植物,甚至是夢幻植物的虛擬3D模型,通過繪畫創(chuàng)造你的植被,組裝簡單的積木,或完全圖形化所有植物的特性。它還擁有動(dòng)畫制作功能,制作擁有四季變換、生長過程開花結(jié)果的植物動(dòng)畫。植物出口完全裝配,完全紋理化,具有UV地圖和位移,以及所有多細(xì)節(jié)層次技術(shù)(Level of Detail,LoD),微風(fēng)或風(fēng)動(dòng)畫植物可以作為完全裝配的網(wǎng)格或動(dòng)畫頂點(diǎn)云導(dǎo)出。
VUE也是E-on公司的產(chǎn)品,它是一款制作真實(shí)自然環(huán)境的軟件,生成的自然環(huán)境效果逼真,如臨其境。使用VUE結(jié)合PlantFactory,將PlantFactory中的靜態(tài)年齡屬性制作成VUE的mp4格式視頻動(dòng)畫,能夠放入用Three.js編程的三維網(wǎng)頁中進(jìn)行播放,觀看植物生長過程。
PlantFactory擁有完備的節(jié)點(diǎn)連接機(jī)制,如構(gòu)建樹根、樹干、樹枝的幾何節(jié)點(diǎn);生成樹藤的循環(huán)節(jié)點(diǎn)、調(diào)整風(fēng)力的控制節(jié)點(diǎn);模擬果實(shí)形狀的樣條線節(jié)點(diǎn)等,如圖1。運(yùn)用節(jié)點(diǎn)及節(jié)點(diǎn)內(nèi)部的參數(shù)來創(chuàng)建與調(diào)整植物模型,節(jié)點(diǎn)具有統(tǒng)一性、協(xié)調(diào)性與可控性。用PlantFactory構(gòu)建植物模型,按照植物的生長過程,依次構(gòu)建樹根、樹干、樹枝、樹葉等元素,并在此基礎(chǔ)上制作生長與四季動(dòng)畫。構(gòu)建步驟如圖2。
圖1 PlantFactory節(jié)點(diǎn)集
圖2模型構(gòu)造步驟
運(yùn)用節(jié)點(diǎn)內(nèi)部參數(shù)的多變性與統(tǒng)一性,單節(jié)點(diǎn)即可構(gòu)造完整植物。作為使用最廣泛的植物制作幾何節(jié)點(diǎn)集,幾何節(jié)點(diǎn)集包含Segment節(jié)點(diǎn)、Urchin節(jié)點(diǎn)、Billboard節(jié)點(diǎn)、Warpboard節(jié)點(diǎn)、Hydra節(jié)點(diǎn)等,各個(gè)節(jié)點(diǎn)可構(gòu)造的植物類型幾乎包含所有草本、喬木、灌木。節(jié)點(diǎn)構(gòu)造植物器官如圖3所示。單節(jié)點(diǎn)Segment構(gòu)建植物示例如圖4。
圖3幾何節(jié)點(diǎn)集
圖4單節(jié)點(diǎn)構(gòu)造整棵植物效果圖
節(jié)點(diǎn)以參數(shù)的調(diào)整來塑造模型,以Urchin與Hydra節(jié)點(diǎn)為例,Urchin與Hydra節(jié)點(diǎn)常被用來制作模擬果實(shí)的球狀模型,模擬花朵的環(huán)繞瓣?duì)钅P?。參?shù)面板中,Radius設(shè)置球類果實(shí)的半徑,Profile輔助調(diào)整模型形狀,制作的藤類植物西瓜模型見圖5、圖7。Hydra節(jié)點(diǎn)參數(shù)Number設(shè)置草葉的片數(shù),Scale與Angle調(diào)整葉片環(huán)繞角度及高度,制作的草本植物車前草如圖6、圖 8。
植物模型的構(gòu)建,遵循在大自然中植物生長的規(guī)律,由樹根到樹干、樹枝、樹葉,由花、果實(shí)到種子,構(gòu)建過程一層一層構(gòu)建,通過節(jié)點(diǎn)集成,各個(gè)節(jié)點(diǎn)各自分離,參數(shù)互不干擾,但又具有特殊連接。
植物的生長發(fā)育是一項(xiàng)復(fù)雜的過程,它具有的控制變量與影響因素眾多,變量與生長結(jié)果之間有動(dòng)態(tài)耦合的關(guān)系,且植物的生長過程具有隨機(jī)性[4]。因此建立的植物生長模型,是在一定的假設(shè)條件下,并根據(jù)特定的研究內(nèi)容,對(duì)植物生長過程進(jìn)行簡化處理。
圖5 Urchin參數(shù)面板
圖6 Hydra參數(shù)面板
圖7藤類植物西瓜
圖8草本植物車前草
本研究植物生長模型基于分形思想,分形理論是一個(gè)數(shù)學(xué)分支,研究自然界與非線性系統(tǒng)中不規(guī)則、不光滑的幾何形體[5]。分形樹是具有自相似特點(diǎn)的分形問題,采用遞歸算法生成分形樹。構(gòu)造分形樹,先確定基本生成元,規(guī)定樹干的高度、樹干底半徑、枝頂半徑、樹枝偏離角度、頂?shù)装霃奖?、樹的層?shù)等,根據(jù)生成規(guī)則在每層重繪直至遞歸結(jié)束[6]。根據(jù)遞歸算法,迭代枝干效果及分形思想制作的喬木蘋果樹見圖9。
圖9枝干迭代效果
PlantFactory構(gòu)建完成后的模型,為其添加年齡屬性,并編輯不同年齡的狀況,包含其生長過程。同VUE xStream進(jìn)行合作完成創(chuàng)建植物生長的可視化。詳細(xì)過程包括:創(chuàng)建項(xiàng)目、初始化場景、切換場景捕獲模式為視頻、重置時(shí)間線、導(dǎo)入PlantFactory模型、拖動(dòng)時(shí)間線到某一固定時(shí)刻、完成調(diào)整模型年齡狀態(tài)、軟件自動(dòng)生成補(bǔ)間動(dòng)畫、完成一個(gè)年齡段到另一個(gè)年齡段的可視化過程。
通過PlantFactory將植物模型導(dǎo)出TPF格式,該格式的植物模型具備生長屬性,可通過參數(shù)調(diào)節(jié)查看生長過程,調(diào)整界面及生長模型見圖10。
圖10調(diào)整植物屬性,使用補(bǔ)間動(dòng)畫完成植物生長過程
PlantFactory構(gòu)建完成后,導(dǎo)出FBX模型文件,使用Three.js進(jìn)行解析渲染,完成在網(wǎng)頁進(jìn)行植物生長模型可視化科普教育的目的。
FBX文件是免費(fèi)的三維數(shù)據(jù)交換格式,可以跨平臺(tái)使用,目前大多數(shù)建模軟件都支持FBX的解析與生成。PlantFactory可以將生成的植物模型轉(zhuǎn)換成FBX格式文件,通過分析和解析FBX文件,將FBX以最優(yōu)的方式融合進(jìn)Three.js中。
FBX是以scene graph的結(jié)構(gòu)來存儲(chǔ)模型的所有信息,F(xiàn)BX SDK加載FBX模型過程,首先完成SDK初始化和FbxScene的初始化,初始化結(jié)束,從獲得的根結(jié)點(diǎn)遍歷到每一個(gè)子結(jié)點(diǎn)。幾何網(wǎng)格的加載主要包含網(wǎng)格頂點(diǎn)信息、頂點(diǎn)顏色、每個(gè)頂點(diǎn)所對(duì)應(yīng)的法向、UV信息、Tangent信息等。完成場景和模型的構(gòu)建后渲染出模型的雛形,通過材質(zhì)的加載、Camera和Light的加載、動(dòng)畫的加載和骨骼蒙皮動(dòng)畫加載完成最終的模型渲染,模型加載過程圖見圖11。
圖11模型加載過程圖
通過使用FBX SDK中FbxExporter完成FBX模型導(dǎo)出,見圖12。Three.js渲染模型步驟見圖13。
圖12導(dǎo)出過程圖
圖13 Three.js渲染模型
Three.js是一個(gè)輕量級(jí)的用于在瀏覽器中創(chuàng)建3D計(jì)算機(jī)圖形應(yīng)用程序的WebGL開源框架。提供了非常多的3D顯示功能,可以創(chuàng)建各種三維場景,包括了攝影機(jī)、光影、材質(zhì)等各種對(duì)象[7]。運(yùn)用Three.js對(duì)天空盒、場景、圖像、網(wǎng)格、材質(zhì)的加載,實(shí)現(xiàn)植物模型在3D網(wǎng)頁上的可視化,效果圖如圖14。
圖14 Three.js渲染模型
通過PlantFactory建模,分形創(chuàng)建植物、動(dòng)畫制作、渲染等研究,我們創(chuàng)建出擁有動(dòng)畫的植物生長模型與視頻,可以對(duì)植物與植物生長進(jìn)行可視化建模與科普,對(duì)農(nóng)林、建筑、教育、仿真等領(lǐng)域提供了參考,具有現(xiàn)實(shí)研究意義。