(電子科技大學 計算機科學與工程學院 成都 610054)
摘 要:在大型復雜場景繪制關鍵技術研究項目中,通過把復雜場景繪制與調度技術,如Slicing、MMI、層次圖像緩存和基本布告板等大場景實時加速繪制技術的多層次繪制方法,融合到非真實感繪制技術中,以提高系統面對復雜場景的實時繪制能力。最后實現了對森林等大型場景的鋼筆畫繪制,借助非真實感繪制技術中基于圖像空間的生成方法,利用各種不同大小及形狀的筆畫實現了藝術化森林場景實時交互繪制。提出了植物多層次鋼筆風格化渲染算法。
關鍵詞:非真實感繪制; 鋼筆風格化; 多層次繪制; 實時繪制
中圖分類號:TP391.41文獻標志碼:A
文章編號:1001-3695(2009)05-1980-03
Rendering forest scenes in real-time based on pen-and-ink style
ZHAO Bin-ru CHEN Lei-ting HE Ming-yun
(School of Computer Science Engineering University of Electronic Science Technology of China Chengdu610054 China)
Abstract:In the project that studies the big and complex environments render technique this paper combined the complex scenes rendering and scheduling technique to non-photo-realistic rendering ie.And merged the multi-layered drawing into which the Slicing MMI(multi-mesh imposter) hierarchical image caching and billboard technique. In this way got the real-time rendering capability of system enhancement. Studied the automatic generation of pen-and-ink drawing systematically in NPR using strokes with different size and shape with the method of image-based generation. And proposed the multi-layered vegetation rendering with the pen-and-ink style for accelerated drawing of complex environments ie. forest scene.
Key words:non-photo-realistic rendering; pen-and-ink; multi-layered drawing; real-time rendering
自20世紀90年代中期開始,NPR逐漸成為計算機圖形學的研究熱點之一。一般認為,NPR指的是利用計算機生成不具有照片真實感,而是具有手繪風格的圖形技術。其目標不在于圖形的真實性,而主要在于表現圖形的藝術特質、模擬藝術作品或作為真實感圖形的有效補充[1]。鋼筆素描則是其中重要的一部分。目前生成鋼筆畫效果的非真實感繪制技術可以分為基于幾何空間和基于圖像空間[2]。基于幾何空間就是將3D模型作為輸入[3],可輕易地獲得實體的幾何信息,但在毛發、草坪、樹葉等情況下可能會很復雜。基于圖像空間是將一幅圖像作為輸入[3],其中基于G-buffer計算的圖像空間技術將特定的三維信息渲染到幀緩沖中,然后拷貝存儲到一張紋理圖像,作為后繼渲染中的輸入圖像使用。
用這兩種技術生成鋼筆畫效果,都可以基于筆畫或筆畫紋理[1,4,5]得到,也就是將筆畫作為最基本的構圖元素,這就需要根據輸入的3D模型或者圖像本身特征以及所要的模擬藝術效果生成各種大小及形狀不同的筆畫或畫刷,并模擬人工繪畫過程。本文中鋼筆風格化繪制的過程處理就采用這種基于筆畫的原理。
實時繪制技術[6~10]在游戲、數字展示等領域具有廣闊的應用前景。然而當前的研究大多集中于某種問題,而單一的實時繪制技術很難滿足大規模復雜場景的實時繪制要求。因此,本文在表現鋼筆風格的各種特性的同時融合了幾何繪制與圖像繪制技術,提出森林場景多層次繪制方法,依據物體到視點的距離以及物體重要性等因素,在不同層次和不同視覺的條件下,采用不同繪制技術提高場景繪制速度,實現實時交互。主要內容包括大規模復雜場景中單個物體自身細節的分片繪制方法[6];使用MMI技術的物體分組繪制方法[7];基于層次圖像緩存技術的分區繪制方法[8,9];極遠地形植被輪廓的繪制方法[10],并根據鋼筆畫細節遞減的特征,提出多層次動態紋理的方法。
1 鋼筆風格化渲染
植物(尤其是樹)是室外風景渲染中必不可少的對象。但由于植物模型的特殊性(幾乎不對整棵樹進行幾何建模)和上、下兩部分需求不同,對單棵樹木的鋼筆風格化處理分開為繪制枝干和樹葉兩個需要不同操作過程的部分。
目前存在多種方式得到鋼筆風格化繪制效果。本文中針對樹的兩部分的繪制,主要進行了兩種操作:a)使用筆畫紋理來表示樹木的色調和紋理;b)用不同大小和形狀的筆畫來模擬人工繪畫的過程。并創建鋼筆畫式的筆畫(擺動,線條在長度、濃度、亮度、端點位置上的不規則性)來勾勒物體的輪廓線等問題。
1.1 繪制樹干、樹枝及末梢
假設描述樹干、樹枝及末梢的模型部分的表面或多或少是光滑的,這樣就可以應用計算幾何模型輪廓的任一算法。最簡單的方法或許是在二維空間中計算G緩沖器(帶有z值或物體ID),并保留隔開背景和前景的那些像素。首先要做的就是對樹干進行輪廓線查找繪制。由于鋼筆畫對輪廓線并不追求精確,采用在三維空間中計算G緩沖器的方法,在深度映像中查找。要注意的是,輪廓線的繪制不僅僅是有寬度的線條而已。筆畫式的筆畫必須是不規則的,否則,將產生相當不自然的、呆板的效果。其次,必須對模型的樹干和樹枝部分進行明暗處理。為使用常規的灰度等級對模型進行明暗處理,采用容易實現的筆畫紋理按不同的明暗度進行映射:每個筆畫分配了優先級,產生了優先級化的筆畫紋理。在繪制時首先繪制具有最高優先級的筆畫,若色調太淺,再繪制下一個最高優先級的筆畫。依此類推,直到達到適當的色調為止。樹干繪制使用的筆畫紋理如圖1所示。利用輪廓線和交叉影線繪制的樹干如圖2所示。
1.2 繪制樹葉
樹的葉子不同于所有光滑表面,因此必須單獨對它們進行處理。必須將數千片獨立的葉子組合成一個單一的形狀或一組筆畫。解決方法是將每片葉子或每一組葉子表示成一個幾何基本體素(二維圓盤)。然后以基本體素的輪廓為基礎對其進行繪制,其位置由三位模型中葉子的位置確定,其大小由用戶控制。然而實際上并非要畫出每一基本體素的完整輪廓,而是需要進行一個選擇。
選擇策略是,在逐像素的基礎上查找適當的G緩沖器,以確定在繪制過程中需要畫出輪廓的哪一部分。假設Z[x,y]是以常規的真實感方法繪制的圖像的Z緩沖器,P是表示葉子的每一基本體素輪廓上的像素集合,對于P 中出現于輪廓圖像中(i,j)位置的每一個p,當且僅當(i,j)的鄰域中z值的最大差異大于給定的閾值時,在(i,j)位置上畫一個像素。盡管從原則上講,這個過程可以解析地完成,但使用適當的G緩沖器會更有效。至于閾值的計算,可方便地將一點的深度值表示為
z=[z1z0(d1-d0)/(z1-z0)]/{d-(z1+z0)(d1-d0)[/2(z1-z0)]-(d1+d0)/2)}(1)
這里:d0與d1是載深度緩沖器中表示的最小值和最大值;z0與z1算法作用于對應的深度值,在z0與z1之間進行基本體素替換的樹葉繪制。在圖3中展示了兩個具有變化的圓盤大小與深度閾值的例子。注意圖3(a)中小圓盤與低閾值是怎樣產生高細節層次的。如果放大這些值,如(b)中所示,則結果圖像會更抽象。對于(a),圓盤大小是0.15,深度閾值設置為1 000;對于(b),這些值是0.7與2 000。在兩幅圖中,d0=0,d1=65.535,z0=1,Z1=11。
2 植物多層次鋼筆風格化渲染
2.1 多層次繪制方法
目前用來加速復雜虛擬場景繪制速率,提高計算機實時繪制能力的主要技術有可見性裁剪、基于幾何的圖形繪制和加速、基于圖像的繪制加速和混合繪制加速。但由于樹木的輪廓以及樹葉的自然形態等因素,樹木的繪制很難用簡單遮擋和LOD來解決。提高樹木繪制的速度,需要充分考慮基于圖像繪制的技術。同樣借用LOD的思想,針對基于圖像繪制的模型,其模型精度的選擇是依據物體到視點的距離,這樣可以在不同層次和不同視覺的條件下,采用不同精細程度的模型來表示同一物體,提高場景繪制速度,實現實時交互。本文以基于圖像的繪制加速技術為主要研究對象,并提出多層次繪制方法,即根據場景物體的視點距離和繪制重要性,對物體采用不同加速繪制技術進行分層繪制。
多層次繪制方法在三維場景繪制的真實感方面取得了很大成績,如樹木繪制能夠在細節和動態表現上達到最佳的表現。然而好的動態表現在非真實感的三維場景渲染中也是必不可少的。雖然非真實感渲染并不像真實感渲染追求生成類似照片的真實效果,但是平面性、旋轉不變性和缺乏視差,視點轉換時的“人造物”現象,遠近景物之間的平滑過渡,如何建立一個高動態范圍的物體模型繪制等動態表現上的問題本身就是三維漫游場景中必須要解決的問題。因為人們不希望在三維場景中看到一張側對著鋼筆畫的圖紙。
在虛擬漫游系統中,根據人的視覺感知,對于不同層次的繪制要求不同。近處物體對模型立體感要求很高;同一場景下,對于遠處物體要保證大范圍的空間視覺真實感,需要根據不同視點表現物體之間細微的遮擋關系變化;同一場景下對于特別遠處的物體,并不需要實現隨視點變化的細微變化,只需要一種簡單視覺上的明暗和輪廓感知。另一方面,針對于同一層次,不同位置和不同狀態的物體繪制的重要性也不同。因此需要從視覺認識的角度描述場景中不同物體的繪制重要性。
根據人的視覺原理標記場景中物體的重要性,本文針對性地采取不同技術:
a)極近視點范圍,采用葉精細模型繪制技術。由于靠近視點,漫游過程中視點改變對其繪制影響很大,如果采用Imposter技術則會引起頻繁的重繪;另一方面,對于近處的物體,除了視覺感知外,還需要讓人體會到質體感覺等,如碰撞以及碰撞物理變化等。同時,近視點范圍受視野范圍限制,同時繪制的樹不會太多,一般在2、3棵左右,所以可通過計算機繪制較為精細的模型。
b)近距離范圍,采用針對單個物體自身細節的分片繪制技術。它不同于近視點范圍,視野范圍內需要同時表現單個物體自身細節的層次關系,如大量樹木的枝丫之間從視覺上感覺要有遮擋的層次感,有獨立的陰影和明暗。同時由于距離視點有一定距離,視點的改變不會要求頻繁改變繪制,比較適合采用基于圖像的繪制方法,如Slicing技術。針對樹木而言,由于樹木還需要有個體的物理表現,每棵樹需要有基本的物理范圍,避免與動態物體發生在位置上的重疊。隨著距離慢慢增大,每棵樹木模型的分片動態減少,最后變成一個Imposter。
c)中遠距離范圍,采用物體的分層繪制技術。已經不需要物體的個體特點,特別是針對物理的體驗已經不存在,所關注的是物體的圖像表現以及物體之間的層次關系。如果每個物體采用一個Imposter,在復雜場景中將有大量Imposter,每次重繪將大量消耗計算資源。但采用MMI技術則是一個好的選擇,可以根據需要將多個物體分成不同的組,每組物體用一個圖像層替代,讓視點在小范圍改變時,不會引起系統更新場景。
d)遠距離范圍,采用場景分區的繪制技術。由于視野范圍內物體更加密集,繪制個體的需求不明顯,而群體繪制的需求更明顯。所要解決的是大范圍物體外形輪廓的繪制問題,主要是使用紋理表示,將一大片物體合成一個Imposter,可采用層次圖像緩存技術。
e)極遠距離范圍,這種狀況需要表現植被覆蓋地形情況。由于鋼筆畫明顯的細節層次遞減的特征,只需要從輪廓遮擋表示即可,并且也不隨視點變化而發生任何改變,可考慮采用布告板技術。
根據不同層次繪制的要求,不同的技術實現有不同的優點。采用場景分割的方式可實現復雜場景調度,分割后各層模型繪制采用預處理可以提高繪制速度,但占用存儲空間較大;動態生成的關鍵在于無縫的拼接過程。還需考慮同一繪制層次下,不同區域位置樹木的重要性對于視覺感知也不完全一樣:
a)在同一位置情況下,大的物體重要性要大于小的物體;
b)位置靠前的物體重要性大于位置靠后的物體;
c)在視覺中心的物體重要性大于遠離中心的物體;
d)當視點移動或旋轉,新進入視點范圍的區域重要性大于已經存在于視點范圍的區域。
多層次繪制模型在Imposter的基礎上擴展了對不同視覺感知層次的分辨,以圖像繪制為基礎,并結合GPU加速處理技術。例如森林的模型從遠處的大片叢林布告板,漸漸過渡到小叢林范圍的多層Imposter,然后是單個樹木個體Imposter。與一般層次Imposter(hierarchical imposters)算法的不同在于,父節點的繪制并不是簡單疊加幾個子節點,而是在視點遠到一定距離之后,需要把子節點融合起來形成一個多物體的Imposter作為新的節點,然后把各個子節點在調度過程設置為關閉。在各層變換中,如果同時進行替換,并發處理會帶來幀率突然下降,需要根據視覺系統中認為重要的物體先進行替換,然后逐步推開的過程。視覺重要性的計算需要簡單快速。
2.2 替代物紋理管理
在極近視點范圍添加較精細模型,對每顆樹的繪制方法與上文的單棵樹木繪制方法一致,將樹木分成兩個部分處理,但是這種方法帶來較大的處理代價,因此只能對極近的2、3棵樹進行。
在本文提出的多層次繪制技術中采用的Slicing、MMI、層次圖像緩存、布告板等都是基于圖像的繪制加速技術。由Slicing貼圖的獲得和MMI中紋理動態更新等問題都可見、需要考慮替代物紋理生成。
由于非真實感繪制的關鍵特征之一就是可以構建一幅圖像而不涉及到它的每個像素,而且無須用筆畫或其他圖像瑕疵來覆蓋每個表面,相反,圖像中相當多的細節都被刪除。這一點在鋼筆畫中得到充分表現,隨著場景中距離的增加,筆畫越少,到遠處僅需寥寥幾筆勾勒出樹木輪廓就好。針對鋼筆畫的這一特性,在預處理階段對添加到系統中的樹的模型進行替代物紋理生成,根據不同繪制層次要有不同處理。在對樹葉部分進行處理時,采用前面筆畫紋理(二維圓盤)的方式,但進行幾次不同參數生成紋理,以因子2n逐次改變閾值或圓盤大小,n=1為近距離繪制層,使用在Slicing技術中分片貼圖;n=2為中遠距離繪制層。進行幾次不同參數生成紋理,以因子2n逐次改變閾值或圓盤大小生成在與觀察者距離不同的三處所繪制的樹如圖4所示。樹干部分在細節上也相應地分成幾層,主要表現在明暗處理時的筆畫選擇上,對交叉影線的選擇要求的灰度等級逐層遞增到樹干部分在遠距離時只剩下輪廓線。
由于替代物的生成需要頻繁地申請紋理內存,并進行繪制到紋理操作,提高生成過程還需要解決紋理內存管理的問題。加速算法需要基于紋理拼圖的思想。如圖5所示,將一組替代物紋理壓縮存儲在一張紋理拼圖中,并將其劃分為四叉樹紋理空間,通過動態地改變替代物布告板紋理坐標來對紋理拼圖中的區域進行索引。這樣壓縮存儲使得紋理內存利用率以及生成替代物時紋理查詢速度均有很大的提升。
替代物紋理拼圖大小為N×N(N為2 048或4 096)的紋理,每一張紋理對應一個紋理空間,利用四叉樹結構被劃分為小塊區域,每一個區域對應于一個替代物紋理。紋理空間的管理使用一個四叉樹結構,每一個葉節點對應一塊替代物紋理拼圖中的區域。圖6只是一幅大場景繪制運行中生成的替代物紋理拼圖,不是本文中鋼筆風格化繪制生成。
3 結束語
本文提出的算法可以得到三維場景良好的立體層次感,獲得虛擬場景漫游過程中不錯的動態表現,盡可能避免了繪制過程中的畫面跳躍感,造成視覺上的二維圖像感。但是由于整個繪制在預處理階段需要生成各繪制層的貼圖,這將帶來較大的預處理代價。同時MMI的動態更新造成的替代物動態生成,也將導致場景中的運動變化很大時在一定程度上影響實時繪制的效率。MMI技術可以根據需要進行預處理,也可以在滿足幀率限制的前提下進行動態漸近更新,以獲得更好質量的圖像。因此也可能進一步地增加預處理代價。