康蘇海
(交通部天津水運(yùn)工程科學(xué)研究所工程泥沙交通行業(yè)重點(diǎn)實(shí)驗(yàn)室,天津300456)
流場二維可視化技術(shù)起步早,發(fā)展較為成熟,軟件化程度也較高,如Mike21、Delft3D、Fluent這些商業(yè)化流體模擬計(jì)算軟件都有相應(yīng)的二維數(shù)據(jù)可視化工具;Tecplot、Surfer是專門用于數(shù)據(jù)可視化的軟件,功能十分強(qiáng)大;TK-2D數(shù)據(jù)后處理軟件專門用于二維流場數(shù)據(jù)仿真處理,界面美觀、顯示靈活、功能強(qiáng)大,是水動(dòng)力數(shù)值模擬領(lǐng)域優(yōu)秀的專業(yè)軟件[1-3]。
近幾年來,在水動(dòng)力數(shù)值模擬領(lǐng)域,越來越多的工程問題需要三維計(jì)算來解決,對(duì)三維計(jì)算結(jié)果后處理,尤其是三維流場的仿真模擬提出了要求,如何真實(shí)有效地表現(xiàn)三維流場一直是水動(dòng)力數(shù)值模擬研究領(lǐng)域的一個(gè)方向。以往只能通過截取水平或垂向截面方式間接地表達(dá)三維流場[4-6],模擬效果不直觀,如Mike21、Delft3D、Fluent都是采用這種方式。最新版的Tecplot360軟件通過跡線加球質(zhì)點(diǎn)的方式,可實(shí)現(xiàn)三維恒定流的三維仿真模擬,但對(duì)水運(yùn)工程領(lǐng)域常見的非恒定流場可視化卻無能為力。
三維流場的直接表達(dá)涉及到真實(shí)三維場景的建立。用OpenGL構(gòu)建三維地形場景已較為常見[7-9],但很少將流場加入,原因是地形可以很容易地用三維曲面描述,而流場卻不同。流場的表達(dá)需要在場景中布設(shè)示蹤粒子,可以用箭頭、圓球或其他形狀的幾何體表示,但一方面運(yùn)動(dòng)流場需要由放置在其中的粒子來描述,另一方面需要將三維場景中的粒子向顯示平面進(jìn)行投影,必然會(huì)造成運(yùn)動(dòng)質(zhì)點(diǎn)前后和上下的遮蓋,使得投影畫面整體混亂不堪,即使采用不同質(zhì)點(diǎn)形狀,也無法達(dá)到理想的顯示效果。這也是導(dǎo)致真實(shí)三維流場可視化止步不前的關(guān)鍵[10]。
立體電影將模擬左右眼拍攝的2個(gè)序列的影像畫面重疊在銀幕上,通過觀眾配戴的特制眼鏡分離圖像,使觀眾左眼只能看到模擬左眼拍攝的畫面,右眼只能看到模擬右眼拍攝的畫面,再通過大腦的匯聚功能,合成為立體視覺影像,使人有身臨其境的感覺[11-13]。由此可以設(shè)想,假如建立真實(shí)的三維流場場景,然后在其中設(shè)置2個(gè)隔開一定距離的攝像機(jī)模擬人的雙眼,分別對(duì)同一流場同時(shí)進(jìn)行拍攝(即投影),可得到2幅圖像,代表這一時(shí)刻2只眼睛從不同視角觀察到的流場。按時(shí)間順序連續(xù)拍攝,并將2個(gè)攝像機(jī)拍攝的圖像序列分別生成影像文件,就得到了所謂的“立體片源”,最后用專用立體播放軟件或設(shè)備,對(duì)立體片源進(jìn)行投影播放,在立體眼鏡的幫助下,就可以看到具有立體效果的仿真三維流場模擬。
三維流場仿真模擬的另一個(gè)關(guān)鍵是解決三維場景的快速渲染和三維流場中的示蹤質(zhì)點(diǎn)的快速跟蹤算法,使三維流場模擬在普通計(jì)算機(jī)上就能夠?qū)崿F(xiàn)。
本文利用立體成像原理,在二維屏幕上實(shí)現(xiàn)三維流場的立體顯示,并尋求三維流場質(zhì)點(diǎn)跟蹤的快速算法,最后采用輕量級(jí)的具有快速三維場景渲染能力的圖形平臺(tái),完成三維流場的仿真顯示。采用C#編程語言,實(shí)現(xiàn)了三維流場仿真立體影像制作的軟件化,軟件名稱為TK-Animator。
三維場景的建立基于三維圖形平臺(tái),如OpenGL、WPF、OSG、VTK、OGRE等,每一種三維圖形平臺(tái)都有自身的優(yōu)點(diǎn),考慮到與已有代碼的兼容性,本軟件開發(fā)采用WPF作為三維圖形引擎。WPF是微軟新一代圖形系統(tǒng),運(yùn)行在MS.NET Framework 3.0架構(gòu)下,基于DirectX技術(shù),在文檔、圖形、圖像、多媒體、動(dòng)畫等方面具有超強(qiáng)的優(yōu)勢(shì)。WPF的核心是一個(gè)與分辨率無關(guān)并且基于向量的呈現(xiàn)引擎,旨在利用現(xiàn)代圖形硬件的優(yōu)勢(shì),是一個(gè)輕量級(jí)的三維圖形顯示引擎。在WPF中可以進(jìn)行三維圖形模型定義,用于指定光源和攝像機(jī)位置信息,以構(gòu)建真實(shí)的三維場景,它與Windows操作系統(tǒng)緊密結(jié)合,完全融合在VS.NET開發(fā)環(huán)境中,為VB、C++、C#開發(fā)語言所支持,便于開發(fā)者快速入門,有效降低了三維圖形開發(fā)的難度[14-15],與已有VB、C++、C#程序兼容,移植成本較低。
三維場景建立后,呈現(xiàn)得到的三維顯示畫面都是由WPF自動(dòng)渲染操作計(jì)算完成的,用戶無需進(jìn)行任何投影計(jì)算。WPF利用了顯卡GPU的圖形加速功能,大大提高了復(fù)雜三維圖形的渲染速度。
TK-Animator軟件的圖形顯示采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),考慮到流場數(shù)據(jù)格式的多樣性,編制了數(shù)據(jù)讀取轉(zhuǎn)換模塊,專門完成特殊流場數(shù)據(jù)與軟件標(biāo)準(zhǔn)數(shù)據(jù)格式的轉(zhuǎn)化。轉(zhuǎn)換模塊程序讀取節(jié)點(diǎn)數(shù)據(jù)和單元連接后,自動(dòng)生成其他必要的單元邊、每條邊的臨接單元、邊界邊等信息,這些信息在質(zhì)點(diǎn)快速定位算法中十分必要。
標(biāo)準(zhǔn)的地形數(shù)據(jù)由離散化的節(jié)點(diǎn)空間位置坐標(biāo)、構(gòu)成單元的節(jié)點(diǎn)連接關(guān)系組成,形成三維地形曲面的幾何要素。按照地形高程值和顏色對(duì)應(yīng)關(guān)系,給定不同水深值對(duì)應(yīng)的顏色作為曲面顯示材質(zhì),不難得到區(qū)域地形。
水動(dòng)力數(shù)值模擬往往存在十分復(fù)雜的水陸交接邊界,軟件自動(dòng)判斷邊界節(jié)點(diǎn)及單元號(hào),輔助人工圖形化界面交互式完成外邊界定義。只有將水域、陸域區(qū)分顯示,才能保證整體三維場景接近真實(shí)狀況,顯示才會(huì)逼真。圖1為邊界定義后渤海三維場景圖。
圖1 定義外邊界后的渤海三維地形場景Fig.1 Scene of Bohai terrain with defined boundary
圖2 分層三維網(wǎng)格Fig.2 Stratified 3D grid strategy
拉格朗日法描述流場質(zhì)點(diǎn)時(shí),關(guān)注的是質(zhì)點(diǎn)隨時(shí)間的運(yùn)動(dòng)軌跡,這需要對(duì)質(zhì)點(diǎn)運(yùn)動(dòng)的跡線進(jìn)行追蹤。三維運(yùn)動(dòng)質(zhì)點(diǎn)具有x、y、z三個(gè)方向的速度分量u、v、w。目前大都以平面非結(jié)構(gòu)化、垂向分層方式構(gòu)建三維立體網(wǎng)格,所以在進(jìn)行三維流場模擬時(shí),可以采用水平方向二維拉格朗日流場模擬方式[3],增加垂向約束的方法,實(shí)現(xiàn)對(duì)三維運(yùn)動(dòng)質(zhì)點(diǎn)的追蹤[10]。
水平方向上采用方向追蹤法控制質(zhì)點(diǎn)在平面上的運(yùn)動(dòng)。三維質(zhì)點(diǎn)運(yùn)動(dòng)增加了垂向分量,需要對(duì)質(zhì)點(diǎn)在垂向進(jìn)行額外控制,控制要素主要包括對(duì)運(yùn)動(dòng)質(zhì)點(diǎn)的上下邊界出界控制、垂向子區(qū)域出界控制等。
如圖2所示,設(shè)質(zhì)點(diǎn)在t0時(shí)刻的初始位置為P0(x0,y0,z0),所在平面單元號(hào)為n0,垂向位于第m0層,經(jīng)過時(shí)段Δt后到t時(shí)刻,到達(dá)位置P(x,y,z)。利用二維方向追蹤法[3]得到P所在平面單元號(hào)n;設(shè)想通過P點(diǎn)作垂線,和水面、底面交點(diǎn)為Ps、Pb,由質(zhì)點(diǎn)所在水平單元各節(jié)點(diǎn)的水面高程和地形高程可以插值得到Ps、Pb的z坐標(biāo)值,然后再由P點(diǎn)的z坐標(biāo),就可知道質(zhì)點(diǎn)所在垂向?qū)拥膶犹?hào)m,這樣就得到了質(zhì)點(diǎn)所在三維單元。計(jì)算物理量一般存儲(chǔ)在層與層交界面的單元節(jié)點(diǎn)上,設(shè)通過P點(diǎn)的垂線與m層上下交界面的交點(diǎn)分別為Pu、Pd,插值不難求出兩點(diǎn)處各速度分量及其他物理量的值,根據(jù)P點(diǎn)所在Pu和Pd間的比例關(guān)系,進(jìn)行垂向插值,最終得到質(zhì)點(diǎn)M在P點(diǎn)的各個(gè)物理量的值。
示蹤粒子的密度控制具有2方面功能:一是長時(shí)間流場模擬時(shí),避免示蹤粒子趨向于大流速區(qū)域趨勢(shì),使流場質(zhì)點(diǎn)分布在整體上始終保持較均勻的態(tài)勢(shì),流場顯示自然;二是避免入口補(bǔ)點(diǎn)、出口刪點(diǎn)的操作。
通過建立多個(gè)三維長方體子域,實(shí)現(xiàn)三維質(zhì)點(diǎn)運(yùn)動(dòng)的疏密控制。模擬開始前,根據(jù)平面范圍及模型最小水深值、最大可能水位值,劃定一個(gè)包絡(luò)模型范圍的大長方體,以用戶指定的水平和垂向尺度,劃分長方體為nx×ny×nz個(gè)小的長方體子域,作為以后質(zhì)點(diǎn)疏密判斷的依據(jù)。模擬初始時(shí)刻,根據(jù)用戶指定密度定義,在每個(gè)子域中隨機(jī)布設(shè)流場質(zhì)點(diǎn),對(duì)每個(gè)在平面上有效的質(zhì)點(diǎn)進(jìn)行垂向出界判斷(是否分布于水面之上、底面之下),然后作為初始流場進(jìn)行下一步計(jì)算。通過顯示時(shí)間插值,假定在每一時(shí)刻質(zhì)點(diǎn)都為勻速運(yùn)動(dòng),在已知質(zhì)點(diǎn)現(xiàn)有位置的基礎(chǔ)上,通過計(jì)算可以得到經(jīng)過一定時(shí)間間隔后,新時(shí)刻各質(zhì)點(diǎn)的新位置。設(shè)定屏幕顯示區(qū)對(duì)應(yīng)的模型區(qū)域和整個(gè)模型有效區(qū)域的交集為質(zhì)點(diǎn)是否出界的判別條件,對(duì)各質(zhì)點(diǎn)位置進(jìn)行出界判斷,刪除出界質(zhì)點(diǎn),得到有效保留質(zhì)點(diǎn),然后利用保留質(zhì)點(diǎn)進(jìn)一步進(jìn)行質(zhì)點(diǎn)疏密判別,刪除過密質(zhì)點(diǎn),同時(shí)對(duì)過疏子域添加新質(zhì)點(diǎn),得到新時(shí)刻質(zhì)點(diǎn)集合。如此循環(huán)便完成三維流場動(dòng)態(tài)模擬各時(shí)刻流場質(zhì)點(diǎn)的位置及流速大小求解。通過一定幾何形狀將質(zhì)點(diǎn)表達(dá)出來,形成真正意義上的動(dòng)態(tài)流場顯示。
對(duì)示蹤粒子的跟蹤耗時(shí)較多,為保證動(dòng)態(tài)流場的快速仿真,達(dá)到實(shí)時(shí)模擬的目的,在保證用戶指定密度和范圍的前提下,刪除顯示視口外的未出界的“多余”質(zhì)點(diǎn),只保留可視部分粒子,尤其在模擬過程中進(jìn)行縮放操作時(shí),加大視圖內(nèi)示蹤粒子密度十分必要,這時(shí)需刪除的“多余”質(zhì)點(diǎn)更多。
圖3中P1P2P3P4為屏幕矩形視區(qū)對(duì)應(yīng)的現(xiàn)場區(qū)域,一般情況下會(huì)比屏幕現(xiàn)場矩形區(qū)域Q1Q2Q3Q4小,說明單純根據(jù)屏幕坐標(biāo)最大最小值確定的屏幕現(xiàn)場區(qū)域有許多部分并不能被看到,屬于不可視區(qū)域,當(dāng)然針對(duì)這些區(qū)域的質(zhì)點(diǎn)跟蹤也就沒有意義,所以通過構(gòu)造P1P2P3P4區(qū)域,在仿真模擬過程中判斷質(zhì)點(diǎn)是否落在該區(qū)域,否則直接刪除示蹤質(zhì)點(diǎn)。圖4是對(duì)應(yīng)圖3的某海區(qū)局部流場。
圖3 演示時(shí)若干區(qū)域比較Fig.3 Comparison of several regions while simulation
人的眼睛相距Le=4~6 cm,所以觀察到三維物體的圖像與真實(shí)圖像稍有差別,兩者之間存在像差,由于這個(gè)像差的存在,通過人類的大腦,可以感知三維世界的深度和立體變化,這就是所謂的立體視覺原理[5]。根據(jù)立體視覺原理,用分開一定距離的左右2個(gè)相機(jī)去捕獲環(huán)境影像,然后通過立體放映方式和立體眼鏡,將左影像傳給左眼,右影像傳給右眼,經(jīng)大腦識(shí)別處理形成立體圖像。立體影像分離方式較多,常見的有偏振鏡方式、紅藍(lán)眼鏡方式、分時(shí)雙目立體成像方式等[11-12]。
在WPF中,每個(gè)三維場景中只能有一個(gè)攝影機(jī)(Camera),但可以根據(jù)設(shè)定,在對(duì)場景渲染前改變攝影機(jī)設(shè)置,如將攝影機(jī)水平向左偏移一定距離(Le/2)模擬左眼,對(duì)場景渲染生成用于左眼觀察的位圖文件,然后將攝影機(jī)水平向右偏移同樣距離模擬右眼,對(duì)場景再次渲染生成用于右眼觀察的位圖文件,這樣便間接地實(shí)現(xiàn)了模擬雙眼的雙攝影機(jī)功能。
攝影機(jī)水平平移可以通過向其三維變換矩陣附加三維旋轉(zhuǎn)變換來實(shí)現(xiàn),三維旋轉(zhuǎn)變換的軸是通過攝影機(jī)的LookDirection射線與顯示域交點(diǎn)平行于z軸的直線,根據(jù)經(jīng)驗(yàn),旋轉(zhuǎn)角度一般為0.2°~0.95°,這完全取決于對(duì)景深和出鏡程度的選擇,角度越大出鏡程度越高,角度越小景深越深,這在本質(zhì)上也代表了雙眼向不同位置聚焦,小角度代表向遠(yuǎn)處看,大角度代表向近處看。
由上述得到的按時(shí)間順序排列的一系列圖片生成的影像文件(影像文件生成在此不作討論)構(gòu)成了三維動(dòng)態(tài)流場,得到模擬左右2只眼睛生成的圖片集合后,可進(jìn)一步生成2個(gè)對(duì)應(yīng)的影像文件。選擇合適的控制方式對(duì)影片進(jìn)行播放,就得到立體顯示的三維流場。圖5是丁壩繞流的三維流場立體仿真顯示(紅藍(lán)立體影像)。
上述三維流場的立體式仿真模擬技術(shù)可應(yīng)用于波浪仿真模擬、三維表面流場仿真模擬、截面流場仿真模擬、溫度場模擬等。
圖5 丁壩繞流三維流場立體仿真模擬Fig.5 3D anaglyph simulation of spur dike flow
為驗(yàn)證三維立體式流場的表達(dá)效果,選擇具有明顯三維流場特征的長江匯合口項(xiàng)目進(jìn)行檢驗(yàn)。采用三維水動(dòng)力數(shù)值模擬軟件,對(duì)長江、沱江匯合口區(qū)域流場進(jìn)行研究,揭示兩水流匯合區(qū)域的三維流場結(jié)構(gòu)。
首先利用三維水動(dòng)力數(shù)值模擬軟件對(duì)項(xiàng)目的三維流場進(jìn)行模擬,得到三維流場計(jì)算結(jié)果。用三維流場動(dòng)態(tài)仿真軟件讀取計(jì)算結(jié)果數(shù)據(jù)文件,經(jīng)過一系列設(shè)定后,制作出相應(yīng)的立體影像文件。結(jié)果表明三維效果明顯,達(dá)到了預(yù)期目標(biāo)。圖6為動(dòng)態(tài)模擬過程中的截圖,為紅藍(lán)三維立體圖片,肉眼觀察時(shí)圖像是模糊不清的,需要紅藍(lán)立體眼鏡才能看到立體效果。
另外,本軟件除三維流場立體仿真功能外,還可以實(shí)現(xiàn)三維場景中的波浪動(dòng)態(tài)模擬、三維表面流或二維流場模擬、置于三維場景中的水平及垂直截面流場仿真模擬等,應(yīng)用實(shí)例見圖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 多個(gè)水平截面流場(渤海)Fig.10 Flow over the horizontal section
圖11 多個(gè)垂直截面(長江)Fig.11 Flow over the vertical section
本文提出采用立體電影成像原理及制作方法,以軟件化方式實(shí)現(xiàn)了對(duì)三維流場的立體式仿真模擬。利用立體顯示技術(shù),突破了二維顯示屏幕對(duì)三維場景顯示的局限,使流場的三維場景建立具有了實(shí)際意義,是行之有效的三維可視化途徑,對(duì)相關(guān)行業(yè)的三維顯示具有技術(shù)輻射作用。
TK-Animator是一款功能強(qiáng)大的水動(dòng)力數(shù)值模擬后處理軟件,軟件從底層開發(fā),擁有完全的自主知識(shí)產(chǎn)權(quán),有利于功能擴(kuò)展和升級(jí)。泥沙場數(shù)值模擬是三維泥沙研究的重要方向,實(shí)現(xiàn)對(duì)三維泥沙場的仿真模擬將是TK-Animator軟件功能擴(kuò)展的一個(gè)重要方面。
[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]康蘇海.河流水流泥沙數(shù)值模擬結(jié)果等值線繪制技術(shù)研究[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+實(shí)現(xiàn)二維動(dòng)態(tài)流場實(shí)時(shí)模擬[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]孔令勝,南敬實(shí),荀顯超.平面三維顯示技術(shù)的研究現(xiàn)狀[J].中國光學(xué)與應(yīng)用光學(xué),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]陳兵,李玉成,賴國璋.近底水平圓柱振蕩繞流的三維數(shù)值模擬[J].水動(dòng)力學(xué)研究與進(jìn)展: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ìn)氣方式對(duì)液柱噴射試驗(yàn)塔內(nèi)部流場的數(shù)值模擬[J].青島科技大學(xué)學(xué)報(bào):自然科學(xué)版,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]陳立華,梅亞東,王現(xiàn)勛,等.基于 OpenGL 三維河網(wǎng)地形與數(shù)據(jù)場的可視化[J].武漢大學(xué)學(xué)報(bào),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]黎華,肖偉,黃海峰,等.三維真實(shí)感地形生成的關(guān)鍵技術(shù)研究[J].測(cè)繪科學(xué),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 的河道地形實(shí)時(shí)仿真方法[J].計(jì)算機(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 模型多視點(diǎn)影像提?。跩].中國體視學(xué)與圖像分析,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].計(jì)算機(jī)測(cè)量與控制,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]楊珺,王繼成,劉然.立體圖像對(duì)的生成[J].計(jì)算機(jī)應(yīng)用,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 全景體驗(yàn)[J].程序員,2007(3):98-101.
[15]Adam Nathan.WPF揭秘[M].北京:人民郵電出版社,2008.