夏紅梅 張欣景 胡訓強
(海軍陸戰學院模擬訓練中心 廣州 510430)
?
基于SpeedTree工具的三維真實感樹木建模研究*
夏紅梅 張欣景 胡訓強
(海軍陸戰學院模擬訓練中心 廣州 510430)
論文對SpeedTree建模軟件進行了研究,分析了軟件的基本構成、主要技術特性和樹木建模的具體方法。依據建模原理,對樹木整體骨架、主干、分枝、葉片等屬性進行編輯設置,同時加入LOD、光照和風力效果,最后將創建好的樹木模型加入到三維地形中,結果表明,創建的樹木模型具有真實度高、動感效果好、操作簡便的特點。
SpeedTree; 樹; 構成; 特性
Class Number TP391.9
眾所周知,樹木是自然環境中重要的組成部分,對樹木等植物的模擬也一直是計算機圖形學的研究熱點[1],并廣泛應用各領域中,無論是教育教學,還是工業、農業或是電影游戲,樹木的虛擬表現都具有重要作用[2]。SpeedTree是一款專門的三維樹木建模軟件,不僅樹木模型真實感較高,而且支持大片樹木的快速建立和渲染,同時提供了豐富的樹木模型庫和軟件開發接口。該軟件是由美國IDV公司研發制作的,不僅可以通過插件將樹木導入到其他的三維建模軟件中使用,也可以為游戲引擎提供強大的樹庫支持[3],目前已經廣泛應用于游戲、動畫、軍事仿真、景觀設計等方面。
SpeedTree實際上是一個工具集,主要包括SpeedTreeCAD、SpeedTreeMax、SpeedTreeRT[4]等。
SpeedTreeCAD專門用來創建、修改單棵樹木效果的工具。生成的文件直接用于SpeedTreeRT在程序中加載,或者用于SpeedTreeMax。
SpeedTreeMax是與3Ds Max整合的一組插件(與Maya有一套相似的整合插件),主要用來創建一大片森林的效果,可以結合地形起伏來創建符合真實效果的森林。
SpeedTreeRT是SpeedTree的C++運行庫。其主要實現的功能包括:每棵樹的實時陰影、自動LOD切換、每棵樹隨風搖擺的效果。
2011年SpeedTree更新到6,并根據所面對的不同用戶群體將軟件分為了三個版本,其中包括面向游戲產業的SpeedTree for games、面向電影業的SpeedTree Modeler Cinem和面向建筑工程行業的SpeedTree architectural。目前,SpeedTree的最新版本為7.0。
1) 樹的基本渲染
在SpeedTree中將所有的植物模型保存在.spt文件中,其結構[4]如圖1所示。

圖1 樹的結構
一棵樹分三部分繪制:樹干和大樹枝(branches),小樹枝(fronds),樹葉(leaves)。
branches:使用模型來繪制;
fronds:使用兩個十字交叉的面模擬小樹枝,為了節省三角形;
leaves:使用billboard(布告板)方式繪制,這樣就能產生視覺效果比較好的葉子了。
它這樣劃分是出于以下三方面的考慮:這幾部分的渲染狀態不一樣,動畫的狀態不一樣,做LOD的時候也不一樣。
2) 樹的陰影系統
SpeedTree中將陰影分成三部分計算,首先是樹木在地面上的陰影,直接使用shadow map計算出來樹木的陰影。其次是self-shadow(自陰影),這一部分是難度比較大的地方,是通過預計算出來,然后將其保存到一張shadow map中。最后是其他物體投影到自身上的陰影,這一部分難度最大,一部分分別處理,對于樹葉和支干是取其中心點坐標,將其變換到投影物體的光照坐標系中,獲得投影物體的shadow map投影面的uv坐標,檢查shadow map指定位置的亮度信息作為自身的光照值。而對于主干的mesh,則需要將所有的頂點變換到投影物體的光照坐標系中,計算頂點在shadow map的uv坐標,另開一個pass或添加一個紋理單元使用投影物體的shadow map渲染。
3) 樹的光照
SpeedTree中對樹木的光照分為三部分進行處理:對于主干部分使用的是per-pixel lighting(單個像素光照)。支干部分由于是兩個四方形面片,因此計算光照時使用面法線,這樣一個四方形總是一個面為亮面另一個為暗面。而對于樹葉是根據樹葉的位置來確定光照值,根據樹種的不同使用多種光照模型來確定光照,最簡單的一種是通過陽光的方向獲得一個和其垂直的通過樹木中心點的水平軸線,將樹葉分成兩部分,一部分渲染為帶光照,一部分渲染為不帶光照。
4) 樹的動畫
樹的三部分的動畫狀態都是不一樣的。風小的時候或者樹離視點比較遠的時候,只動樹葉。
樹葉的動畫:通過一個billboard的來回平移以及它本身繞視坐標系統Z軸的轉動。
樹枝的動畫:通過它的引擎本身計算出來的矩陣進行動畫。
5) LOD的特點
這里的LOD分三方面:頂點的LOD,紋理的LOD,動畫的LOD。
· 頂點的LOD:首先是針對樹,樹干的建立,它是采用貝塞爾曲線來描述整個面片的,貝塞爾曲線的描述方式無疑給即時高效率的LOD計算提供了可行性。同時還針對樹枝,遠了之后,小樹枝就不渲染了。到了一定的距離的時候,整棵樹就變成一個billboard了。
· 紋理的LOD:樹干上在最高精度的時候會有三套紋理:基本紋理,光照貼圖,法線貼圖。隨著LOD的進行,可以依次減去法線貼圖,光照貼圖,最后是本身貼圖,最后只為樹干渲染一種顏色。
· 動畫的LOD:有三種動畫,大樹枝(模型)的動畫,小樹枝(兩個交叉面)的動畫,以及樹葉的動畫。隨著LOD的進行,依次去掉大樹枝的動畫,小樹枝的動畫,最后是樹葉的動畫。
樹木的建模使用的是SpeedTreeCAD進行樹木幾何參數建模。
SpeedtreeCAD主要以編輯參數為基本原理。軟件啟動后,顯示自帶的一個樹木初始模型,通過調整樹木幾何形態參數來改變樹的外形。主要包括對主干、樹枝、樹葉的參數化調整。另外還有LOD、材質、光照設置。用戶通過參數面板提供的參數接口調整樹木的幾何形態結構和紋理特性。一般使用比較多的是對樹主干、樹枝、樹葉的調整。
首先,根據各種樹木的形態特征,在Global屬性頁面確定樹木的基本骨架,然后編輯樹干、分枝和葉片等屬性,最后編輯LOD、風力和光照,其流程圖如圖2所示。
1) 創建樹的基本骨架
在Global屬性頁面可對整棵樹的基本形態和運動屬性進行編輯,比如樹的形狀、編輯范圍、相對地平面高度、樹葉的稠密程度等,其參數設置如圖3所示。

圖2 樹木建模流程圖

圖3 樹木整體參數面板
2) 樹干參數的設置
“Trunk”屬性面板主要用來設置樹干的長度、寬度、彎曲度、分枝長勢等。Start angle控制樹干相對于地面的生長方式。Flexibility決定樹干的彎曲性,并沿著樹干長勢而分布,其參數面板如圖4所示。

圖4 樹干參數面板

圖5 樹枝參數面板
3) 大樹枝(分枝)參數的設置
Branches屬性可設置樹木的分枝,“Level”參數顯示目前當前樹木有多少分枝,哪個分枝處在編輯狀態。“Generation”控制當前主樹干生長出多少個樹枝及長出點。“Shape Definition”所有屬性通過調節曲線形式而實現,用來控制分枝的長度、稠密度、彎曲性以及新枝相對于母枝(或上一級分枝)的生長角度,其參數設置如圖5所示。
4) 小樹枝(葉狀體)參數的設置
該節點用途多變,是由支節點轉變而來,代表了一種形狀類似棕橺葉那樣具備中軸枝條,周圍呈片狀展開的幾何模型,最常見的用法是作為小樹枝使用[5]。
Fronds屬性用來設置小樹枝,其面板如圖6所示,“Generation”參數用來控制小樹枝的位置和使用方法。
5) 樹葉參數的設置
Leaves屬性用來設置樹葉的大小,類型和分布情況。其面板如圖7所示,其中,“Generation”參數用來控制樹葉的數量和位置、“Placement”控制樹葉的分布和稠密度、“Texture Maps”指定樹葉的紋理貼圖。

圖6 小樹枝參數面板

圖7 樹葉參數面板
6) 樹的行為參數設置
此部分主要是指樹模型的LOD、風力效果和光照效果參數的設置。
LOD屬性面板用來控制LOD的初始化和SpeedTree的自動LOD系統的行為。可分別設置樹葉和布告板、大樹枝以及小樹枝的LOD屬性。在LOD優化方面,圖8說明了在極遠處的樹木,我們只需要兩個多邊形加上霧化就足夠真實了,而隨著距離的拉近,SpeedTree動態將樹木的多邊形數量調整到了1126個,最大程度上達到了性能和視覺效果的平衡。
在Wind屬性頁中只需定義樹木哪些部分(樹葉、分枝)受到風的影響以及樹葉的搖擺和聲音參數,SpeedTree就可以讓樹木實時生成絕對逼真的擺動效果。

圖8 LOD示意圖
在Lighting屬性頁中可分別設置大樹枝、小樹枝和葉子的光照方式,光照方式可設為動態光照或者靜態光照。光照方式設置好后通過計算即可看到光照效果。
按照上面的樹木建模步驟,筆者建立了幾種樹木模型,并將之應用于建好的地形中[6~9],在Vega Prime里調整環境風參數[10],樹木模型能夠以搖擺的方式做出逼真的反應,調整視點遠近,能觀察到樹木模型能夠按設定的LOD變化,距離越遠,樹模型的面數越少,距離越近,樹模型細節越多,其效果圖9所示。

圖9 樹模型效果圖
SpeedTree是一款強大的三維樹木建模軟件,建立的模型真實度比較高,能夠清晰的表示樹木的基本形態。運用LOD屬性,能夠在優化性能的同時模擬逼真的視覺效果;運用風力屬性,能夠真實模擬樹木隨風搖擺效果;運用光照屬性可以產生明暗及顏色上的變化,能夠模擬光源生成陰影效果。該軟件操作簡便,兼容性好,應用廣泛。
[1] 金小進,馬堯海.三維樹木的真實感模擬[J].計算機工程與設計,2010,31(8):1753-1756.
[2] 楊立新,田貞.園林樹木稠李SpeedtreeCAD虛擬建模技術研究[J].沈陽農業大學學報(社會科學版),2010,12(6):738-741.
[3] 趙常壽,張鵬,吳紅權.Vega Prime之SpeedTree模塊程序設計[J].電腦編程與技巧維護,2013(13):74-76.
[4] 美國IDV公司.SpeedTreeCAD V4.1 User_Reference[Z].
[5] 李虹珊,常一孜.三維建模軟件SpeedTree中樹木的基本構造[J].現代電影技術,2013(7):33-36.
[6] 趙月,王建華.基于MFC的VegaPrime場景漫游驅動框架設計[J].電子設計工程,2013(1):31-34.
[7] 余洋,傅忠謙.基于VegaPrime的多通道視景仿真技術[J].電子技術,2012(2):70-73.
[8] 楊勇,殷宏,宋曉江.基于Vega Prime/Creator的三維環境仿真系統開發[J].計算機與信息技術,2009(5):30-31.
[9] 張靜,楊麥順,劉萍芬.基于Vega的視景仿真應用系統研究與研究[J].微電子學與計算機,2008(2):93-96.
[10] Presagis USA Inc. Vega_Prime_Parametric_Culture_Tutorial,Version 5.0[Z]. February 2011.
Modeling of Realistic 3D Tree Based on SpeedTree
XIA Hongmei ZHANG Xinjing HU Xunqiang
(Training Simulation Center, Naval Marine Academy, Guangzhou 510430)
In this paper, the SpeedTree modeling software is studied, and the basic structure, technical features and trees modeling methods of the software are analyzed. Based on the modeling principle, the overall frame, trunk, branch and leaf of trees are edited, simultaneously, the LOD, illumination, wind effect are joined. Finally the created tree model is added to the 3D terrain. The results show that created trees model has high fidelity, dynamic, easy-to-operate features.
speed tree, tree, composition, feature
2014年7月3日,
2014年8月15日
夏紅梅,女,碩士,研究方向:系統建模與仿真、作戰模擬等。
TP391.9
10.3969/j.issn1672-9730.2015.01.026