康蘇海
(交通部天津水運工程科學研究所工程泥沙交通行業(yè)重點實驗室,天津300456)
流場二維可視化技術起步早,發(fā)展較為成熟,軟件化程度也較高,如Mike21、Delft3D、Fluent這些商業(yè)化流體模擬計算軟件都有相應的二維數據可視化工具;Tecplot、Surfer是專門用于數據可視化的軟件,功能十分強大;TK-2D數據后處理軟件專門用于二維流場數據仿真處理,界面美觀、顯示靈活、功能強大,是水動力數值模擬領域優(yōu)秀的專業(yè)軟件[1-3]。
近幾年來,在水動力數值模擬領域,越來越多的工程問題需要三維計算來解決,對三維計算結果后處理,尤其是三維流場的仿真模擬提出了要求,如何真實有效地表現三維流場一直是水動力數值模擬研究領域的一個方向。以往只能通過截取水平或垂向截面方式間接地表達三維流場[4-6],模擬效果不直觀,如Mike21、Delft3D、Fluent都是采用這種方式。最新版的Tecplot360軟件通過跡線加球質點的方式,可實現三維恒定流的三維仿真模擬,但對水運工程領域常見的非恒定流場可視化卻無能為力。
三維流場的直接表達涉及到真實三維場景的建立。用OpenGL構建三維地形場景已較為常見[7-9],但很少將流場加入,原因是地形可以很容易地用三維曲面描述,而流場卻不同。流場的表達需要在場景中布設示蹤粒子,可以用箭頭、圓球或其他形狀的幾何體表示,但一方面運動流場需要由放置在其中的粒子來描述,另一方面需要將三維場景中的粒子向顯示平面進行投影,必然會造成運動質點前后和上下的遮蓋,使得投影畫面整體混亂不堪,即使采用不同質點形狀,也無法達到理想的顯示效果。這也是導致真實三維流場可視化止步不前的關鍵[10]。
立體電影將模擬左右眼拍攝的2個序列的影像畫面重疊在銀幕上,通過觀眾配戴的特制眼鏡分離圖像,使觀眾左眼只能看到模擬左眼拍攝的畫面,右眼只能看到模擬右眼拍攝的畫面,再通過大腦的匯聚功能,合成為立體視覺影像,使人有身臨其境的感覺[11-13]。由此可以設想,假如建立真實的三維流場場景,然后在其中設置2個隔開一定距離的攝像機模擬人的雙眼,分別對同一流場同時進行拍攝(即投影),可得到2幅圖像,代表這一時刻2只眼睛從不同視角觀察到的流場。按時間順序連續(xù)拍攝,并將2個攝像機拍攝的圖像序列分別生成影像文件,就得到了所謂的“立體片源”,最后用專用立體播放軟件或設備,對立體片源進行投影播放,在立體眼鏡的幫助下,就可以看到具有立體效果的仿真三維流場模擬。
三維流場仿真模擬的另一個關鍵是解決三維場景的快速渲染和三維流場中的示蹤質點的快速跟蹤算法,使三維流場模擬在普通計算機上就能夠實現。
本文利用立體成像原理,在二維屏幕上實現三維流場的立體顯示,并尋求三維流場質點跟蹤的快速算法,最后采用輕量級的具有快速三維場景渲染能力的圖形平臺,完成三維流場的仿真顯示。采用C#編程語言,實現了三維流場仿真立體影像制作的軟件化,軟件名稱為TK-Animator。
三維場景的建立基于三維圖形平臺,如OpenGL、WPF、OSG、VTK、OGRE等,每一種三維圖形平臺都有自身的優(yōu)點,考慮到與已有代碼的兼容性,本軟件開發(fā)采用WPF作為三維圖形引擎。WPF是微軟新一代圖形系統(tǒng),運行在MS.NET Framework 3.0架構下,基于DirectX技術,在文檔、圖形、圖像、多媒體、動畫等方面具有超強的優(yōu)勢。WPF的核心是一個與分辨率無關并且基于向量的呈現引擎,旨在利用現代圖形硬件的優(yōu)勢,是一個輕量級的三維圖形顯示引擎。在WPF中可以進行三維圖形模型定義,用于指定光源和攝像機位置信息,以構建真實的三維場景,它與Windows操作系統(tǒng)緊密結合,完全融合在VS.NET開發(fā)環(huán)境中,為VB、C++、C#開發(fā)語言所支持,便于開發(fā)者快速入門,有效降低了三維圖形開發(fā)的難度[14-15],與已有VB、C++、C#程序兼容,移植成本較低。
三維場景建立后,呈現得到的三維顯示畫面都是由WPF自動渲染操作計算完成的,用戶無需進行任何投影計算。WPF利用了顯卡GPU的圖形加速功能,大大提高了復雜三維圖形的渲染速度。
TK-Animator軟件的圖形顯示采用統(tǒng)一的數據結構,考慮到流場數據格式的多樣性,編制了數據讀取轉換模塊,專門完成特殊流場數據與軟件標準數據格式的轉化。轉換模塊程序讀取節(jié)點數據和單元連接后,自動生成其他必要的單元邊、每條邊的臨接單元、邊界邊等信息,這些信息在質點快速定位算法中十分必要。
標準的地形數據由離散化的節(jié)點空間位置坐標、構成單元的節(jié)點連接關系組成,形成三維地形曲面的幾何要素。按照地形高程值和顏色對應關系,給定不同水深值對應的顏色作為曲面顯示材質,不難得到區(qū)域地形。
水動力數值模擬往往存在十分復雜的水陸交接邊界,軟件自動判斷邊界節(jié)點及單元號,輔助人工圖形化界面交互式完成外邊界定義。只有將水域、陸域區(qū)分顯示,才能保證整體三維場景接近真實狀況,顯示才會逼真。圖1為邊界定義后渤海三維場景圖。
圖1 定義外邊界后的渤海三維地形場景Fig.1 Scene of Bohai terrain with defined boundary
圖2 分層三維網格Fig.2 Stratified 3D grid strategy
拉格朗日法描述流場質點時,關注的是質點隨時間的運動軌跡,這需要對質點運動的跡線進行追蹤。三維運動質點具有x、y、z三個方向的速度分量u、v、w。目前大都以平面非結構化、垂向分層方式構建三維立體網格,所以在進行三維流場模擬時,可以采用水平方向二維拉格朗日流場模擬方式[3],增加垂向約束的方法,實現對三維運動質點的追蹤[10]。
水平方向上采用方向追蹤法控制質點在平面上的運動。三維質點運動增加了垂向分量,需要對質點在垂向進行額外控制,控制要素主要包括對運動質點的上下邊界出界控制、垂向子區(qū)域出界控制等。
如圖2所示,設質點在t0時刻的初始位置為P0(x0,y0,z0),所在平面單元號為n0,垂向位于第m0層,經過時段Δt后到t時刻,到達位置P(x,y,z)。利用二維方向追蹤法[3]得到P所在平面單元號n;設想通過P點作垂線,和水面、底面交點為Ps、Pb,由質點所在水平單元各節(jié)點的水面高程和地形高程可以插值得到Ps、Pb的z坐標值,然后再由P點的z坐標,就可知道質點所在垂向層的層號m,這樣就得到了質點所在三維單元。計算物理量一般存儲在層與層交界面的單元節(jié)點上,設通過P點的垂線與m層上下交界面的交點分別為Pu、Pd,插值不難求出兩點處各速度分量及其他物理量的值,根據P點所在Pu和Pd間的比例關系,進行垂向插值,最終得到質點M在P點的各個物理量的值。
示蹤粒子的密度控制具有2方面功能:一是長時間流場模擬時,避免示蹤粒子趨向于大流速區(qū)域趨勢,使流場質點分布在整體上始終保持較均勻的態(tài)勢,流場顯示自然;二是避免入口補點、出口刪點的操作。
通過建立多個三維長方體子域,實現三維質點運動的疏密控制。模擬開始前,根據平面范圍及模型最小水深值、最大可能水位值,劃定一個包絡模型范圍的大長方體,以用戶指定的水平和垂向尺度,劃分長方體為nx×ny×nz個小的長方體子域,作為以后質點疏密判斷的依據。模擬初始時刻,根據用戶指定密度定義,在每個子域中隨機布設流場質點,對每個在平面上有效的質點進行垂向出界判斷(是否分布于水面之上、底面之下),然后作為初始流場進行下一步計算。通過顯示時間插值,假定在每一時刻質點都為勻速運動,在已知質點現有位置的基礎上,通過計算可以得到經過一定時間間隔后,新時刻各質點的新位置。設定屏幕顯示區(qū)對應的模型區(qū)域和整個模型有效區(qū)域的交集為質點是否出界的判別條件,對各質點位置進行出界判斷,刪除出界質點,得到有效保留質點,然后利用保留質點進一步進行質點疏密判別,刪除過密質點,同時對過疏子域添加新質點,得到新時刻質點集合。如此循環(huán)便完成三維流場動態(tài)模擬各時刻流場質點的位置及流速大小求解。通過一定幾何形狀將質點表達出來,形成真正意義上的動態(tài)流場顯示。
對示蹤粒子的跟蹤耗時較多,為保證動態(tài)流場的快速仿真,達到實時模擬的目的,在保證用戶指定密度和范圍的前提下,刪除顯示視口外的未出界的“多余”質點,只保留可視部分粒子,尤其在模擬過程中進行縮放操作時,加大視圖內示蹤粒子密度十分必要,這時需刪除的“多余”質點更多。
圖3中P1P2P3P4為屏幕矩形視區(qū)對應的現場區(qū)域,一般情況下會比屏幕現場矩形區(qū)域Q1Q2Q3Q4小,說明單純根據屏幕坐標最大最小值確定的屏幕現場區(qū)域有許多部分并不能被看到,屬于不可視區(qū)域,當然針對這些區(qū)域的質點跟蹤也就沒有意義,所以通過構造P1P2P3P4區(qū)域,在仿真模擬過程中判斷質點是否落在該區(qū)域,否則直接刪除示蹤質點。圖4是對應圖3的某海區(qū)局部流場。
圖3 演示時若干區(qū)域比較Fig.3 Comparison of several regions while simulation
人的眼睛相距Le=4~6 cm,所以觀察到三維物體的圖像與真實圖像稍有差別,兩者之間存在像差,由于這個像差的存在,通過人類的大腦,可以感知三維世界的深度和立體變化,這就是所謂的立體視覺原理[5]。根據立體視覺原理,用分開一定距離的左右2個相機去捕獲環(huán)境影像,然后通過立體放映方式和立體眼鏡,將左影像傳給左眼,右影像傳給右眼,經大腦識別處理形成立體圖像。立體影像分離方式較多,常見的有偏振鏡方式、紅藍眼鏡方式、分時雙目立體成像方式等[11-12]。
在WPF中,每個三維場景中只能有一個攝影機(Camera),但可以根據設定,在對場景渲染前改變攝影機設置,如將攝影機水平向左偏移一定距離(Le/2)模擬左眼,對場景渲染生成用于左眼觀察的位圖文件,然后將攝影機水平向右偏移同樣距離模擬右眼,對場景再次渲染生成用于右眼觀察的位圖文件,這樣便間接地實現了模擬雙眼的雙攝影機功能。
攝影機水平平移可以通過向其三維變換矩陣附加三維旋轉變換來實現,三維旋轉變換的軸是通過攝影機的LookDirection射線與顯示域交點平行于z軸的直線,根據經驗,旋轉角度一般為0.2°~0.95°,這完全取決于對景深和出鏡程度的選擇,角度越大出鏡程度越高,角度越小景深越深,這在本質上也代表了雙眼向不同位置聚焦,小角度代表向遠處看,大角度代表向近處看。
由上述得到的按時間順序排列的一系列圖片生成的影像文件(影像文件生成在此不作討論)構成了三維動態(tài)流場,得到模擬左右2只眼睛生成的圖片集合后,可進一步生成2個對應的影像文件。選擇合適的控制方式對影片進行播放,就得到立體顯示的三維流場。圖5是丁壩繞流的三維流場立體仿真顯示(紅藍立體影像)。
上述三維流場的立體式仿真模擬技術可應用于波浪仿真模擬、三維表面流場仿真模擬、截面流場仿真模擬、溫度場模擬等。
圖5 丁壩繞流三維流場立體仿真模擬Fig.5 3D anaglyph simulation of spur dike flow
為驗證三維立體式流場的表達效果,選擇具有明顯三維流場特征的長江匯合口項目進行檢驗。采用三維水動力數值模擬軟件,對長江、沱江匯合口區(qū)域流場進行研究,揭示兩水流匯合區(qū)域的三維流場結構。
首先利用三維水動力數值模擬軟件對項目的三維流場進行模擬,得到三維流場計算結果。用三維流場動態(tài)仿真軟件讀取計算結果數據文件,經過一系列設定后,制作出相應的立體影像文件。結果表明三維效果明顯,達到了預期目標。圖6為動態(tài)模擬過程中的截圖,為紅藍三維立體圖片,肉眼觀察時圖像是模糊不清的,需要紅藍立體眼鏡才能看到立體效果。
另外,本軟件除三維流場立體仿真功能外,還可以實現三維場景中的波浪動態(tài)模擬、三維表面流或二維流場模擬、置于三維場景中的水平及垂直截面流場仿真模擬等,應用實例見圖7~圖11。
圖6 河道三維流場立體仿真Fig.6 3D anaglyph simulation of a river
圖7 波浪場仿真模擬Fig.7 Simulation of waves
圖8 三維潰壩表面流場圖Fig.8 Surface flow of 3D dam-break
圖9 三維場景中的二維流場Fig.9 2D current with 3D terrain
圖10 多個水平截面流場(渤海)Fig.10 Flow over the horizontal section
圖11 多個垂直截面(長江)Fig.11 Flow over the vertical section
本文提出采用立體電影成像原理及制作方法,以軟件化方式實現了對三維流場的立體式仿真模擬。利用立體顯示技術,突破了二維顯示屏幕對三維場景顯示的局限,使流場的三維場景建立具有了實際意義,是行之有效的三維可視化途徑,對相關行業(yè)的三維顯示具有技術輻射作用。
TK-Animator是一款功能強大的水動力數值模擬后處理軟件,軟件從底層開發(fā),擁有完全的自主知識產權,有利于功能擴展和升級。泥沙場數值模擬是三維泥沙研究的重要方向,實現對三維泥沙場的仿真模擬將是TK-Animator軟件功能擴展的一個重要方面。
[1]張征,李蓓.大屏幕圖形顯示系統(tǒng)軟件的開發(fā)與研究[J].水道港口,1993(4):32-34.ZHANG Z,LI B.Software Development and Research to Large Screen Visualization[J].Journal of Waterway and Harbor,1993(4):32-34.
[2]康蘇海.河流水流泥沙數值模擬結果等值線繪制技術研究[J].水道港口,2009,30(4):267-271.KANG S H.Study on Contour-map technology of river numeric simulation to flow and sediment[J].Journal of Waterway and Harbor,2009,30(4):267-271.
[3]康蘇海.利用 GDI+實現二維動態(tài)流場實時模擬[J].水道港口,2009,30(6):390-393.KANG S H.Technology of real time animation on 2D flow with GDI+[J].Journal of Waterway and Harbor,2009,30(6):390-393.
[4]孔令勝,南敬實,荀顯超.平面三維顯示技術的研究現狀[J].中國光學與應用光學,2009(2):112-118.KONG L S,NAN J S,XUN X C.Research status quo of flat 3-D display technology[J].Chinese Journal of Optics and Applied Optics,2009(2):112-118.
[5]陳兵,李玉成,賴國璋.近底水平圓柱振蕩繞流的三維數值模擬[J].水動力學研究與進展:A 輯,2002,17(1):9-16.CHEN B,LI Y C,LAI G Z.Three-dimensional calculation of oscillating flow past a circular cylinder near a plane[J].Journal of Hydrodynamics:Ser A,2002,17(1):9-16.
[6]李建隆,李曉,王偉文,等.進氣方式對液柱噴射試驗塔內部流場的數值模擬[J].青島科技大學學報:自然科學版,2009,30(1):34-37.LI J L,LI X,WANG W W,et al.Numerical simulation of liquid-column spray tower with different gas inlets[J].Journal of Qingdao University of Science and Technology:Natural Science Edition,2009,30(1):34-37.
[7]陳立華,梅亞東,王現勛,等.基于 OpenGL 三維河網地形與數據場的可視化[J].武漢大學學報,2007,40(3):34-37.CHEN L H,MEI Y D,WANG X X,et al.Visualization of 3D river network terrain and data field based on OpenGL[J].Engineering Journal of Wuhan University,2007,40(3):34-37.
[8]黎華,肖偉,黃海峰,等.三維真實感地形生成的關鍵技術研究[J].測繪科學,2006,31(4):57-60.LI H,XIAO W,HUANG H F,et al.Study on the key technology of generation of 3D realistic terrain[J].Science of Surveying and Mapping,2006,31(4):57-60.
[9]賈艾晨,蘇江鋒.基于 OpenGL 的河道地形實時仿真方法[J].計算機輔助工程,2007,16(2):20-23.JIA A C,SU J F.Real-time simulation method of riverway terrain based on OpenGL [J].Computer Aided Engineering,2007,16(2):20-23.
[10]Kang Suhai,Jin Sheng.Application of video anaglyph maker for 3-D flow simulation [J].Journal of Hydrodynamics,2010(2):289-294.
[11]武維生,張海,沈威,等.裸眼立體顯示中 3D 模型多視點影像提?。跩].中國體視學與圖像分析,2008,13(1):38-41.WU W S,ZHANG H,SHEN W,et al.Multi-view extraction of 3D model applied in autostereoscopic display[J].Chinese Journal of Stereology and Image Analysis,2008,13(1):38-41.
[12]劉昕鑫,王元慶.基于雙焦的單目立體成像系統(tǒng)分析[J].計算機測量與控制,2008,16(9):1 316-1 321.LIU X X,WANG Y Q.Analysis of the monocular stereo system based on bifocal imaging[J].Computer Measurement and Control,2008,16(9):1 316-1 321.
[13]楊珺,王繼成,劉然.立體圖像對的生成[J].計算機應用,2007,27(9):2 106-2 109.YANG J,WANG J C,LIU R.Stereo pairs creation[J].Journal of Computer Applications,2007,27(9):2 106-2 109.
[14]賴儀靈.WPF 全景體驗[J].程序員,2007(3):98-101.
[15]Adam Nathan.WPF揭秘[M].北京:人民郵電出版社,2008.