高速列控系統(tǒng)三維視景子系統(tǒng)設(shè)計與實現(xiàn)
0 引言
基于三維視景的仿真系統(tǒng)構(gòu)造了一個可視化的列車運行環(huán)境,能夠全程模擬列車的真實運行情況,為使用者提供了真實體驗和方便自然的人機交互,多套仿真系統(tǒng)聯(lián)網(wǎng)可以為列車運行間隔、閉塞制式、進路控制以及列車運行圖的設(shè)計等多方面的研究提供強有力的驗證手段,為我國自主開發(fā)CTCS搭建技術(shù)創(chuàng)新平臺有重大意義。
三維視景的構(gòu)建與驅(qū)動,比較基本的方法是采用OpenGL實現(xiàn)[1],其缺點是不能利用高效的建模工具制作的三維模型,所以三維場景逼真度以及場景的大小都受到很大的限制。而MultiGen公司的軟件Creator和Vega提供了完整的、成熟的模型制作、加載以及視景驅(qū)動功能,所以很多研究者都是用這種方式建立三維視景系統(tǒng)[2,3].但是Creator和Vega是商業(yè)軟件,因此要承擔(dān)較高的研究和開發(fā)成本。與其它建模軟件,如3 D SMAX(以下簡稱MAX)相比,Creator建立的模型通用性很弱,只能在MultiGen公司的平臺下使用,并且用Creator建模,在模型精細(xì)程度、燈光效果等方面也相差較遠(yuǎn)[4].同時Vega封裝較嚴(yán)格,因此在軟件開發(fā)自由度以及二次開發(fā)上都面臨不少的限制。
OGRE(Objected-Oriented GraphicsRendering Engine)是一個用C++開發(fā)的面向場景、非常靈活的3D引擎,它旨在讓開發(fā)人員更容易、更直接的利用硬件加速的3D圖形系統(tǒng)開發(fā)應(yīng)用。因此,本文使用基于OGRE的3D引擎,采用MAX建模,構(gòu)造了鄭州-西安高速鐵路路線逼真的三維視景系統(tǒng)。
1.大規(guī)模地景的加載與顯示
鄭西高速鐵路線的三維視景系統(tǒng)的地理范圍是從鄭州到西安的長約五百公里的高速鐵路線,對視景仿真來說,這涉及到大地景的加載與顯示技術(shù)。
列車駕駛員視點雖然只能沿著鐵路線移動,但是視點卻一直貼近地面上的景物,因此全部鐵路沿線的模型都需要非常精細(xì)。這提出了三個問題:
鐵路沿線模型建模需要非常精細(xì);精細(xì)的模型需要占用較大內(nèi)存,因此需要系統(tǒng)能夠動態(tài)加載模型;為了減少內(nèi)存占用,需要使用大型網(wǎng)格多分辨率技術(shù)。
第一個問題第二節(jié)詳細(xì)討論。
多分辨率技術(shù)以網(wǎng)格簡化為基礎(chǔ),通過構(gòu)造原始網(wǎng)格模型的多個逼近表示,結(jié)合硬件資源的繪制能力和繪制誤差選擇最優(yōu)的細(xì)節(jié)層次(level-of-detail,LOD)進行繪制,并在保證繪制速度的前提下盡可能提高繪制質(zhì)量。其涉及內(nèi)容主要包括:1)多分辨率表示的設(shè)計,如LOD的組織和切換;2)多分辨率表示的構(gòu)建,如按照層次結(jié)構(gòu)自底向上生成所有LOD;3)多分辨率表示的繪制,如根據(jù)硬件繪制能力、光照參數(shù)和觀測參數(shù)選擇、加載和繪制LOD.
對于地形可視化技術(shù)而言,三維地形數(shù)字高程數(shù)據(jù)(DEM)的合理有效的組織是后續(xù)地形簡化的基礎(chǔ)。隨著地形場景范圍的不斷擴大,仿真所用地形數(shù)據(jù)量不斷激增,這些海量數(shù)據(jù)已遠(yuǎn)遠(yuǎn)超過了計算機的實時處理能力,使得地形數(shù)據(jù)無法一次性調(diào)入內(nèi)存。為了實現(xiàn)大規(guī)模場景的實時繪制,需要對數(shù)據(jù)的組織結(jié)構(gòu)進行處理,還要對數(shù)據(jù)的調(diào)度過程進行高效率的管理。因此,如何高效、實時的處理、調(diào)度數(shù)據(jù),同時保證畫面幀速率的穩(wěn)定性成為了亟待解決的關(guān)鍵問題。
在數(shù)據(jù)組織方面,地形三維可視化場景數(shù)據(jù)通常采用樹形結(jié)構(gòu),利用樹形結(jié)構(gòu)來組織數(shù)據(jù);在數(shù)據(jù)存儲方面,由于海量數(shù)據(jù)不能一次性讀入內(nèi)存,故需要對數(shù)據(jù)在外存模式下的訪問頻率盡可能低,從而盡可能提高CPU運行效率。海量數(shù)據(jù)的訪問模式應(yīng)該滿足:在同一區(qū)域數(shù)據(jù)的存儲具有很好的連續(xù)性;按照不同的LOD逐層訪問,同層或相鄰層的數(shù)據(jù)應(yīng)具有良好的局部性;在數(shù)據(jù)動態(tài)調(diào)度方面,為解決海量數(shù)據(jù)與計算機內(nèi)存容量之間的矛盾,目前普遍采用的數(shù)據(jù)調(diào)度方法都是基于外存算法進行優(yōu)化和改進。
利用多線程和基于外存的方法來進行可見性計算與數(shù)據(jù)操作,使用基于視點的可見性判斷作為數(shù)據(jù)預(yù)讀取策略,動態(tài)加載數(shù)據(jù),系統(tǒng)內(nèi)存緩沖區(qū)存儲新近使用的幾何數(shù)據(jù)。
2.3DS MAX精細(xì)建模
對于普通的三維視景建模來說,MAX與Creator都能達(dá)到所需要的構(gòu)建精度要求,但在構(gòu)建逼真度方面Creator的表現(xiàn)不及MAX.對于高精度模型的構(gòu)建,Creator除了制作軍事場景和一些復(fù)雜人物模型之外,在其他方面極少會用到,對于制作具有高圓滑度的細(xì)節(jié)部分,Creator制作起來也不如MAX的質(zhì)量高。而MAX在這個方面運用得非常成熟,使用MAX更為流行。它提供很好的工具,比如說蒙皮、骨骼等,動畫角色的動作、表情等的細(xì)膩表達(dá),通過MAX可以展現(xiàn)得非常逼真。
多重紋理技術(shù)是能夠增強模型渲染逼真度的一個技術(shù)。三維圖形是由稱作立體多邊形的面組合構(gòu)成的,但為了再現(xiàn)立體表面的花樣和質(zhì)地的感覺,有時在多邊形中粘貼稱為紋理的圖像。疊合了多個紋理圖像,一次性地重疊多個紋理,同時進行繪畫的方法就是多重紋理。
一次性多重貼圖混合是顯卡等硬件對應(yīng)才能夠使用的功能,由于可以重疊多個紋理并同時繪畫,所以其速度快,它可以將幾次渲染合為一次來進行,在這個渲染過程中, 可以在不同的紋理單元分別放入第1次、第2次、第3次需要渲染的對象。當(dāng)程序向屏幕繪圖時,將這些渲染結(jié)果疊加起來,最終結(jié)果顯示到屏幕。在硬件不對應(yīng)的情況下,用軟件進行多次重復(fù)紋理繪畫的多重貼圖混合。
3.快速渲染小物體
對于視景仿真系統(tǒng)來說,逼真度是非常重要的一環(huán),因此,高度復(fù)雜的場景就不可缺少,樹木和草覆蓋在地面上能夠起到很好的效果,這些樹木和草通常被稱作小物體(widget)。
實際上,用作widget的最有效的模型通常只使用少數(shù)幾個雙面多邊形和單張的紋理。這種簡單性使我們可以渲染比其他方法多得多的實例。但是由于樹和草的數(shù)量比較大,現(xiàn)在的硬件可以渲染大量的三角形,但是只有當(dāng)渲染的單位是有上千個頂點組成的塊時才能得到最好的性能表現(xiàn)。這是因為大量的單個三角形從內(nèi)存發(fā)送到顯卡需要占用比較大的顯存帶寬,而且由于GPU的處理速度非???,就會造成GPU在等待小物體的頂點數(shù)據(jù)的情形出現(xiàn),嚴(yán)重影響顯示效率。
一個高效的解決辦法是,對場景中所有的小物體進行合理化分組,隨著視點的變化渲染不同分組的小物體。二叉空間劃分法(Binary Space Partitioning,BSP)是一種非常有效的分組方式,使得場景可以是非規(guī)則的形狀,而不用花費額外的內(nèi)存來存儲空的節(jié)點。這種方法遞歸地將空間使用超平面劃分為凸面體集合,引出了借助于稱之為BSP樹的樹形數(shù)據(jù)結(jié)構(gòu)的場景表示。二維(稱為四元樹,Quad Tree)和三維(k-d樹)BSP樹及其變體是計算機圖形學(xué)中使用得十分重要的數(shù)據(jù)結(jié)構(gòu)。最初,整個區(qū)域被定義為BSP樹的根;之后,繼續(xù)劃分區(qū)域,一旦把凹形區(qū)域劃分為兩個凸形區(qū)域(在最好情況下)或凹多邊形,命名這些區(qū)域,它們成為其父結(jié)點的子節(jié)點,父結(jié)點實際上代表了整個區(qū)域。
4.系統(tǒng)結(jié)構(gòu)及仿真結(jié)果
OGRE是一個開源的三維引擎,這個類庫隱藏了底層系統(tǒng)庫OpenGL和Direct3D的所有細(xì)節(jié),提供了一個基于世界對象和其它直觀類的接口,極大的提高了開發(fā)效率。本系統(tǒng)采用了OGRE 1.7.3版本,開發(fā)平臺采用Microsoft Visual Studio 2010.硬件平臺采用的是Intel Xeon 2.5GHz CPU,3G RAM,WinFast GTX 460顯示卡,操作系統(tǒng)采用Windows7 Professional.本系統(tǒng)是以鄭州-西安高速客運專線為仿真對象構(gòu)建的視景系統(tǒng)的顯示效果,列車運行公里標(biāo)、速度、進路信息以及信號機顯示參數(shù)由高速列控實驗室仿真平臺通過以太網(wǎng)傳輸。視景輸出為1280*1024像素,幀速率不低于30fps.
5.結(jié)語
基于高速列車視景仿真不同于飛行仿真的特點,系統(tǒng)需要能夠很好的處理大范圍地景的高逼真度、高精度建模,提供有效的數(shù)據(jù)結(jié)構(gòu)組織、存儲地景及其紋理數(shù)據(jù),當(dāng)列車運行的時候,根據(jù)視點的變化,利用多線程技術(shù)高效的索引及加載多分辨率的地形和紋理以及樹和草等小物體,處理好海量數(shù)據(jù)加載和畫面流暢度的矛盾,為高速列車運行控制系統(tǒng)實驗室的視景系統(tǒng)的建設(shè)提供了有效地解決方案。
另外,系統(tǒng)在設(shè)計的時候把信號機和應(yīng)答器的模型與數(shù)據(jù)分開處理,軌道道岔和進路能夠單獨控制,因此系統(tǒng)擁有良好的可移植性與擴展性,能夠方便的把系統(tǒng)應(yīng)用到其它高速列車線路,例如京滬、京哈等線路上,為多條線路、多種型號的高速列車單獨甚至交叉運行實驗提供良好的實驗環(huán)境。