王治中,張防修,楊 瑤,王宗敏
(1.鄭州大學(xué) 水利科學(xué)與工程學(xué)院,河南 鄭州 450001; 2.黃河水利科學(xué)研究院,河南 鄭州 450003)
凌汛災(zāi)害是黃河下游嚴(yán)重的自然災(zāi)害之一,對(duì)人民群眾的生命財(cái)產(chǎn)安全構(gòu)成極大威脅。 流凌過(guò)程的三維可視化對(duì)于分析冰凌布局、運(yùn)動(dòng)形態(tài)以及實(shí)現(xiàn)冰凌的監(jiān)測(cè)和預(yù)警具有建設(shè)性作用,可為有效評(píng)估防凌減災(zāi)措施、制定搶險(xiǎn)方案、提高防汛人員應(yīng)對(duì)凌汛災(zāi)情的能力等提供參考,對(duì)黃河智慧防凌減災(zāi)工作具有重大意義。 國(guó)內(nèi)外相關(guān)學(xué)者已對(duì)冰凌的形成機(jī)理、動(dòng)態(tài)監(jiān)測(cè)、動(dòng)力模型、預(yù)報(bào)模型等展開(kāi)了大量研究[1-4],但在凌情可視化顯示方面仍多以二維為主,缺乏三維表現(xiàn)力。 近年來(lái)大數(shù)據(jù)、云計(jì)算、傾斜攝影、虛擬現(xiàn)實(shí)等技術(shù)的出現(xiàn)為流凌過(guò)程三維動(dòng)態(tài)仿真提供了可能性。 叢沛桐等[5]通過(guò)耦合水動(dòng)力場(chǎng)與冰凌運(yùn)動(dòng)場(chǎng)對(duì)冰水流動(dòng)三維場(chǎng)景進(jìn)行虛擬仿真,為分析冰凌運(yùn)動(dòng)規(guī)律提供了思路;肖如林等[6]基于Multipatch 模型對(duì)冰凌進(jìn)行三維可視化分析,以若干個(gè)棱柱、棱錐體表示冰面范圍內(nèi)的冰凌,但并未實(shí)現(xiàn)三維動(dòng)態(tài)展示;Akinci 等[7]研究了水流與剛性物體間的交互問(wèn)題,但未涉及大范圍的流動(dòng)物體。 針對(duì)上述研究存在的局限性,本文提出一種結(jié)合二維冰水動(dòng)力學(xué)模型與三維可視化技術(shù)的黃河流凌過(guò)程三維動(dòng)態(tài)可視化系統(tǒng)的實(shí)現(xiàn)方法,以黃河內(nèi)蒙古河段頭道拐彎道流凌過(guò)程為例,展示該系統(tǒng)的應(yīng)用效果,以期為黃河流凌過(guò)程分析提供借鑒。
黃河流凌過(guò)程三維動(dòng)態(tài)可視化系統(tǒng)框架見(jiàn)圖1。①基于構(gòu)建的實(shí)測(cè)三維河道模型,通過(guò)冰水動(dòng)力學(xué)原理對(duì)黃河實(shí)際流凌過(guò)程進(jìn)行仿真模擬,從而獲取二維冰水動(dòng)學(xué)模型。 ②通過(guò)Unity3D 技術(shù)實(shí)現(xiàn)二維輸出信息在三維空間的動(dòng)態(tài)表達(dá),在三維實(shí)景基礎(chǔ)上模擬流凌的運(yùn)動(dòng)規(guī)律,形成包含冰凌、水體、河道的綜合三維智能動(dòng)態(tài)展示模型。 ③完善系統(tǒng)功能,使系統(tǒng)實(shí)現(xiàn)場(chǎng)景漫游、顯隱控制、信息查詢、二三維一體化展示等功能。
圖1 系統(tǒng)框架
二維冰水動(dòng)力學(xué)模型模擬計(jì)算與三維場(chǎng)景演示均以實(shí)測(cè)三維河道地形為基礎(chǔ),通過(guò)傾斜攝影和單波束測(cè)深等技術(shù)獲取影像數(shù)據(jù)和點(diǎn)云數(shù)據(jù)來(lái)創(chuàng)建三維河道模型,實(shí)測(cè)三維河道地形與模型局部計(jì)算網(wǎng)格見(jiàn)圖2。
圖2 實(shí)測(cè)三維河道地形與模型局部計(jì)算網(wǎng)格
3.1.1主要控制方程
(1)水動(dòng)力方程。 在淺水流動(dòng)假設(shè)下不考慮科氏力和風(fēng)應(yīng)力的影響,將守恒變量作為因變量形式表示的水動(dòng)力方程如下。
水流連續(xù)方程[8]:
式中:h為平均水深;t為時(shí)間;u、v分別為x、y方向上的流速;N為冰密集度;k′i為淹沒(méi)冰厚。
x方向動(dòng)量方程:
式中:g為重力加速度;γ為紊動(dòng)黏滯性系數(shù);Sox、Sfx、Six分別為x方向上的河床比降、摩阻坡度、水體受到的冰蓋摩擦力(無(wú)量綱)。
y方向動(dòng)量方程:
式中:Soy、Sfy、Siy分別為y方向上的河床比降、摩阻坡度、水體受到的冰蓋摩擦力(無(wú)量綱)。
(2)水內(nèi)冰濃度分布控制方程:
式中:Cv為冰花(水內(nèi)冰)含量,即單位長(zhǎng)度河道內(nèi)冰花體積占液體和冰花總體積之比;Ex、Ey分別為x、y方向上的熱擴(kuò)散系數(shù);Ca為流凌密度;ρi為結(jié)冰密度;B0為岸冰之間河寬;Li為結(jié)冰潛熱;A為過(guò)水?dāng)嗝婷娣e;φT為水體與周?chē)h(huán)境的單位面積熱交換量;α為冰花變?yōu)楦”谋壤禂?shù);vz為紊動(dòng)速度的豎向分量;ui為冰粒浮速。
(3)水溫控制方程:
式中:Tw為水溫;Jx、Jy分別為x、y方向上的擴(kuò)散通量;ρ為水的密度;Cp為比熱;Γ為綜合擴(kuò)散系數(shù)。
(4)二維浮冰濃度分布方程:
3.1.2方程離散與求解
采用有限體積法(FVM)對(duì)上述控制方程進(jìn)行離散化處理,通過(guò)網(wǎng)格劃分方法將研究區(qū)域劃分為若干個(gè)有限控制體,采用無(wú)結(jié)構(gòu)三角形與四邊形混合網(wǎng)格劃分河道,采用正交曲線四邊形網(wǎng)格劃分主槽,采用三角形計(jì)算網(wǎng)格劃分灘地。 二維網(wǎng)格由不重疊的格子(cell)組成,采用格心中心式(cell-centered)布置網(wǎng)格控制節(jié)點(diǎn)[9],通過(guò)賦予初始工況條件,計(jì)算相鄰網(wǎng)格的質(zhì)量交換值和動(dòng)量交換值,保證單元體滿足質(zhì)量和動(dòng)量守恒,從而進(jìn)行冰水動(dòng)力學(xué)模擬,具體的方程求解過(guò)程主要以黃河水利科學(xué)研究院數(shù)學(xué)模型研究室開(kāi)發(fā)的冰水動(dòng)力學(xué)計(jì)算程序?yàn)榛A(chǔ)進(jìn)行優(yōu)化與實(shí)現(xiàn)[10-11]。
C#語(yǔ)言規(guī)范嚴(yán)謹(jǐn)且適用于編寫(xiě)大量代碼,對(duì)Unity3D技術(shù)的應(yīng)用具有很好的支持性,因此主要采用Unity3D 技術(shù)和C#語(yǔ)言開(kāi)發(fā)黃河流凌過(guò)程三維動(dòng)態(tài)可視化系統(tǒng),采用Microsoft Visual Studio(VS)工具編寫(xiě)腳本程序。
3.2.1三維場(chǎng)景動(dòng)態(tài)可視化
(1)模型創(chuàng)建與優(yōu)化。 采用3DMAX 多邊形建模技術(shù)創(chuàng)建冰凌實(shí)體三維模型,將簡(jiǎn)單幾何體轉(zhuǎn)換為可編輯多邊形對(duì)象,通過(guò)頂點(diǎn)、邊、邊界、多邊形、元素等層級(jí)對(duì)幾何體進(jìn)行編輯與完善,不斷對(duì)模型進(jìn)行細(xì)化與光滑處理。 為豐富模型三維表現(xiàn)力,進(jìn)行UV 展開(kāi)及貼圖渲染,常用貼圖方法有圖片貼圖法和程序貼圖法,考慮到冰凌模型精度要求高且可復(fù)制性強(qiáng),本系統(tǒng)選擇圖片貼圖法進(jìn)行貼圖渲染[12]。 此外,考慮到流凌過(guò)程可視化場(chǎng)景范圍大,需要不斷調(diào)用和生成冰凌模型,大體量的冰凌模型直接影響系統(tǒng)運(yùn)行幀率,因此必須對(duì)冰凌模型進(jìn)行輕量化處理,處理方式主要包括刪除冰凌不可見(jiàn)面和合并冰凌模型材質(zhì)。
(2)文本數(shù)據(jù)讀取。 采用C#腳本代碼編寫(xiě)方法實(shí)現(xiàn)文本數(shù)據(jù)的讀取與儲(chǔ)存,進(jìn)而實(shí)現(xiàn)二維模型計(jì)算結(jié)果與冰凌實(shí)體三維模型的對(duì)接。 具體地,采用Excel宏語(yǔ)言Visual Basic for Application(VBA)進(jìn)行程序化處理以規(guī)范二維數(shù)據(jù)的表達(dá),再采用“某個(gè)文本文檔—文本某行—某個(gè)元素”的思路分別存儲(chǔ)文本、行、元素信息,從而能夠迅速且精確地獲取所需數(shù)據(jù)。
(3)動(dòng)態(tài)可視化。 采用預(yù)制體形式調(diào)用冰凌實(shí)體三維模型,由于實(shí)際流凌場(chǎng)景中數(shù)據(jù)規(guī)模龐大,需要反復(fù)實(shí)例化,因此采用對(duì)象池技術(shù)優(yōu)化模型以避免冰凌模型的反復(fù)創(chuàng)建和銷(xiāo)毀,一定程度上提高了系統(tǒng)性能。鑒于冰凌形態(tài)的復(fù)雜性,采用隨機(jī)變量法量化冰凌形態(tài)。 流速的控制基于系統(tǒng)讀取控制體的速度屬性值并轉(zhuǎn)換為實(shí)際速度來(lái)實(shí)現(xiàn),三維河流場(chǎng)景按照每一時(shí)刻文本文檔里實(shí)際流速的大小和方向進(jìn)行移動(dòng),至下一時(shí)刻重新讀取冰水屬性與對(duì)應(yīng)速度。 對(duì)于流凌密度的表達(dá),采用LocalScale 函數(shù)量化冰凌分布。 對(duì)于水溫的表達(dá),采用線渲染器將實(shí)際溫度轉(zhuǎn)換為0 ~255 之間的數(shù)值,所有控制節(jié)點(diǎn)的溫度均可用顏色深淺來(lái)表示。基于上述方法和技術(shù),系統(tǒng)可實(shí)現(xiàn)冰水、流速、流向、溫度等屬性信息在三維場(chǎng)景中的動(dòng)態(tài)可視化表達(dá)。
3.2.2系統(tǒng)功能實(shí)現(xiàn)
(1)場(chǎng)景漫游。 第一人稱視角漫游主要通過(guò)鼠標(biāo)、鍵盤(pán)輸入相關(guān)位置變換指令,實(shí)時(shí)更新攝像機(jī)的變換矩陣及觀察點(diǎn)的三維坐標(biāo)。 通過(guò)FlyCamera 腳本完成以上功能代碼并將該腳本附加到主攝像機(jī)上,通過(guò)點(diǎn)擊按鍵觸發(fā)Transform 類(lèi)執(zhí)行事件改變主攝像機(jī)位置實(shí)現(xiàn)三維場(chǎng)景的移動(dòng)。 基于roll-pitch-yaw 歐拉角系統(tǒng)以鼠標(biāo)拖動(dòng)一幀內(nèi)實(shí)際鼠標(biāo)移動(dòng)增量返回虛擬坐標(biāo)系的數(shù)值為旋轉(zhuǎn)速度因子實(shí)現(xiàn)三維場(chǎng)景的旋轉(zhuǎn)。 此外,系統(tǒng)能夠自由設(shè)定場(chǎng)景漫游速度,最終實(shí)現(xiàn)全方位、多速度、沉浸式的第一人稱自由漫游。
(2)信息查詢與顯隱控制。 在Unity3D 中對(duì)場(chǎng)景模型進(jìn)行特征編號(hào),主要對(duì)場(chǎng)景模型添加相應(yīng)的特征標(biāo)簽,通過(guò)bool 運(yùn)算判斷物體是否處于選中狀態(tài),獲取激活物體后將模型編號(hào)鏈接到物體屬性信息,使用UI 界面中Button 按鈕觸發(fā)查詢行為來(lái)查詢場(chǎng)景的具體信息,再對(duì)信息進(jìn)行解析呈現(xiàn),最終實(shí)現(xiàn)信息的實(shí)時(shí)查詢、統(tǒng)計(jì)、顯示功能。 采用模型編號(hào)剔除遮罩技術(shù)將不同物體設(shè)置成不同的Layer 進(jìn)行選擇性渲染,進(jìn)而實(shí)現(xiàn)場(chǎng)景物體的顯隱控制,方便相關(guān)人員對(duì)冰凌水體的運(yùn)動(dòng)規(guī)律進(jìn)行單獨(dú)研究與分析。
(3)二三維一體化展示與發(fā)布。 凌汛過(guò)程三維動(dòng)態(tài)展示具有多感知、可視化效果逼真、場(chǎng)景可操作性強(qiáng)等優(yōu)勢(shì),二維動(dòng)態(tài)展示能夠快速準(zhǔn)確地獲取原始數(shù)據(jù),直觀展示統(tǒng)計(jì)信息,因此采用三維動(dòng)態(tài)場(chǎng)景加載二維動(dòng)態(tài)輸出結(jié)果的方式實(shí)現(xiàn)二三維一體化展示。 本系統(tǒng)基于C#語(yǔ)言并采用MovieTexture 貼圖技術(shù)實(shí)現(xiàn)在Unity3D中固定位置的多個(gè)二維動(dòng)畫(huà)與三維動(dòng)態(tài)場(chǎng)景的同步播放、暫停和關(guān)閉隱藏,使二維動(dòng)態(tài)輸出結(jié)果在三維場(chǎng)景中同步展示。 本系統(tǒng)主要在PC 端發(fā)布并采用UGUI 進(jìn)行登錄界面設(shè)計(jì),進(jìn)而提高黃河流凌系統(tǒng)的安全性與實(shí)用性。
選擇黃河內(nèi)蒙古河段頭道拐彎道流凌過(guò)程為研究對(duì)象,該彎道位于內(nèi)蒙古托克托縣什四份村附近,河段長(zhǎng)9.8 km,河道初始流量采用封河期平均流量800 m3/s,初始水體溫度0 ℃,初始流凌密度0.1,初始?xì)鉁?8 ℃,模擬時(shí)長(zhǎng)約18 h,每3 min 輸出一次二維模擬結(jié)果文件,每個(gè)結(jié)果文件包含河道內(nèi)14 573 個(gè)數(shù)據(jù)點(diǎn)的坐標(biāo)、水位、流速、流向、流凌密度等屬性信息,部分屬性信息的二維冰水動(dòng)力學(xué)模擬結(jié)果見(jiàn)圖3 ~圖5??梢钥闯觯S著研究時(shí)段增加,該彎道的流凌密度、水深呈現(xiàn)增大趨勢(shì),在彎頂附近流冰聚集現(xiàn)象較為明顯,原因是水體與冰凌之間存在一定摩擦力,冰凌互相擠壓堆積使主槽蓄水量增大、水位壅高,洪水從主槽向?yàn)┑亓鲃?dòng),灘地的少部分水逐漸形成冰蓋。 分析圖5 可知,順直河道流速較快,而在彎道凹岸處水體和冰凌的慣性力以及堆冰堵塞導(dǎo)致流速較慢。
圖3 流凌密度的演變過(guò)程
圖4 水深的演變過(guò)程
圖5 流速的演變過(guò)程
將二維計(jì)算成果導(dǎo)入U(xiǎn)nity3D 進(jìn)行三維可視化設(shè)計(jì)與代碼編寫(xiě),通過(guò)代碼控制流速、流向、溫度等屬性信息的動(dòng)態(tài)展示,同時(shí)進(jìn)行了界面設(shè)計(jì)與開(kāi)發(fā)以提升場(chǎng)景的三維表現(xiàn)力,通過(guò)C#語(yǔ)言實(shí)現(xiàn)場(chǎng)景漫游、顯隱控制、信息查詢、二三維一體化展示等功能,系統(tǒng)二三維展示界面見(jiàn)圖6,圖中水體藍(lán)色越淺表示水溫越低,水溫較低的位置流凌密度相對(duì)越大,對(duì)比二維流凌密度分布與三維流凌分布結(jié)果,發(fā)現(xiàn)同一時(shí)刻二三維冰凌分布具有較好的一致性,驗(yàn)證了二三維一體化功能具有良好效果。
圖6 系統(tǒng)二三維展示界面
上述黃河流凌過(guò)程三維動(dòng)態(tài)可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方法,基于冰水動(dòng)力學(xué)原理直觀展示流凌過(guò)程的二
維動(dòng)態(tài)輸出結(jié)果,結(jié)合Unity3D 技術(shù)和C#語(yǔ)言實(shí)現(xiàn)二維流凌過(guò)程的三維空間表達(dá),系統(tǒng)在黃河內(nèi)蒙古河段頭道拐彎道流凌過(guò)程的模擬應(yīng)用中顯示了良好的交互功能與視覺(jué)效果,初步滿足實(shí)用性需求,對(duì)黃河智慧防凌中的推演預(yù)警工作具有一定借鑒意義。