張 昊 蒲 浩 胡光常 劉江濤
(1.中南大學(xué)土建學(xué)院,湖南長沙 410075;2.中鐵二院工程集團有限責(zé)任公司,四川成都 610031)
鐵路方案展示、評審、信息化管理、環(huán)境評估、安全審計等工作,需要構(gòu)建大場景鐵路三維仿真平臺。目前鐵路三維可視化多采用以下方法:
(1)文獻[1]利用CAD建立三維模型,利用3DS MAX等圖形處理軟件對模型進行后期處理,完成鐵路的三維可視化。該方法在3DSMAX等圖形處理軟件下的手工操作還比較多,費時費力;一旦設(shè)計有了任何調(diào)整和修改,花很多時間和精力建立的鐵路三維模型就只能作廢,要重新建模,重新進行后期處理。
(2)文獻[2]利用OpenGL技術(shù)搭建鐵路三維場景。該方法可以快速高效的實現(xiàn)具有較強真實感的鐵路三維場景的繪制和交互式漫游。但OpenGL作為底層渲染API,主要致力于圖形硬件特性的抽象實現(xiàn),對于數(shù)據(jù)的空間組織能力在本質(zhì)上還是顯得過于簡單和弱小。因此該方法較適于局部鐵路三維場景的展示。
因此,大規(guī)模鐵路三維場景可視化技術(shù)值得研究。本文基于OSG開發(fā)了鐵路三維實時交互式可視化平臺。該平臺可以實現(xiàn)大范圍鐵路三維場景的快速構(gòu)建,具有交互式漫游,場景編輯,信息查詢等功能。
OSG(Open Scene Graph)是一個跨平臺的開源場景圖形程序開發(fā)接口(API),內(nèi)核 API封裝了全部的OpenGL函數(shù)功能,包含OpenGL最新擴展,實時渲染最優(yōu)化。用于實時視景仿真、虛擬現(xiàn)實、圖形特效、可視化計算等方面的研究。廣泛支持目前流行的2D、3D數(shù)據(jù)格式。
OSG采用包圍體層次(Bounding Volume Hierarchy)來實現(xiàn)場景圖形管理,并采用樹狀結(jié)構(gòu)保存信息。這種場景圖形BVH樹不僅可以正確地表達場景圖形的信息組成,還可以加速場景對象的裁剪、相交測試、碰撞檢測等一系列操作。此外,OSG場景樹中定義了的大量功能節(jié)點,如空間變換節(jié)點(Transform),細節(jié)層次節(jié)點(LOD)、開關(guān)節(jié)點(Switch)、動態(tài)調(diào)度節(jié)點(PagedLod)等。開發(fā)者可以根據(jù)三維場景中各種模型的特點選擇不同的功能節(jié)點,實現(xiàn)場景的有效組織?;诖?本文采用樹形結(jié)構(gòu)組織鐵路三維場景,如圖1所示。
圖1 鐵路三維場景結(jié)構(gòu)
如何快速建立大規(guī)模地形模型并實現(xiàn)海量數(shù)據(jù)的有效組織和管理,是實現(xiàn)鐵路場景三維可視化的基礎(chǔ)。鐵路線路往往長達數(shù)百甚至上千公里,沿線地形數(shù)據(jù)動輒數(shù)GB甚至幾十GB。顯然一次性將數(shù)GB甚至更多的數(shù)據(jù)讀入內(nèi)存在當(dāng)前技術(shù)條件下是不現(xiàn)實的。需要對數(shù)據(jù)進行分頁處理,根據(jù)視點位置動態(tài)加載適當(dāng)精細層次的地形,在不影響仿真效果的前提下減小載入內(nèi)存中的數(shù)據(jù)量。
(1)建立地形分頁數(shù)據(jù)庫
建立地形數(shù)據(jù)庫需要高程和影像數(shù)據(jù),高程數(shù)據(jù)一般源自航測或外業(yè)勘測地形數(shù)據(jù);影像數(shù)據(jù)可采用航拍或衛(wèi)星遙感影像,也可采用虛擬紋理。構(gòu)建地形數(shù)據(jù)庫前需統(tǒng)一影像文件和高程文件的坐標(biāo)系統(tǒng),對原始數(shù)據(jù)進行坐標(biāo)校正等處理。按照四叉樹結(jié)構(gòu)對原始數(shù)據(jù)進行分層分塊處理,建立多分辨率金字塔結(jié)構(gòu)的地形分頁數(shù)據(jù)庫。每一層由若干地形塊組成,每個地形塊對應(yīng)一個文件。層級越高,則分辨率越高,每個地形塊區(qū)域的范圍也越小,即:第N層分辨率為第N+1層的1/2,而每個地形塊的面積則為第N+1層的4倍。為便于組織管理,按照層數(shù)和地形塊在該層中的行列數(shù)命名文件,如圖2所示。
圖2 地形四叉樹分塊示意
(2)地形數(shù)據(jù)的動態(tài)調(diào)度
應(yīng)用OSG提供的DatabasePager類實現(xiàn)海量地形數(shù)據(jù)的動態(tài)調(diào)度。DatabasePager主要處理對象為PagedLOD節(jié)點。PagedLOD節(jié)點按照可視范圍,將多個子節(jié)點設(shè)置為復(fù)雜模型的多個細節(jié)層次。當(dāng)某些子節(jié)點對場景繪制長期沒有助益時,DatabasePager可以將這些子節(jié)點自動卸載,釋放空間;反之,也可以即時加載某些不存在內(nèi)存中的子節(jié)點,實現(xiàn)場景的動態(tài)調(diào)度。將地形分頁數(shù)據(jù)庫中的每個地形塊作為Paged-Lod節(jié)點的子節(jié)點加載到場景中,并根據(jù)地形塊所處的不同層級設(shè)置該其可見范圍。隨著視點的變化DatabasePager會自動加載當(dāng)前視域內(nèi)的地形分頁文件,并卸載長期不可見的地形數(shù)據(jù),釋放內(nèi)存。利用該方法動態(tài)調(diào)度地形分頁數(shù)據(jù),可實現(xiàn)大規(guī)模地形的流暢漫游,滿足三維可視化的需要。圖3為某鐵路沿線地形截圖。
圖3 地形場景
鐵路三維模型主要包括路基、橋隧站、附屬設(shè)施。
(1)路基
根據(jù)橫斷面設(shè)計信息,把路基按填挖高為零的斷面、橋梁起終斷面、隧道進出口斷面分為若干段落,在段落內(nèi)按一定間隔提取橫斷面,將這些橫斷面逐個相連,得到該路基段落的三維模型。模型面片組織方式為:依次取橫斷面上特征點,采用 OSG繪圖基元QUAD_STRIP繪制四邊形條帶,紋理的包裝模式采用重復(fù)貼圖(REPEAT)。
(2)橋隧站
鐵路橋梁按橋型主要分為:簡支梁橋、連續(xù)梁橋、拱橋、桁架橋和斜拉橋等。簡支梁橋和連續(xù)梁橋的建模較為簡單,建立梁身模型時,可依次找出具有代表性的橫斷面,將斷面逐個相連得到。建立橋梁墩臺模型時,首先根據(jù)線路平縱橫數(shù)據(jù)及橋梁孔跨信息計算墩臺位置,再根據(jù)墩臺形狀構(gòu)建模型。拱橋建模時,根據(jù)線路平縱橫數(shù)據(jù)以及拱軸線設(shè)計參數(shù),按一定間隔計算橋梁橫截面特征點坐標(biāo),前后截面對應(yīng)點相連得到。桁架橋和斜拉橋結(jié)構(gòu)比較復(fù)雜,本文綜合運用透明貼圖技術(shù)、布告板(Billboard)技術(shù)等建立桁架橋和斜拉橋模型。圖4為中承式拱橋、下承式桁架橋、連續(xù)梁橋和斜拉橋的模型效果。
圖4 橋梁模型效果
建立隧道模型時,按一定間隔計算橫斷面特征點坐標(biāo),前后斷面相連得到。車站站臺模型可采用類似方法構(gòu)建,站房模型可采用3dsmax等軟件建模后導(dǎo)入。
(3)附屬設(shè)施
附屬設(shè)施主要包括標(biāo)志標(biāo)牌,接觸網(wǎng)等。標(biāo)志標(biāo)牌主要包括橋梁標(biāo)牌、隧道標(biāo)牌、車站標(biāo)牌等。接觸網(wǎng)模型主要包括接觸網(wǎng)支柱、接觸懸掛、電力線等。這些附屬設(shè)施往往數(shù)量巨大,位置不同形狀相同,如果將每個附屬設(shè)施模型都創(chuàng)建實例載入內(nèi)存,將大大增加系統(tǒng)負擔(dān)。對于這類模型只需創(chuàng)建唯一的實例,利用矩陣變換節(jié)點(MatrixTransform)或位置變換節(jié)點(Position Attitude Transform)對其旋轉(zhuǎn)平移,在不同位置多次繪制,達到所需要的效果。從而大大地節(jié)約內(nèi)存空間,有效的減輕系統(tǒng)負擔(dān)。
地形模型和鐵路模型的融合是搭建鐵路三維場景的關(guān)鍵點和難點。針對地形分頁數(shù)據(jù)庫的特點,本文采用以下算法:檢索地形分頁數(shù)據(jù)庫,找出與路基邊界有疊加區(qū)域的地形文件,計算地形與路基重疊區(qū)域的邊界線,利用該地形文件三維點構(gòu)建Delaunay三角網(wǎng),并將重疊區(qū)域邊界線作為約束邊界嵌入Delaunay三角網(wǎng),最后剔除約束邊界內(nèi)部的三角形,實現(xiàn)線路模型與地形模型的融合。
(1)生成路基邊界
以橋隧起終斷面為分界斷面把線路分為若干個段落,每個段落內(nèi),按一定間距取橫斷面最外側(cè)點,構(gòu)建路基邊界多邊形,得到全線路基邊界多邊形數(shù)組。為便于后期計算,邊界點采用逆時針或順時針順序有序排列。
(2)計算地形與路基重疊區(qū)域邊界線
地形分頁數(shù)據(jù)庫中每個文件記錄一定矩形區(qū)域內(nèi)的地形數(shù)據(jù)。讀取分頁數(shù)據(jù)文件,獲取該文件所對應(yīng)地形區(qū)域的邊界。遍歷路基邊界多邊形數(shù)組,與地形邊界求交,計算重疊區(qū)域邊界線。路基多邊形與地形邊界均為空間多邊形,首先向XY平面投影,將空間多邊形求交轉(zhuǎn)化為平面多邊形求交,然后根據(jù)邊界線頂點性質(zhì)的不同,計算其高程值。如圖5所示,重疊區(qū)域邊界線頂點包括:A、a、3、4、5、6、b。其中 A 為地形邊界頂點在XY平面上的投影點,高程取自地形邊界頂點;3~6點為路基邊界頂點在XY平面上的投影點,高程取自路基邊界頂點;a、b為路基邊界線與地形邊界線交點,其高程由臨近路基邊界頂點高程值線性插值計算得到,圖中a、b點高程分別由2、3和6、7點插值得到。
圖5 重疊區(qū)域示意
(3)構(gòu)建約束Delaunay三角網(wǎng)并移除重疊區(qū)域。
利用以上計算結(jié)果,應(yīng)用OSG中的Delaunay Triangulator類,完成對地形的修改。主要函數(shù):構(gòu)建三角網(wǎng):triangulate;添加約束邊界:addInputConstraint;移除約束邊界內(nèi)部三角形:remove Internal Triangles。
該算法核心在于對地形數(shù)據(jù)庫中與路基有疊加的地形塊重新構(gòu)網(wǎng),其他大部分區(qū)域無需修改。通過實際應(yīng)用驗證,該算法可以快速完成對地形數(shù)據(jù)庫的修改,地形模型和鐵路模型融合效果良好,如圖6所示。
圖6 融合前后對比
場景交互是三維可視化平臺必不可少的功能。OSG提供了平臺無關(guān)性的GUI事件驅(qū)動支持,GUIEvent Handler類向開發(fā)者提供窗體系統(tǒng)的GUI事件接口?;诖?主要實現(xiàn)以下交互功能。
響應(yīng)鼠標(biāo)或鍵盤消息,實時修正場景相機觀察矩陣(View Matrix),對場景進行平移,旋轉(zhuǎn),縮放等操作,實現(xiàn)全方位不同角度瀏覽場景。也可指定漫游起終點里程及漫游速度,系統(tǒng)根據(jù)線路數(shù)據(jù)插值計算漫游路徑,實時設(shè)置相機相機觀察矩陣,模擬行車效果。
場景編輯主要包括地形編輯和橋梁編輯。地形數(shù)據(jù)中有時會存在高程異常點,造成地形模型存在不合理區(qū)域,影響三維可視化的整體效果??刹捎玫匦尉庉嫻δ?拾取高程異常點,修改高程值,消除其對三維場景的影響。橋梁編輯功能是指用戶可以拾取某座橋梁,更改其橋型孔跨尺寸等,系統(tǒng)根據(jù)更新后的數(shù)據(jù)構(gòu)建新的橋梁模型。
基于上述原理和方法,本文采用Open Scene Graph-2.6.0在Microsoft Visual Studio2005環(huán)境下開發(fā)了鐵路三維實時交互式可視化平臺。該平臺已成功用于成渝城際高速鐵路項目(如圖7所示)。
圖7 運行界面截圖
本文基于OSG三維渲染引擎,在對大場景地形建模、鐵路建模以及地形模型與鐵路模型融合等關(guān)鍵問題深入研究的基礎(chǔ)上,開發(fā)了鐵路大場景實時交互式可視化平臺。該平臺可以快速實現(xiàn)大規(guī)模鐵路三維場景的構(gòu)建,并具有交互式漫游,場景編輯,信息查詢等功能,場景瀏覽順暢,真實感較強。使用者即可以從全局的角度查看線路總體走向,也可專注于局部,瀏覽場景細部。該平臺即可以用于方案比選,便于決策者快速直觀的對方案作出評判,也可以用于項目三維展示或信息化管理,具有廣泛的應(yīng)用前景。
[1]蔣紅斐,詹振炎.鐵路線路三維整體模型構(gòu)建方法研究[J].東南大學(xué)學(xué)報(自然科學(xué)版),2003,31(1):87-90
[2]潘兵宏,許金良,楊少偉,等.公路三維建模應(yīng)用研究[J].西安公路交通大學(xué)學(xué)報,2001,21(1):49-51
[3]蒲 浩,宋占峰,詹振炎.鐵路線路設(shè)計中三維實時交互式仿真研究[J].中國鐵道科學(xué),2003,24(5):56-60
[4]蒲 浩,宋占峰,詹振炎.基于Delaunay三角網(wǎng)數(shù)字地面模型的路線三維建模方法[J].鐵道學(xué)報,2001,23(4):81-87
[5]李頂峰,伍衛(wèi)凡.基于OpenGL的磁浮鐵路實時三維可視化技術(shù)研究與實現(xiàn)[J].鐵道勘察.2008(2):39-42
[6]祖衛(wèi)國,鄧 非,梁經(jīng)勇.海量三維GIS數(shù)據(jù)可視化系統(tǒng)的實現(xiàn)研究[J].測繪通報,2008(7):39-41
[7]王 銳,錢學(xué)雷.OpenSceneGraph三維渲染引擎設(shè)計與實踐[M].北京:清華大學(xué)出版社,2009:366