馮玉芬
(唐山師范學院 數學與信息科學系,河北 唐山 063000)
計算機科學與技術研究
基于虛擬現實技術的動態水面仿真方法研究
馮玉芬
(唐山師范學院 數學與信息科學系,河北 唐山 063000)
在虛擬現實系統設計中,真實自然的動態水面效果可增強場景的逼真感,使虛擬環境更加絢麗。而水面動態模擬的關鍵技術是在水面的真實感、實時渲染速度、計算機軟硬件資源需求及實現虛擬現實系統難易度等幾個方面尋求平衡。提出利用層次細節技術,采用動態紋理映射、波動水面的物理模型并結合材質貼圖方法,實現具有反射、折射等效果的流動水面。該方法應用于室外景觀等環境表現中,使水面效果更逼真、計算復雜度減小、設計和實現更簡潔方便。
動態水面;動態紋理;水面模型;層次細節
室外虛擬現實系統中,離不開對自然環境的模擬,為了增加自然環境的真實感,虛擬場景中需要添加自然現象,其中水面模擬是虛擬現實技術研究的熱點和難點。自然的水面模型,實時的動態波紋能較大程度地增進場景的逼真感和沉浸感[1,2]。目前一些三維圖形軟件產品中有些包含了流體模擬功能模塊,如Maya里的Fluid Effects,3d Max提供的插件glu3D等,這些軟件適合非實時水面模擬,對大面積水域實時動態水面的實現無能為力。虛擬現實領域對動態水面的研究并不太多,虛擬河道、數字化城市中水面多是靜態的,需要創建一些有特殊效果的材質,利用GPU的處理能力,在虛擬現實系統中編寫大量的shader程序,shader程序不僅要求設計人員有強大的程序開發基礎和豐富的編程經驗,而且還非常耗費系統資源,因此需要對虛擬場景做大量的優化工作。
虛擬現實系統中圖形生成的速度主要取決于圖形處理的軟硬件體系結構。層次細節(Levels of Detail,簡稱LOD)技術是一種有效的圖形生成加速方法。層次細節模型的概念認為當物體覆蓋屏幕較小區域時,可以使用該物體描述比較粗糙的模型,并給出了一個用于可見面判定算法的幾何層次模型,以便對復雜場景進行快速繪制。本文根據層次細節模型的概念提出一種新的方法模擬實時動態水面,以3d Max軟件為建模環境,以實時3D環境虛擬實境編輯軟件Virtools作為交互場景開發平臺,對這種模擬方法進行測試,該方法已經應用于灤河河道改造工程中。
已有一些關于水面生成與繪制方面的算法和技術,雖然能模擬出真實感很強的水面效果,如目前主流的基于計算流體力學模型的流體模擬算法,如Next Limit推出的RealFlow和RealWave等軟件包,可以比較真實地模擬出流體表面自由流動的效果和流體表面的劇烈變形,如浪花飛濺等。Claes Johanson在《Real-time water renderingintroducing the projected grid concept》一文中給出了投影網格算法,結合現代圖形硬件加速技術,用可編程頂點著色器來完成海面網格高度場網格頂點的坐標變換,用可編程像素著色器完成光照模擬及紋理的渲染[3]。張龍等[4]對湖泊水面的反射、折射等光學現象進行了高效近似模擬,模擬岸邊植物在水中的倒影效果,水面因風力作用泛起微波的動態效果,以及水滴落入水面引起的漣漪效果。Cem Yukel等[5]提出了波粒子的概念,在GPU上實時實現了水面與水面物體的交互,可以看到船劃過水面時留下的痕跡,效果逼真。譚曉輝等[6]采用一種基于網格的方法,通過高度采樣和外加擾動的方法產生動態水面,并將頂點法向量計算、水面反射、折射等計算交給GPU完成,結合了凹凸紋理、動態紋理和投影紋理技術對水面繪制。對動態水面建模的方法有基于幾何模型的方法、基于物理模型的方法、基于粒子系統的方法等等[6,8]?;趲缀文P偷姆椒?,多使用紋理貼圖,適合面積較大的水面,并且沒有重復計算,缺點是近距離觀察時,水面波紋的真實感差,并且也不適合多角度觀察;基于物理模型的方法,水面波紋接近真實的物理現象,但如果范圍太大,計算量就會大增,很難滿足實時要求;粒子系統適合于波浪破碎或是雨雪等自然現象,粒子太少真實感差,粒子太多計算量大不適合大規模動態水面模擬。
層次細節技術是在不影響畫面視覺效果的條件下,通過逐次簡化景物的表面細節來減少場景的幾何復雜性,從而提高繪制算法的效率。該技術通常對每一原始多面體模型建立幾個不同逼近精度的幾何模型。與原模型相比,每個模型均保留了一定層次的細節。基于這種技術,本文所采用的以下模擬方法,遠距離觀察時,模型采用簡單的幾何模型結合動態紋理技術模擬水面流動,觀察點逼近時,采用物理模型的方法,強化真實水面的動態波紋、反射、折射等水面光照效果,最終實現真實感的流動水面。
3.1 動態紋理
動態紋理是指紋理圖像自身是變化的或者在不同時刻賦予模型的紋理坐標,當這種變化為連續時,就形成了動畫的效果。其一,采用改變紋理圖像來實現動態紋理,這種方法的原理很簡單,利用人眼的視覺駐留性質,當一幅投射到人眼視網膜形成的圖像消失時,圖像會在視覺上駐留1/24秒,因此當圖像切換時間小于這個1/24秒,就會形成動畫。這種動態紋理可以用二維動畫軟件(如flash),或三維動畫軟件(如3d Max)預先渲染出動畫文件,也可以去自然界拍攝真實水面的視頻,展示水面波光粼粼的效果,此方法適用于大面積水域的動態模擬。在VirTools軟件里,創建一個video在parameter設置中,使用我們準備好的視頻文件,用整個河流水面作為取得畫面圖像的目標。圖1為Level script。
其二,采用不同時刻賦予不同坐標的方法,創建水面材質(material),此材質使用水波紋理貼圖,并使紋理坐標產生變化。
圖2為river dynamic water surface script。在灤河河段改造中應用了這種方法。圖3為灤河河道平面圖,且水面有高差。圖4是灤河河道模型圖,水面是用簡單的幾何模型,經過編輯的多面體,這樣保證了模型的面數最少。賦予動態紋理前,可以看出,沒有水面流動的波紋出現。
圖5為使用Texture Scroller后產生流動波紋的水面效果,是使水面更加真實、自然。
3.2 水面模型和水面波動
一列規則波紋可以由函數y=Asin(ωx+φ)表示,波紋的形狀由振幅、波長、相位決定,因此控制這3個參數就可以控制整列波紋效果,改變A的大小就是控制振幅,ω的值可以控制頻率,改變φ的大小就是改變了相位,這是將橫向波和縱向波疊加。實際水面很復雜,它還受風力、地形的等外界因素影響產生流動,因此還要有其它函數的擾動,來模擬真實水面的運動狀態。
創建波浪平面時設置適當的大小和段數,然后借助與空間扭曲物體相結合來完成動態水波。創建漣漪物體,調整面板上設置參數,如振幅、波長、相位值等參數。創建空間扭曲體漣漪,把漣漪物體結合到波浪平面上,使之產生波浪漣漪。制造動態波浪,移動漣漪物體,可產生水面流動,也可在面板上調節它的相位值,產生水面波動效果,如圖6。
3.3 反射和折射
水是一種基本透明的液體,但河流湖泊的水面顏色是受到很多因素的影響,如外界光線的強弱及顏色、水的深度及水中含雜質的情況等等,這些外界因素直接影響了水面的反射和折射效果,而水面的反射和折射性質是表達真實感水面的關鍵。如樹木、人物等實體對象在水面這種具有反射性質的介質上具有高度清晰的倒影效果;太陽光經過河流湖泊的水面反射后會在河岸投射出不均勻的、有閃爍的光線圖案效果的焦散現象等,這些光照效果直接影響了水面的逼真程度。在三維軟件中,設置水面材質要通過調整反射通道,添加falloff貼圖、設置光澤度、設置細分值、設置折射率,調整煙霧顏色來調整水顏色以及改變煙霧倍增值等參數,仔細反復調整,以達到理想的效果如圖7。這些參數的增加又會加大計算量,從而降低圖像的生成速度。
如果虛擬場景中大規模動態水面使用物理模型,由于高細節模型面數較多,對計算機的性能要求很高,通常我們在設計上需要對場景優化。
4.1 法線貼圖及烘焙貼圖
法線貼圖技術是目前三維虛擬場景中非常流行的貼圖技法。它的作用是把曲面上的法線方向利用貼圖提供的信息來改變其方向,可以把貼圖里的每個像素都當成模型上的一個平面,用RGB三原色記錄像素(pixel)的法線方向的(x,y,z)值,自運算時先讀了模型的法線方向之后,再用法線貼圖上的RGB也就是(x,y,z)值再算一次。因此它不是直觀的彩色貼圖,可以說它是儲存數據的數組[9]。
法線貼圖是把有水波紋的高細節水面模型的特征映射到低細節平面水面模型上,使平面具有高細節水面波紋效果,從而達到節省面數的目的。其生成方法是通過3dMax 的Render to texture功能,把同一個物體具有高低細節的模型對在一起后,把高細節模型生成法向貼圖記錄下來,其原理如圖8所示。
烘焙貼圖技術是一種把3dMax光照信息渲染成貼圖的方式,而后把這個烘焙后的貼圖再貼回到場景中去的技術。這樣光照信息變成了貼圖,不需要CPU再去費時地計算,只要按普通的貼圖處理,所以速度極快[9]。烘焙貼圖用來表現水面模型反射、折射效果,在水面上形成微妙的光影變化,讓水面在天空光(skylight)的作用下表現得很真實。
具體做法,將具有高細節的模型賦予材質后,置入設置好燈光的環境中,打開烘焙對話框,將渲染出的圖平鋪成一張紋理。如果圖像不是很完美,還需要在photoshop這樣的圖像處理軟件中進行修飾,使之更加符合要求。這個紋理圖像只適合烘焙的模型。將處理好的紋理再賦予烘焙的模型后,在沒有燈光的情況下仍然有光影效果。
4.2 細節層次的切換
應用細節層次時一個重要的問題是如何在兩個接續的細節表示之間過渡。最簡單的辦法當然是強行切換,在某個時候,用較簡單的模型取代較復雜的模型。這種方法會引起不能連連續的視覺跳變,真實感降低。好的辦法是從一級模型到下一級模型的幾何變形,但它要求多細節層次模型中物體幾何模型有對應關系。較好的辦法是不去簡單切換模型,而是在過渡期內產生兩級模型的圖形混疊起來。這種做法能大大減少跳變效果,但在兩級模型都要繪制時,會暫時增加繪制負擔。文中通過降低了部分真實性來換取了場景的簡化。
在動態水面的模擬中,我們采用了許多新技術,將不同的技術合理地結合在一起,通過簡化和運用層次細節技術,保證了圖像實時的繪制頻率。目前可編程圖形硬件技術有了迅猛的發展,GPU可以完成以前在CPU上難以實時進行的復雜圖形計算任務,隨著網絡技術的發展,在復雜地形大面積水域虛擬場景中,分布式場景模擬也將是一個新的研究方向。
[1] 王勝正.一種實時的3d動態海洋模擬新方法[J].計算機應用,2007,27(5):1147-1124.
[2] 楊春,等.基于3D和Virtools技術的虛擬實驗的實驗[J].計算機工程與技術,2007,28(11),2589-2591.
[3] Enright D, Marschner 95, Fedkiw R, Amination and Rendering of Complex Water Surface[J]. ACM Transactions on Graphics, 2002, 21(3): 736-744.
[4] 張龍,等.濕地場景的動態模擬[J].計算機輔助設計與圖形學學報,2008,20(8),1007-1010.
[5] Cem Yukel, Donald H House, John C Keyser. Wave Particle[J]. ACM Transactions on Graphics, 2007, 26(3).
[6] 譚曉輝,等.一種基于GPU的大規模水面實時模擬方法[J].計算機仿真,2009,26(9):211-214.
[7] 程勇新.3D引擎中大規模海面實時渲染及場景管理研究與實現[D].合肥:中國科技大學,2009.
[8] 朱旭陽,李思昆.動態紋理合成技術研究綜述[J].系統仿真學報,2001(增):23-25.
[9] 程罡,吳江濤.三維游戲場景設計與制作[M].北京:電子工業出版社,2010(1):62-74.
(責任編輯、校對:田敬軍)
Research on the Method of Dynamic Water Simulation Based on VR Technology
FENG Yu-fen
(Department of Mathematics and Information Science, Tangshan Teachers College, Tangshan 063000, China)
In virtual reality (VR) system design, the natural surface effect can make the scene more real. The key technology of water surface dynamic simulation is keeping the balance among the sense of reality of the water surface, real-time rendering speed, the resources requirements of computer software and hardware and difficulty of realizing the virtual reality system. In the paper the writer propose using level of detail technology, using dynamic texture reflection and the way of model of fluctuation surface combining with material mapping method to realize the flowing surface with the effects of reflection and refraction. When it is used in environment representation such as the outdoor scene, it will make the surface more real, less computational complexity and designing and implementation more simple and convenient.
dynamic water surface; dynamic texture; model of water surface; levels of detail
TP391.9.
A
1009-9115(2012)02-0052-04
唐山師范學院科學研究發展基金項目(10D03)
2012-01-13
馮玉芬(1970-),女,河北玉田人,碩士,高級工程師,研究方向為計算機應用。