康子非,蔣學煉,邢 巖
(1.天津城建大學 土木工程學院,天津 300384;2.交通運輸部天津水運工程科學研究所 工程泥沙交通行業重點實驗室,天津 300456)
可視化技術通過對儀器測量或數值模擬得到的數據進行篩選、插值、變換等處理,將大量枯燥的數字信息以直觀、生動的圖形或動畫方式展示,極大地方便了人們對關注對象運動規律的把握。流場可視化是觀察流速分布、揭示流體運動特性及發現流體運動規律的有效手段。自20世紀90年代起國內外就開始對流體矢量及標量場的可視化進行研究,由于其技術直觀性,目前已成為計算流體領域的一個重要技術手段并在水運工程研究領域得到普遍應用。
流場可視化可分為直接可視化、幾何可視化、基于紋理的可視化和特征可視化。直接可視化是指用圖標、符號或顏色編碼的方式繪制流場圖的技術,其中應用最多的當屬箭頭表示法,它是最簡單有效的顯示矢量場數據的方法;幾何可視化是指從流場數據中計算諸如流線、跡線等幾何體并用于顯示的方式,它可有效地表現矢量場的連續性;基于紋理的可視化主要應用紋理來顯示流場的方向信息,以一定的幾何形狀通過顏色的有序排列組成圖案而實現,紋理空間在圖像空間進行,具有圖像空間的連續性;特征可視化通過發現和抽取矢量場中有特殊意義的結構或用戶感興趣的區域,達到對場中有意義的部分即“特征”進行重點可視化的目的[1-5]。不同的流場可視化技術手段各有優缺點,針對不同用戶和應用領域,均有相應的應用需求。
在水運工程研究領域,流場可視化基本采用直接可視化方式,它經歷了由靜止圖片到動畫、由簡單到復雜的發展過程。最初采用歐拉法靜態流場矢量圖表示二維流場,隨計算機圖形學發展,二維動畫制作技術被應用于流場可視化?;诶窭嗜召|點追蹤法的流場動畫方式更符合人們對流場的認識習慣,并在水運工程研究領域得到廣泛應用[2-3]。以往水運工程項目的流場可視化基本聚焦于工程位置處的局部水域,不展示周邊通航環境或只是對其進行概化處理。如此,單從畫面本身不能判斷工程周邊真實環境,因此整體顯示效果一般,尤其對工程平面布置方案比選進行研究時,缺點更為突出。借用已有的成熟GIS平臺,在顯示場景中加入真實地理要素及設計模型,實現實景流場可視化是可行方案[6]。
Google地球軟件(以下簡稱GE)是一款將衛星照片、航拍照相和GIS布置在一個地球三維模型上的虛擬地球軟件,能夠基本真實地展現工程附近地理環境[7-8]。內河及近海工程(如河道整治、碼頭及人工島建設等)進行工程平面布置流場可視化時,若結合GE將工程所在位置處的地理環境同步顯示,將具有良好的展示效果。
GE支持符合規定格式要求的幾何形狀(線段、多邊形等)文件的導入,并可以通過其對外開放的API對幾何圖形集合的顯示進行控制,這就為以GE為基礎的動畫制作創造了條件[9]。以往基本通過交互式方式同GE進行數據共享達到數據可視化的目的,即用可視化軟件創建可供GE讀取的符合規范的數據文件,再由GE讀取文件完成數據可視化,這需在GE和可視化軟件間進行反復切換,使用極不方便。本文利用Windows API編制程序,在開發的專用可視化軟件中融合GE地球模型,實現集地理信息、工程平面布置為一體的三維場景,并在此基礎上直接實現流場動畫,避免了多軟件相互切換,提高了可視化展示效果。
基于VS.NET開發平臺,采用C#編程語言,利用GE提供的可編程COM接口,以WinForm編制專用可視化軟件。借助GE全球模型提供工程所在區域的基本地理環境信息,附加諸如模型范圍地形圖、重要建筑物模型、工程平面布置幾何要素、標識文字等幾何信息,實現實景可視化。

圖1 實景平臺建立流程圖
首先,在編制程序之前要安裝GE,并確保其注冊成功。然后,在VS.NET開發環境下創建新的WinForm工程,向工程中添加Google Earth 1.0 Type Library的COM引用以便能夠調用GE API。接下來,按圖1給出的流程圖所描述的方法,通過Windows API獲取GE視圖窗口(假設GE應用程序類Application GEClass對象為_GEApp),并將其嵌入WinForm主視圖窗口,實現對實景平臺的建立[10]。
在實景平臺建立過程中,通過調用函數GE程序對象內部函數獲取主程序句柄和視圖窗口句柄;為使GE視圖能自動適應自編程序視圖窗口大小,需首先利用已得到的主程序句柄和視圖窗口句柄,通過Windows API函數Get Client Rect()獲取GE主窗口和視圖窗口尺寸,以此計算相對于視圖窗口大小主窗口應有的擴展像素值,然后調用MoveWindow()函數改變GE主窗口尺寸,從而自動實現對GE視圖窗口大小的調整;以 Windows API函數Show Window()隱藏GE,采用SetParent()將其視圖窗口設置為自編制程序所屬子窗口,實現兩者融合;最后調用函數SetWindowPos()完成GE視圖窗口在自編軟件中的顯示,實現實景平臺的建立。

圖2 地球球體模型圖
通常情況下,數值模擬計算結果中的坐標均采用高斯坐標系,而GE要求以地理坐標(經緯度)給定坐標信息,因此必須進行坐標轉換。
地球近似一個球體,對于局部地表點地理坐標與局部高斯坐標的換算關系,可通過若干已知兩坐標對應關系的特征點P={P1,P2,…,Pi,…,PN}進行轉換。算法為分別以各特征點為基點進行獨立坐標轉換,再以距離加權方式進行算術平均得到最終換算結果。

首先以特征點Pi為基點對待求點Q所對應的地理坐標進行求解,然后用兩點間距離的倒數wi為權重,對以N個特征點為基點得到的地理坐標進行算術平均,得到Q點最終的地理坐標(αQ,φQ):


3-a 矯正顯示GE地形前 3-b 矯正顯示GE地形后
缺省狀態下,GE顯示的地形尤其是水域地形與實際值存在較大偏差,為校正顯示地形,根據實測數據或工程后局部設計的地形資料,按指定圖例繪制并輸出模型域水下地形填充圖(陸域部分采用透明化處理避免貼圖時遮擋GE顯示內容),以
為添加與工程平面布置相關的附加地理信息,需通過GE API在指定位置創建與工程相關的符合KML格式的疊加元素對象。點、線、面對象以
現實生活中人們通過對表面漂浮物在一段時段內位置的連續變化而感知水體流動,這種對流場描述的拉格朗日法比歐拉法(定點描述流速變化)更符合一般的認識習慣,以下用拉格朗日法對流場進行動態模擬。
已知當前時刻所有示蹤粒子的分布位置,用質點追蹤法計算所有有效示蹤粒子在下一時刻新的空間位置,對新位置處的流速、流向,用模擬計算得到的前、后整點時刻已知的流場空間分布,以時間、空間插值求得[12]。有關流場質點的布設、快速追蹤算法、物理量插值計算等請參考文獻[12]。為保證示蹤粒子運動連續、平順,追蹤計算采用的時間間隔不宜過大。
流場動畫是通過對一系列連續變化的靜態流場矢量圖(流矢圖)逐幀顯示而實現的,因此,靜態流矢圖的生成是實現動畫的關鍵。
流矢圖的生成可采用幾何符號“箭頭”代表流體表面漂浮物(示蹤粒子),以直接可視化方式繪制。該方式較為簡單也是業界較為普遍的做法。根據示蹤粒子分布密度和動畫演示期間最大流速值,換算出代表單位流速的箭頭的現場長度,進一步確定各示蹤粒子所在位置處流速箭頭的繪制長度。按1.2節給出的坐標轉換方式,將當前時刻所有示蹤粒子以箭頭方式(
對插值后的所有時刻繪制流矢圖,存儲在GE臨時目錄。為避免多時刻同時顯示造成的視覺混亂,進行下一時刻流矢圖繪制前要確保本時刻流矢圖圖層被隱藏。
動畫制作分創建關鍵幀、GE動畫顯示、動畫幀圖片獲取、動畫制作4個步驟。創建關鍵幀就是通過時空插值加密繪制不同時刻流矢圖的過程,如2.1節所述;GE動畫顯示采用GE API獲取保存在GE臨時目錄中所有時刻的流場圖層,通過函數按順序逐層顯示流場圖,實現流場動畫;動畫關鍵幀的獲取是在GE動畫顯示的同時,通過屏幕拷貝獲取指定區域的圖像并存儲為圖片文件;動畫制作對獲取的動畫幀圖片按時間順序逐幀壓縮制成影像文件[13]。
流場動畫影像文件可脫離專用軟件,用具有相應壓縮解碼的媒體播放器打開并演示。

圖4 自編可視化軟件圖形化用戶界面
為加速旅游產業發展,增加旅游項目,提高旅游品質,擬在紅塘灣淺水區以填海造陸方式建設臨空產業園。紅塘灣位于三亞灣西側,鄰接天涯海角,近岸有海南旅游航線,游艇來往頻繁,加上海南環島航路及小型貨輪近岸航道的穿越,水域通航環境復雜。人工島建設工程作為永久性建筑竣工后,會給對局部海域自然環境、通航條件帶來永久性影響。為優化平面布置,降低工程影響,最大限度保護岸灘穩定,對多種平面布置方案進行了潮流泥沙數值模擬研究。
針對平面設計方案潮流數值模擬結果,采用實景可視化方法對工程所在海區的流場進行動畫仿真,如圖4所示為推薦方案的實景可視化影像文件制作過程截圖。在展示流場的同時,視圖中清晰顯示了工程所在位置處的地理、通航環境圖,包括附加實測地形、岸線、近海島嶼、人工島、環島航路、小型貨輪近岸航道、紅塘灣錨地、紅塘灣油氣碼頭及航道等,工程所在海域周邊地理信息及相對位置顯示清晰、通航環境一目了然,有利于輔助判斷工程建設對通航環境的影響。通過視角變換,既可觀察大范圍宏觀流場,也可查看局部流場細節,能多視角分析工程前后流場變化,幫助科研人員判斷方案效果。
采用嵌入GE方式進行軟件開發,避免了對地理信息圖形平臺的額外構建,能直接利用GE提供的豐富的基礎地理信息數據,顯示工程所在位置處的基本地理要素。將模型實測地形圖融合,達到對局部最新地形顯示更新的目的。調用GE API以插入幾何對象方式,實現對流場的直接仿真。實景可視化將地理實景、通航環境與流場仿真有機結合,現實效果良好。
實景可視化不僅能在水運工程領域應用,也可向其他領域推廣,如在水利工程尤其是大范圍洪水演進中得到應用。