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