高 銳,羅 訓(xùn)
(天津理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,天津 300384)
隨著我國(guó)經(jīng)濟(jì)、科技等各方面的迅猛崛起,近年來(lái)高鐵已經(jīng)成為我國(guó)的一張靚麗名片.2018年底,我國(guó)高鐵運(yùn)營(yíng)里程已經(jīng)超過(guò)2.9 萬(wàn)公里,占全球高鐵運(yùn)營(yíng)里程總和的三分之二以上,位居世界第一.2019年,計(jì)劃確保投產(chǎn)高鐵新線3200 公里[1].
近年來(lái),我國(guó)高鐵網(wǎng)的覆蓋面逐步擴(kuò)大,向西部地區(qū)延伸,那么高鐵建設(shè)面臨的自然環(huán)境更加復(fù)雜,長(zhǎng)大坡道地段比較多,比如在建的格庫(kù)、大西、西成等都存在這樣的問(wèn)題[2].當(dāng)列車在上下坡時(shí),如果因?yàn)槠露冗^(guò)大或者坡長(zhǎng)太長(zhǎng)而導(dǎo)致列車速度的變化過(guò)于劇烈,不僅會(huì)影響行車速度、行車安全、舒適度,還會(huì)因?yàn)轭l繁的加減速導(dǎo)致運(yùn)行費(fèi)用的增加[3].因此,地理環(huán)境對(duì)高鐵的影響也是不容忽視的.另外,面對(duì)復(fù)雜的地理環(huán)境和不良的氣候條件,給高鐵的建設(shè)增加了難度,不僅需要耗費(fèi)大量的人力、物力去實(shí)地勘察,而且還會(huì)增加時(shí)間周期,從而帶來(lái)更大的代價(jià).
在文獻(xiàn)[4]中,唐金金開(kāi)發(fā)了基于Web 單列高速列車運(yùn)行仿真系統(tǒng),并沒(méi)有進(jìn)行三維仿真.文獻(xiàn)[5]中,基于OSG 研究了道路三維場(chǎng)景組織與管理、道路建模等,一方面渲染效果不佳,另一方面沒(méi)有現(xiàn)成的三維地理信息,開(kāi)發(fā)難度大.另外,一些研究者理論計(jì)算分析了列車在長(zhǎng)大坡道上運(yùn)行時(shí)坡度、列車運(yùn)行速度、監(jiān)控制動(dòng)距離等的關(guān)系[2].還有一些僅僅給出了場(chǎng)景建模方法[6,7].那么,虛幻引擎Unreal Engine 擁有強(qiáng)大的功能、高質(zhì)量逼真的渲染效果,以極高的幀數(shù)渲染復(fù)雜場(chǎng)景,對(duì)高鐵模擬來(lái)說(shuō)是一個(gè)非常好的工具.
在高鐵的仿真系統(tǒng)設(shè)計(jì)過(guò)程中,仿真模型的建立是一項(xiàng)重要的工作,建立的高鐵仿真模型如圖1所示.
圖1 高鐵仿真模型
高鐵仿真模型主要包括幾何模型、高鐵動(dòng)力學(xué)模型、Unreal Engine 引擎和顯示輸出4 部分.幾何模型包括高鐵模型和場(chǎng)景模型,其中場(chǎng)景模型包括列車行駛的場(chǎng)景、地形、植被等;高鐵動(dòng)力學(xué)模型首先將高鐵列車抽象為繩體模型,再通過(guò)動(dòng)力學(xué)分析來(lái)計(jì)算高鐵速度與坡度和坡長(zhǎng)的關(guān)系以及列車在變坡點(diǎn)的受力情況;在Unreal Engine 引擎中,通過(guò)對(duì)高鐵藍(lán)圖、UI 控件藍(lán)圖的相關(guān)節(jié)點(diǎn)進(jìn)行連接,實(shí)現(xiàn)高鐵的運(yùn)行、相關(guān)參數(shù)顯示、視角切換、小地圖等,再經(jīng)過(guò)引擎渲染部署到VIVE 沉浸式頭盔中.
高鐵模型的構(gòu)建包括高鐵列車外殼模型、車內(nèi)座椅以及操作臺(tái)和高鐵軌道建模.另外,對(duì)于車體、軌道等不同的材質(zhì),還需要用不同的材質(zhì)貼圖來(lái)進(jìn)行修飾.對(duì)于建模工具,采用Maya 進(jìn)行建模,相比其他建模軟件而言,它的可移植性強(qiáng)、可拓展性強(qiáng),并且由于它在角色建模方面比較領(lǐng)先,所以它的曲面建模會(huì)更好,更適合高鐵多曲面的特性.圖2、圖3展示了高鐵廂體模型和整列車體模型.
圖2 高鐵廂體模型
圖3 高鐵整體模型
鑒于高鐵的質(zhì)量分布比較均勻、動(dòng)力分散較為均
衡,為了盡可能的保留高鐵列車的基本屬性以保證列車運(yùn)行仿真計(jì)算的精度,那么采用一種繩體模型[4].該模型將高鐵看作質(zhì)量均勻、長(zhǎng)為L(zhǎng)且具有動(dòng)力的繩體.其中L為列車長(zhǎng)度.本文以凸坡為例進(jìn)行分析.
1.2.1 非變坡點(diǎn)受力分析
1)列車上坡
當(dāng)列車上坡時(shí),受到列車牽引力F、運(yùn)行阻力f和列車自身重力沿運(yùn)行反方向的分力Gx的作用,因此所受合力為:
其中列車運(yùn)行阻力僅考慮基本阻力,不考慮空氣阻力等.
2)列車下坡
當(dāng)列車下坡時(shí),受到列車制動(dòng)力F'、運(yùn)行阻力f和列車自身重力沿運(yùn)行方向的分力G′x的作用,合力為:
以CHR3 動(dòng)車組為例,對(duì)CRH3 動(dòng)車組進(jìn)行惰性阻力試驗(yàn),得出列車惰性單位阻力[8]為:
其中,速度v的單位為km/h,f的單位為KN.
1.2.2 變坡點(diǎn)受力分析
列車在變坡點(diǎn)的受力分析如圖4.假設(shè)F為列車總牽引力(不考慮曲線牽引力),O點(diǎn)為凸坡變坡點(diǎn),α、β分別為下坡、上坡的坡度角,L1、L2分別為列車在α坡段和β坡段部分的長(zhǎng)度,F1、F2分別為F分散在α坡段和β坡段的牽引力,列車在α坡段和β坡段的重力分別為G1、G2,F1′、F2′分別為α坡段和β坡段由重力引起的坡道附加阻力,F0是L1、L2兩部分列車間的作用力.那么可得:
圖4 變坡點(diǎn)受力分析
根據(jù)繩體模型的特點(diǎn),列車在α坡段和β坡段的加速度大小相等,假設(shè)列車加速度為a,那么可得:
由于將列車看作動(dòng)力分布均勻的繩體模型,那么就可以將列車長(zhǎng)度和列車動(dòng)力分布視為成正比例關(guān)系,可得:
將式(5)、式(6)、式(10)、式(11)代入式(9)中,可得:
由于F1′、F2′已知,那么就可以計(jì)算出列車在變坡點(diǎn)的加速度(不考慮曲線阻力帶來(lái)的加速度):
1.3.1 場(chǎng)景模型構(gòu)建
場(chǎng)景是高鐵模型的載體.為了便于測(cè)試,在構(gòu)建場(chǎng)景時(shí),先創(chuàng)建一組上、下斜坡以便測(cè)試,再創(chuàng)建一些山地和植被.Unreal Engine 引擎自帶的Landscape 系統(tǒng)可以創(chuàng)建山脈、起伏或傾斜的地面等大型開(kāi)放的世界環(huán)境,并且可以修改其形狀和外觀.具體操作步驟為:① 在引擎的模式面板中選擇Landscape;② 選擇管理-選擇-新建地貌,創(chuàng)建基本地貌,調(diào)整位置、分辨率等參數(shù);③ 選擇雕刻-斜坡,創(chuàng)建一個(gè)上下坡;④ 選擇雕刻-雕刻,設(shè)置畫(huà)刷等參數(shù);⑤ 使用畫(huà)刷在創(chuàng)建的地貌上刷山地等其他地形;⑥ 利用腐蝕等工具對(duì)創(chuàng)建的地形進(jìn)行微調(diào);⑦ 創(chuàng)建地形材質(zhì),在材質(zhì)編輯器中添加紋理并連接相關(guān)節(jié)點(diǎn),然后將材質(zhì)賦予地形.圖5為地形場(chǎng)景.
圖5 地形場(chǎng)景
1.3.2 藍(lán)圖可視化腳本構(gòu)建
Unreal Engine 引擎中的藍(lán)圖可視化腳本系統(tǒng)是一套完整的游戲性腳本程序系統(tǒng),它使用基于藍(lán)圖節(jié)點(diǎn),包括實(shí)例、函數(shù)、變量、宏等,來(lái)創(chuàng)建龐雜的游戲性元素去完成對(duì)對(duì)象的驅(qū)動(dòng).藍(lán)圖包括關(guān)卡藍(lán)圖和藍(lán)圖類兩大類.其中,每個(gè)關(guān)卡擁有一個(gè)關(guān)卡藍(lán)圖,可以在關(guān)卡中引用并操作Actor、對(duì)關(guān)卡流送、檢查點(diǎn)等相關(guān)事務(wù)進(jìn)行管理,還可與關(guān)卡中拖放的藍(lán)圖類進(jìn)行交互,從而觸發(fā)相應(yīng)的事件等;藍(lán)圖類包含很多子類,可以創(chuàng)建Actor 類、Character 類、Player Controller 玩家控制器類、Game Mode 游戲模式類以及用于UI 顯示的控件藍(lán)圖類等等.
(1)高鐵藍(lán)圖
高鐵是研究的主體,在引擎中是主要的對(duì)象,所以需要對(duì)高鐵進(jìn)行驅(qū)動(dòng)來(lái)實(shí)現(xiàn)模擬仿真.具體步驟如下:① 創(chuàng)建一個(gè)Third Person 的藍(lán)圖模板;② 創(chuàng)建一個(gè)Character 藍(lán)圖類;③ 導(dǎo)入Maya 構(gòu)建的高鐵模型并添加到Character 藍(lán)圖類中作為被驅(qū)動(dòng)對(duì)象;④ 連接相關(guān)節(jié)點(diǎn)完成對(duì)象移動(dòng)、鼠標(biāo)等輸入響應(yīng)事件;⑤ 創(chuàng)建速度、時(shí)間、距離變量,連接變量及相關(guān)節(jié)點(diǎn)完成高鐵驅(qū)動(dòng)藍(lán)圖部分.主要的藍(lán)圖程序如圖6所示.
圖6 高鐵驅(qū)動(dòng)藍(lán)圖
(2)UI 控件藍(lán)圖
為了在頭盔和顯示器中顯示高鐵的實(shí)時(shí)數(shù)據(jù)和實(shí)現(xiàn)切換視角功能,需要?jiǎng)?chuàng)建控件藍(lán)圖.首先創(chuàng)建控件藍(lán)圖,在控件藍(lán)圖中布局文本控件、按鈕控件,并將它們與相應(yīng)的藍(lán)圖進(jìn)行綁定,圖7所示是速度文本藍(lán)圖.切換視角和退出藍(lán)圖如圖8所示.
實(shí)現(xiàn)切換視角功能需要在高鐵藍(lán)圖中添加不同視角的相機(jī),并且構(gòu)建不同視角的藍(lán)圖腳本以便于在控件藍(lán)圖中調(diào)用.側(cè)面視角的藍(lán)圖腳本如圖9所示.
1.3.3 引擎渲染
Unreal Engine 引擎具有實(shí)時(shí)逼真渲染的特點(diǎn).一方面由于具有基于物理的渲染技術(shù)、高級(jí)動(dòng)態(tài)陰影選項(xiàng)、光線追蹤功能、屏幕空間反射以及光照通道等;另一方面,引擎帶有自動(dòng)LOD 生成系統(tǒng),可以自動(dòng)決定
物體渲染的資源分配,減少不重要物體的面數(shù)和細(xì)節(jié)度,從而提高渲染效率.
圖7 速度文本藍(lán)圖
圖8 切換視角主要藍(lán)圖
圖9 側(cè)面視角藍(lán)圖腳本
本文采用CRH3 列車組的相關(guān)參數(shù)進(jìn)行測(cè)試,其中CRH3 動(dòng)車組為4 拖4 共8 節(jié)編組,車長(zhǎng)200 m,滿載總質(zhì)量為530 t,牽引總功率為8800 kW,再生制動(dòng)功率為8250 kW,最高運(yùn)營(yíng)速度350 km/h 測(cè)試坡度為15°、20°.
1)根據(jù)前文分析得到的公式對(duì)坡道上速度隨坡長(zhǎng)和坡度的關(guān)系進(jìn)行模擬測(cè)試.
本文采用以下算法規(guī)則:假設(shè)列車運(yùn)行單位長(zhǎng)度的加速度不變,把t0時(shí)刻的速度v0作為變坡點(diǎn)的初始速度分析列車的受力情況,利用式(1)或式(2)結(jié)合式(3)及相關(guān)動(dòng)力學(xué)方程式計(jì)算速度v1,由于牽引力和阻力都與速度有關(guān),所以將v1作為下一單位長(zhǎng)度的初始速度,重復(fù)上述步驟,以此類推.
列車上坡時(shí),處于牽引力運(yùn)行狀態(tài),將引擎中文本控件中的模擬值輸出為數(shù)據(jù)表格繪制圖表.
圖10展示了在上坡度為15°、20°時(shí)列車速度隨坡度、坡長(zhǎng)的變化關(guān)系.由圖可以看出,隨著坡長(zhǎng)的增大,列車速度逐漸變小;隨著坡度的變大,列車速度隨著坡長(zhǎng)的增大減小的越來(lái)越快.
列車下坡時(shí),處于制動(dòng)力運(yùn)行狀態(tài),將引擎中文本控件中的模擬值輸出為數(shù)據(jù)表格繪制圖表.
圖11展示了在下坡度為15°、20°時(shí)列車速度隨坡度、坡長(zhǎng)的變化關(guān)系.由圖可以看出,隨著坡長(zhǎng)的增大,列車速度逐漸變小;隨著坡度的增大,列車速度隨著坡長(zhǎng)的增大減小的越來(lái)越慢.
綜合上述結(jié)果另可知,列車下坡時(shí)速度的變化比上坡速度的變化更加大.由圖11可以發(fā)現(xiàn),在列車下坡時(shí),當(dāng)里程超過(guò)4 km 時(shí),速度減小的越來(lái)越快,并且當(dāng)達(dá)到一定坡長(zhǎng)的時(shí)候,列車速度會(huì)為0,理論上符合列車實(shí)際制動(dòng)需要的情況.
圖10 上坡時(shí)速度的變化情況
圖11 下坡時(shí)速度的變化情況
另外,通過(guò)將模擬得到的數(shù)據(jù)與理論計(jì)算得到的數(shù)據(jù)進(jìn)行對(duì)比,結(jié)果基本吻合,而且從直觀上也符合實(shí)際情況,進(jìn)一步說(shuō)明仿真模型的可行性.
2)系統(tǒng)運(yùn)行實(shí)時(shí)幀率
為了檢測(cè)系統(tǒng)運(yùn)行的流暢情況,實(shí)時(shí)顯示系統(tǒng)運(yùn)行幀率,在引擎中執(zhí)行鍵盤(pán)~鍵,打開(kāi)引擎控制臺(tái),輸入stat fps 和stat unit 命令,屏幕上顯示幀率等參數(shù),如圖12.
圖12 系統(tǒng)運(yùn)行幀率
根據(jù)實(shí)驗(yàn)顯示,幀率達(dá)到119 fps,系統(tǒng)運(yùn)行非常流暢,也和看到的實(shí)際運(yùn)行效果一致,也證明引擎選擇的正確性.圖13為切換視角上方的情況.
圖13 切換視角上方圖
本文提出了基于虛擬現(xiàn)實(shí)的高鐵運(yùn)動(dòng)仿真模型,通過(guò)Maya 和Unreal Engine 建立高鐵模型和仿真場(chǎng)景模型.將高鐵抽象成繩體模型對(duì)其進(jìn)行不同運(yùn)動(dòng)狀態(tài)下的受力分析,并在Unreal Engine 中進(jìn)行模擬,得到相關(guān)數(shù)據(jù),與理論計(jì)算的數(shù)據(jù)進(jìn)行對(duì)比,誤差非常微小,其可行性得到驗(yàn)證,為高鐵的選線、參數(shù)調(diào)整等提供了很好的可視化方案,具有一定的實(shí)用性和參考性.為高鐵研究和實(shí)際鋪設(shè)提供可視化的方法,也可以縮短周期和相應(yīng)成本,同時(shí)通過(guò)進(jìn)一步開(kāi)發(fā)也可以應(yīng)用于培訓(xùn)等教學(xué)工作當(dāng)中.本文后續(xù)可研究將坡道和曲線線路結(jié)合的更為復(fù)雜的高鐵仿真模擬.