魯玉佳,張金區
(華南師范大學計算機學院,廣州 510000)
作為自然界中最常見的景物之一,植物擁有復雜的三維結構,且其種類繁多,功能各異,為地球其他生靈提供了賴以生存的環境。植物的生長過程具有明顯的形態結構變化,通過觀察其生長動態模型,具有揭示自然規律與進行科普教育的意義。
虛擬現實是在計算機圖形學、計算機仿真與硬件檢測等信息技術交叉綜合形成的前沿技術[1]。運用虛擬現實技術對植物進行仿真建模,探尋植物生長規律,同時對植物生長環境,如陽光、土壤、水分等影響的研究同樣具有重要價值。本文針對草本、喬木、藤木等三種植物類型的部分植物進行建模,基于野外測量的真實植物高度、葉長、葉寬、枝杈長度、結節數等參數進行仿真可視化建模,制作植物從幼芽、植株、花、果實、種子全部生長過程的植物動畫。
目前構建虛擬植物模型的工具主要有:SpeedTree、Xfrog、Plant Studio、L-studio、PlantFactory 等。它們可以根據植物的幾何特征,構建真實的植物模型,根據植物生長規律,定量地模擬植物生長過程[2]。SpeedTree是目前的主流植物建模軟件,主要用于游戲與大規模真實感樹林的建造,側重于植物模型的美觀,但是除了一些風吹動畫外,無法制作生長動畫。Xfrog與Plant Studio定義了描述植物真實屬性的參數表,符號輸入植物結構,葉、花、樹干組合成真實植物,但是不可以自定義植物模型。L-studio是基于L系統開發的軟件,基于拓撲結構結合計算機圖形學描述植物模型,是應用廣泛的科學研究軟件[3],但其專用的編程語言復雜,難于理解。PlantFactory是一款功能強大的植物制作軟件,花、草、樹木所有都能建模實現,支持自定義植物建模,擁有精細風場、生長及四季動畫。
由E-on Software公司開發的PlantFactory,被稱作植物工廠,是一款強大的植物建模軟件,能制作小草、花木、現實植物,甚至是夢幻植物的虛擬3D模型,通過繪畫創造你的植被,組裝簡單的積木,或完全圖形化所有植物的特性。它還擁有動畫制作功能,制作擁有四季變換、生長過程開花結果的植物動畫。植物出口完全裝配,完全紋理化,具有UV地圖和位移,以及所有多細節層次技術(Level of Detail,LoD),微風或風動畫植物可以作為完全裝配的網格或動畫頂點云導出。
VUE也是E-on公司的產品,它是一款制作真實自然環境的軟件,生成的自然環境效果逼真,如臨其境。使用VUE結合PlantFactory,將PlantFactory中的靜態年齡屬性制作成VUE的mp4格式視頻動畫,能夠放入用Three.js編程的三維網頁中進行播放,觀看植物生長過程。
PlantFactory擁有完備的節點連接機制,如構建樹根、樹干、樹枝的幾何節點;生成樹藤的循環節點、調整風力的控制節點;模擬果實形狀的樣條線節點等,如圖1。運用節點及節點內部的參數來創建與調整植物模型,節點具有統一性、協調性與可控性。用PlantFactory構建植物模型,按照植物的生長過程,依次構建樹根、樹干、樹枝、樹葉等元素,并在此基礎上制作生長與四季動畫。構建步驟如圖2。

圖1 PlantFactory節點集

圖2模型構造步驟
運用節點內部參數的多變性與統一性,單節點即可構造完整植物。作為使用最廣泛的植物制作幾何節點集,幾何節點集包含Segment節點、Urchin節點、Billboard節點、Warpboard節點、Hydra節點等,各個節點可構造的植物類型幾乎包含所有草本、喬木、灌木。節點構造植物器官如圖3所示。單節點Segment構建植物示例如圖4。

圖3幾何節點集

圖4單節點構造整棵植物效果圖
節點以參數的調整來塑造模型,以Urchin與Hydra節點為例,Urchin與Hydra節點常被用來制作模擬果實的球狀模型,模擬花朵的環繞瓣狀模型。參數面板中,Radius設置球類果實的半徑,Profile輔助調整模型形狀,制作的藤類植物西瓜模型見圖5、圖7。Hydra節點參數Number設置草葉的片數,Scale與Angle調整葉片環繞角度及高度,制作的草本植物車前草如圖6、圖 8。
植物模型的構建,遵循在大自然中植物生長的規律,由樹根到樹干、樹枝、樹葉,由花、果實到種子,構建過程一層一層構建,通過節點集成,各個節點各自分離,參數互不干擾,但又具有特殊連接。
植物的生長發育是一項復雜的過程,它具有的控制變量與影響因素眾多,變量與生長結果之間有動態耦合的關系,且植物的生長過程具有隨機性[4]。因此建立的植物生長模型,是在一定的假設條件下,并根據特定的研究內容,對植物生長過程進行簡化處理。

圖5 Urchin參數面板

圖6 Hydra參數面板

圖7藤類植物西瓜

圖8草本植物車前草
本研究植物生長模型基于分形思想,分形理論是一個數學分支,研究自然界與非線性系統中不規則、不光滑的幾何形體[5]。分形樹是具有自相似特點的分形問題,采用遞歸算法生成分形樹。構造分形樹,先確定基本生成元,規定樹干的高度、樹干底半徑、枝頂半徑、樹枝偏離角度、頂底半徑比、樹的層數等,根據生成規則在每層重繪直至遞歸結束[6]。根據遞歸算法,迭代枝干效果及分形思想制作的喬木蘋果樹見圖9。

圖9枝干迭代效果
PlantFactory構建完成后的模型,為其添加年齡屬性,并編輯不同年齡的狀況,包含其生長過程。同VUE xStream進行合作完成創建植物生長的可視化。詳細過程包括:創建項目、初始化場景、切換場景捕獲模式為視頻、重置時間線、導入PlantFactory模型、拖動時間線到某一固定時刻、完成調整模型年齡狀態、軟件自動生成補間動畫、完成一個年齡段到另一個年齡段的可視化過程。
通過PlantFactory將植物模型導出TPF格式,該格式的植物模型具備生長屬性,可通過參數調節查看生長過程,調整界面及生長模型見圖10。

圖10調整植物屬性,使用補間動畫完成植物生長過程
PlantFactory構建完成后,導出FBX模型文件,使用Three.js進行解析渲染,完成在網頁進行植物生長模型可視化科普教育的目的。
FBX文件是免費的三維數據交換格式,可以跨平臺使用,目前大多數建模軟件都支持FBX的解析與生成。PlantFactory可以將生成的植物模型轉換成FBX格式文件,通過分析和解析FBX文件,將FBX以最優的方式融合進Three.js中。
FBX是以scene graph的結構來存儲模型的所有信息,FBX SDK加載FBX模型過程,首先完成SDK初始化和FbxScene的初始化,初始化結束,從獲得的根結點遍歷到每一個子結點。幾何網格的加載主要包含網格頂點信息、頂點顏色、每個頂點所對應的法向、UV信息、Tangent信息等。完成場景和模型的構建后渲染出模型的雛形,通過材質的加載、Camera和Light的加載、動畫的加載和骨骼蒙皮動畫加載完成最終的模型渲染,模型加載過程圖見圖11。

圖11模型加載過程圖
通過使用FBX SDK中FbxExporter完成FBX模型導出,見圖12。Three.js渲染模型步驟見圖13。

圖12導出過程圖

圖13 Three.js渲染模型
Three.js是一個輕量級的用于在瀏覽器中創建3D計算機圖形應用程序的WebGL開源框架。提供了非常多的3D顯示功能,可以創建各種三維場景,包括了攝影機、光影、材質等各種對象[7]。運用Three.js對天空盒、場景、圖像、網格、材質的加載,實現植物模型在3D網頁上的可視化,效果圖如圖14。

圖14 Three.js渲染模型
通過PlantFactory建模,分形創建植物、動畫制作、渲染等研究,我們創建出擁有動畫的植物生長模型與視頻,可以對植物與植物生長進行可視化建模與科普,對農林、建筑、教育、仿真等領域提供了參考,具有現實研究意義。