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