張 昊 蒲 浩 胡光常 劉江濤
(1.中南大學土建學院,湖南長沙 410075;2.中鐵二院工程集團有限責任公司,四川成都 610031)
鐵路方案展示、評審、信息化管理、環境評估、安全審計等工作,需要構建大場景鐵路三維仿真平臺。目前鐵路三維可視化多采用以下方法:
(1)文獻[1]利用CAD建立三維模型,利用3DS MAX等圖形處理軟件對模型進行后期處理,完成鐵路的三維可視化。該方法在3DSMAX等圖形處理軟件下的手工操作還比較多,費時費力;一旦設計有了任何調整和修改,花很多時間和精力建立的鐵路三維模型就只能作廢,要重新建模,重新進行后期處理。
(2)文獻[2]利用OpenGL技術搭建鐵路三維場景。該方法可以快速高效的實現具有較強真實感的鐵路三維場景的繪制和交互式漫游。但OpenGL作為底層渲染API,主要致力于圖形硬件特性的抽象實現,對于數據的空間組織能力在本質上還是顯得過于簡單和弱小。因此該方法較適于局部鐵路三維場景的展示。
因此,大規模鐵路三維場景可視化技術值得研究。本文基于OSG開發了鐵路三維實時交互式可視化平臺。該平臺可以實現大范圍鐵路三維場景的快速構建,具有交互式漫游,場景編輯,信息查詢等功能。
OSG(Open Scene Graph)是一個跨平臺的開源場景圖形程序開發接口(API),內核 API封裝了全部的OpenGL函數功能,包含OpenGL最新擴展,實時渲染最優化。用于實時視景仿真、虛擬現實、圖形特效、可視化計算等方面的研究。廣泛支持目前流行的2D、3D數據格式。
OSG采用包圍體層次(Bounding Volume Hierarchy)來實現場景圖形管理,并采用樹狀結構保存信息。這種場景圖形BVH樹不僅可以正確地表達場景圖形的信息組成,還可以加速場景對象的裁剪、相交測試、碰撞檢測等一系列操作。此外,OSG場景樹中定義了的大量功能節點,如空間變換節點(Transform),細節層次節點(LOD)、開關節點(Switch)、動態調度節點(PagedLod)等。開發者可以根據三維場景中各種模型的特點選擇不同的功能節點,實現場景的有效組織。基于此,本文采用樹形結構組織鐵路三維場景,如圖1所示。

圖1 鐵路三維場景結構
如何快速建立大規模地形模型并實現海量數據的有效組織和管理,是實現鐵路場景三維可視化的基礎。鐵路線路往往長達數百甚至上千公里,沿線地形數據動輒數GB甚至幾十GB。顯然一次性將數GB甚至更多的數據讀入內存在當前技術條件下是不現實的。需要對數據進行分頁處理,根據視點位置動態加載適當精細層次的地形,在不影響仿真效果的前提下減小載入內存中的數據量。
(1)建立地形分頁數據庫
建立地形數據庫需要高程和影像數據,高程數據一般源自航測或外業勘測地形數據;影像數據可采用航拍或衛星遙感影像,也可采用虛擬紋理。構建地形數據庫前需統一影像文件和高程文件的坐標系統,對原始數據進行坐標校正等處理。按照四叉樹結構對原始數據進行分層分塊處理,建立多分辨率金字塔結構的地形分頁數據庫。每一層由若干地形塊組成,每個地形塊對應一個文件。層級越高,則分辨率越高,每個地形塊區域的范圍也越小,即:第N層分辨率為第N+1層的1/2,而每個地形塊的面積則為第N+1層的4倍。為便于組織管理,按照層數和地形塊在該層中的行列數命名文件,如圖2所示。

圖2 地形四叉樹分塊示意
(2)地形數據的動態調度
應用OSG提供的DatabasePager類實現海量地形數據的動態調度。DatabasePager主要處理對象為PagedLOD節點。PagedLOD節點按照可視范圍,將多個子節點設置為復雜模型的多個細節層次。當某些子節點對場景繪制長期沒有助益時,DatabasePager可以將這些子節點自動卸載,釋放空間;反之,也可以即時加載某些不存在內存中的子節點,實現場景的動態調度。將地形分頁數據庫中的每個地形塊作為Paged-Lod節點的子節點加載到場景中,并根據地形塊所處的不同層級設置該其可見范圍。隨著視點的變化DatabasePager會自動加載當前視域內的地形分頁文件,并卸載長期不可見的地形數據,釋放內存。利用該方法動態調度地形分頁數據,可實現大規模地形的流暢漫游,滿足三維可視化的需要。圖3為某鐵路沿線地形截圖。

圖3 地形場景
鐵路三維模型主要包括路基、橋隧站、附屬設施。
(1)路基
根據橫斷面設計信息,把路基按填挖高為零的斷面、橋梁起終斷面、隧道進出口斷面分為若干段落,在段落內按一定間隔提取橫斷面,將這些橫斷面逐個相連,得到該路基段落的三維模型。模型面片組織方式為:依次取橫斷面上特征點,采用 OSG繪圖基元QUAD_STRIP繪制四邊形條帶,紋理的包裝模式采用重復貼圖(REPEAT)。
(2)橋隧站
鐵路橋梁按橋型主要分為:簡支梁橋、連續梁橋、拱橋、桁架橋和斜拉橋等。簡支梁橋和連續梁橋的建模較為簡單,建立梁身模型時,可依次找出具有代表性的橫斷面,將斷面逐個相連得到。建立橋梁墩臺模型時,首先根據線路平縱橫數據及橋梁孔跨信息計算墩臺位置,再根據墩臺形狀構建模型。拱橋建模時,根據線路平縱橫數據以及拱軸線設計參數,按一定間隔計算橋梁橫截面特征點坐標,前后截面對應點相連得到。桁架橋和斜拉橋結構比較復雜,本文綜合運用透明貼圖技術、布告板(Billboard)技術等建立桁架橋和斜拉橋模型。圖4為中承式拱橋、下承式桁架橋、連續梁橋和斜拉橋的模型效果。

圖4 橋梁模型效果
建立隧道模型時,按一定間隔計算橫斷面特征點坐標,前后斷面相連得到。車站站臺模型可采用類似方法構建,站房模型可采用3dsmax等軟件建模后導入。
(3)附屬設施
附屬設施主要包括標志標牌,接觸網等。標志標牌主要包括橋梁標牌、隧道標牌、車站標牌等。接觸網模型主要包括接觸網支柱、接觸懸掛、電力線等。這些附屬設施往往數量巨大,位置不同形狀相同,如果將每個附屬設施模型都創建實例載入內存,將大大增加系統負擔。對于這類模型只需創建唯一的實例,利用矩陣變換節點(MatrixTransform)或位置變換節點(Position Attitude Transform)對其旋轉平移,在不同位置多次繪制,達到所需要的效果。從而大大地節約內存空間,有效的減輕系統負擔。
地形模型和鐵路模型的融合是搭建鐵路三維場景的關鍵點和難點。針對地形分頁數據庫的特點,本文采用以下算法:檢索地形分頁數據庫,找出與路基邊界有疊加區域的地形文件,計算地形與路基重疊區域的邊界線,利用該地形文件三維點構建Delaunay三角網,并將重疊區域邊界線作為約束邊界嵌入Delaunay三角網,最后剔除約束邊界內部的三角形,實現線路模型與地形模型的融合。
(1)生成路基邊界
以橋隧起終斷面為分界斷面把線路分為若干個段落,每個段落內,按一定間距取橫斷面最外側點,構建路基邊界多邊形,得到全線路基邊界多邊形數組。為便于后期計算,邊界點采用逆時針或順時針順序有序排列。
(2)計算地形與路基重疊區域邊界線
地形分頁數據庫中每個文件記錄一定矩形區域內的地形數據。讀取分頁數據文件,獲取該文件所對應地形區域的邊界。遍歷路基邊界多邊形數組,與地形邊界求交,計算重疊區域邊界線。路基多邊形與地形邊界均為空間多邊形,首先向XY平面投影,將空間多邊形求交轉化為平面多邊形求交,然后根據邊界線頂點性質的不同,計算其高程值。如圖5所示,重疊區域邊界線頂點包括:A、a、3、4、5、6、b。其中 A 為地形邊界頂點在XY平面上的投影點,高程取自地形邊界頂點;3~6點為路基邊界頂點在XY平面上的投影點,高程取自路基邊界頂點;a、b為路基邊界線與地形邊界線交點,其高程由臨近路基邊界頂點高程值線性插值計算得到,圖中a、b點高程分別由2、3和6、7點插值得到。

圖5 重疊區域示意
(3)構建約束Delaunay三角網并移除重疊區域。
利用以上計算結果,應用OSG中的Delaunay Triangulator類,完成對地形的修改。主要函數:構建三角網:triangulate;添加約束邊界:addInputConstraint;移除約束邊界內部三角形:remove Internal Triangles。
該算法核心在于對地形數據庫中與路基有疊加的地形塊重新構網,其他大部分區域無需修改。通過實際應用驗證,該算法可以快速完成對地形數據庫的修改,地形模型和鐵路模型融合效果良好,如圖6所示。

圖6 融合前后對比
場景交互是三維可視化平臺必不可少的功能。OSG提供了平臺無關性的GUI事件驅動支持,GUIEvent Handler類向開發者提供窗體系統的GUI事件接口。基于此,主要實現以下交互功能。
響應鼠標或鍵盤消息,實時修正場景相機觀察矩陣(View Matrix),對場景進行平移,旋轉,縮放等操作,實現全方位不同角度瀏覽場景。也可指定漫游起終點里程及漫游速度,系統根據線路數據插值計算漫游路徑,實時設置相機相機觀察矩陣,模擬行車效果。
場景編輯主要包括地形編輯和橋梁編輯。地形數據中有時會存在高程異常點,造成地形模型存在不合理區域,影響三維可視化的整體效果。可采用地形編輯功能,拾取高程異常點,修改高程值,消除其對三維場景的影響。橋梁編輯功能是指用戶可以拾取某座橋梁,更改其橋型孔跨尺寸等,系統根據更新后的數據構建新的橋梁模型。
基于上述原理和方法,本文采用Open Scene Graph-2.6.0在Microsoft Visual Studio2005環境下開發了鐵路三維實時交互式可視化平臺。該平臺已成功用于成渝城際高速鐵路項目(如圖7所示)。

圖7 運行界面截圖
本文基于OSG三維渲染引擎,在對大場景地形建模、鐵路建模以及地形模型與鐵路模型融合等關鍵問題深入研究的基礎上,開發了鐵路大場景實時交互式可視化平臺。該平臺可以快速實現大規模鐵路三維場景的構建,并具有交互式漫游,場景編輯,信息查詢等功能,場景瀏覽順暢,真實感較強。使用者即可以從全局的角度查看線路總體走向,也可專注于局部,瀏覽場景細部。該平臺即可以用于方案比選,便于決策者快速直觀的對方案作出評判,也可以用于項目三維展示或信息化管理,具有廣泛的應用前景。
[1]蔣紅斐,詹振炎.鐵路線路三維整體模型構建方法研究[J].東南大學學報(自然科學版),2003,31(1):87-90
[2]潘兵宏,許金良,楊少偉,等.公路三維建模應用研究[J].西安公路交通大學學報,2001,21(1):49-51
[3]蒲 浩,宋占峰,詹振炎.鐵路線路設計中三維實時交互式仿真研究[J].中國鐵道科學,2003,24(5):56-60
[4]蒲 浩,宋占峰,詹振炎.基于Delaunay三角網數字地面模型的路線三維建模方法[J].鐵道學報,2001,23(4):81-87
[5]李頂峰,伍衛凡.基于OpenGL的磁浮鐵路實時三維可視化技術研究與實現[J].鐵道勘察.2008(2):39-42
[6]祖衛國,鄧 非,梁經勇.海量三維GIS數據可視化系統的實現研究[J].測繪通報,2008(7):39-41
[7]王 銳,錢學雷.OpenSceneGraph三維渲染引擎設計與實踐[M].北京:清華大學出版社,2009:366