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