李 鳴,魏慶朝,呂???/p>
城市軌道交通線路的CPU/GPU協(xié)同快速建模方法
李 鳴1,魏慶朝1,呂希奎2
(1. 北京交通大學土木建筑工程學院,北京 100044;2. 石家莊鐵道大學交通運輸學院,河北 石家莊 050043)
城市軌道交通線路三維可視化設(shè)計能有效地改進設(shè)計質(zhì)量。針對傳統(tǒng)基于CPU的線路三維建模方法存在著建模速度慢、等待設(shè)計成果時間長、渲染效率低、場景優(yōu)化困難等問題,提出一種基于CPU離散-GPU建模的城市軌道交通線路三維模型快速建模方法。首先,將線路分為線狀模型和點狀模型,然后根據(jù)線形設(shè)計成果利用CPU分解線狀模型得到離散化的邊界條件,解析點狀模型得到空間信息參數(shù),分別形成獨立的、數(shù)據(jù)量極小的離散數(shù)據(jù)包;然后利用GPU的并行計算能力通過離散數(shù)據(jù)包實現(xiàn)線路三維模型的快速建立;聯(lián)合CPU的場景揀選能力和GPU的頂點擴展能力,建立了一種用于長線狀模型顯示的場景優(yōu)化方法。研究結(jié)果顯示:①該方法建模耗時僅為傳統(tǒng)方法的0.55%~1.30%;②瀏覽體驗相比基于傳統(tǒng)CPU建模和場景管理的方法顯著提升,最小幀數(shù)在70幀以上;③可有效降低內(nèi)存及CPU占用率等性能指標,釋放設(shè)計平臺計算壓力;④為線路三維可視化設(shè)計實用化提供了一種可借鑒的方法和思路。
城市軌道交通;線路設(shè)計;三維線路建模;快速建模
三維可視化設(shè)計在減少設(shè)計沖突、提高設(shè)計質(zhì)量和效率方面具有顯著的作用,目前已成為城市軌道交通線路信息化設(shè)計的主要發(fā)展趨勢。很多學者進行了有益的探索,如王明生[1]采用面向?qū)ο蟮膱D形仿真建模技術(shù),實現(xiàn)線路路基、隧道和橋梁各部分的三維建模;呂永來和李曉莉[2]完成了單線和雙線的線路建模;文獻[3-5]研究了用于線路設(shè)計的三維城市景觀的建模方法。上述研究均利用CPU實現(xiàn)線路三維及景觀的建模,但城市軌道交通線路海量的數(shù)據(jù)和CPU串行計算的特點,使得單純利用CPU進行建模存在以下問題:
(1) 建模速度較慢,特別是較長線路建模時更為明顯[6],無法達到二維設(shè)計平臺中所繪即所得的高效率。特別是線路設(shè)計變更頻繁時,每次變更均需要長時間的等待,效率過于低下。
(2) 渲染效率低,場景優(yōu)化困難,傳統(tǒng)的CPU動態(tài)調(diào)度算法難以滿足線狀模型的渲染優(yōu)化要求。
(3) 計算資源消耗多[7],內(nèi)存占用大。海量的三維模型數(shù)據(jù)占用了大量的CPU、內(nèi)存和硬盤資源,使得設(shè)計平臺的計算資源余量較少,難以付出更多的資源參與到與設(shè)計相關(guān)的邏輯計算中去,造成平臺的設(shè)計效率低下。
上述問題是制約目前軌道交通線路三維設(shè)計實用化的主要瓶頸。而隨著現(xiàn)代硬件GPU技術(shù)的飛速發(fā)展,其幾何擴展能力、并行計算能力愈發(fā)強大。針對線路模型的標準化、結(jié)構(gòu)化的特征,本文結(jié)合CPU與GPU運算的特點,將傳統(tǒng)的基于CPU的線路三維建模過程合理分配至CPU及GPU中。通過以下幾個方面解決傳統(tǒng)CPU在線路三維設(shè)計中存在的關(guān)鍵問題:
(1) CPU-GPU協(xié)同的線路三維建模。根據(jù)軌道線路模型特點及GPU并行計算機制,設(shè)計出一種“CPU離散-GPU建?!钡木€路模型繪制的算法:CPU進行線路中線的離散化操作,計算離散中線的邊界條件、部件空間位置姿態(tài)等數(shù)據(jù),且向GPU傳送極為簡單的離散化屬性數(shù)據(jù)包。GPU利用離散化數(shù)據(jù)與各個核心同步、并行地創(chuàng)建離散模型并組合,從而實現(xiàn)模型的快速實時繪制。
(2) 基于GPU的線狀模型渲染優(yōu)化。利用GPU的頂點擴充、裁剪能力,根據(jù)視點與模型的空間關(guān)系,實現(xiàn)同一繪制批次下模型的非一致性LOD模型表達,在保證模型顯示精度的情況下,提高渲染效率。
(3) 大規(guī)模數(shù)據(jù)的管理能力。生成模型的過程中,CPU及內(nèi)存只需管理及保存極少的線路屬性數(shù)據(jù),所以有著充足的數(shù)據(jù)管理余量及計算資源余量參與至設(shè)計平臺的其他過程中去,對提高設(shè)計平臺的效率有著重要意義。對設(shè)計成果也只需保存原始的設(shè)計數(shù)據(jù)即可,有效地節(jié)約了存儲資源,并且有極快的重載速度。
傳統(tǒng)線路模型CPU建模方法的流程如圖1(a)所示。大量的建模工作均由不擅長并行計算的CPU進行,且CPU需要向GPU傳遞全部可視的模型數(shù)據(jù),造成CPU建模速度慢、占用率高,形成前文所述的問題,制約著軌道交通線路三維設(shè)計的實用化。
考慮到線路模型具有高度參數(shù)化的特征,線路的組成結(jié)構(gòu)層次分明,組件間的約束關(guān)系清晰,易于使用函數(shù)語言表達。基于線路模型特征及幾何構(gòu)成特點,本文將整個建模過程分為:CPU離散和GPU建模2個部分。如圖1(b)所示,CPU承擔邏輯串行計算:包括計算線路中線的空間曲線參數(shù)、對線路中線進行離散化操作、離散中線的邊界條件計算等工作;利用GPU的并行計算能力,將原本通過CPU完成的高強度建模計算全部移交至GPU完成:包括由頂點著色器進行場景管理、由幾何著色器進行線路模型的頂點計算、三角網(wǎng)化,CPU與GPU間只需傳遞少量的離散曲線數(shù)據(jù)。該建模方法,充分利用了CPU、GPU各自的優(yōu)勢,有效地提高了建模效率。
圖1 協(xié)同建模流程及對比
利用CPU的串行數(shù)據(jù)處理能力,完成線路模型原始數(shù)據(jù)處理,為GPU提供建模數(shù)據(jù),包括2部分內(nèi)容:
(1) 合理分解線狀模型,用一定長度的直線擬合原線路中線,形成離散中線集合,然后通過離散中線的前后幾何關(guān)系,得到每一條離散中線的邊界約束條件及里程信息。通過CPU的計算處理后,將離散化中線的端點坐標、邊界約束條件、里程等信息順序傳遞至GPU各個核心,為GPU提供并行計算的數(shù)據(jù)集合。流程如圖2所示。
圖2 CPU的獨立性計算流程示意圖
(2) 解析點狀實體模型的三維數(shù)據(jù),發(fā)送至GPU緩存中,同時計算插入點及空間角度參數(shù),確保GPU能正確繪制模型。
離散結(jié)果如圖3所示,直線部分由于沒有局部特征點,保持原樣,而曲線部分被離散為若干個小段。
圖3 線路中線的離散化
線狀模型在曲率變化處存在模型失真的問題,按2.1節(jié)計算結(jié)果及橫截面數(shù)據(jù)直接創(chuàng)建分段模型,在模型拼接處曲線的內(nèi)側(cè)會出現(xiàn)模型重疊、外側(cè)出現(xiàn)模型空隙,如圖4所示。由于建模工作均提交至GPU,考慮到各個核心并行計算時的獨立性,因此,需設(shè)置一個邊界條件,確保GPU各核心在創(chuàng)建模型時,滿足模型拼接處0階參數(shù)的連續(xù)性0[10](拼接面處坐標點相同),以及拼接面上各點至離散中線的距離恒定的條件(模型幾何外觀不變),如圖5所示。
圖4 線路模型拼接圖
圖5 邊界條件圖
接受離散化數(shù)據(jù)后,由GPU中的頂點著色器將每一對(p,p)坐標,以及p和p處的拼接面法向量通過數(shù)組VS_OUT傳遞至幾何著色器:
幾何著色器及片元著色器共同完成建模:利用幾何著色器的幾何擴展及裁剪能力,根據(jù)(p,p)處的坐標與法向量完成線路模型的頂點網(wǎng)格數(shù)據(jù)計算及場景管理;利用片元著色器對模型的紋理、光照進行渲染模型并在屏幕上顯示。
本文主要利用了幾何著色器的2個功能,一是幾何頂點計算輸出能力,幾何著色器可根據(jù)輸入?yún)?shù)擴展生成出更豐富的圖形細節(jié),如輸入一條線路的中線,可根據(jù)預定義的鋼軌、排水溝及隧道面等構(gòu)件與中線的相對坐標關(guān)系擴展出上述模型的三角網(wǎng),并用于掃掠體模型的建模;也可讀取GPU緩存中的頂點數(shù)據(jù),實現(xiàn)對實體模型頂點的空間變換計算及頂點輸出。二是幾何頂點的裁剪能力,依據(jù)一定的規(guī)則計算,采用不同等級的頂點輸出策略,減少頂點的計算及輸出,實現(xiàn)GPU的場景管理,進一步提高運行效率。
3.1.1 模型的創(chuàng)建
聯(lián)立式(1)和式(2),有
圖6 輪廓掃掠及裁剪圖
//設(shè)置接受的數(shù)據(jù)為離散的線段
layout (lines) in;
//設(shè)置輸出的數(shù)據(jù)為三角網(wǎng)帶
layout (triangle_strip, max_vertices = 500) out;
void creatModel(vec4 insertPt)//傳遞模型的插入點
gl_Position=StretchTemplate(pfi[],0)// StretchTemplate為空間轉(zhuǎn)換矩陣,0表示計算起點處的輪廓點。
gl_Position=StretchTemplate(pfi[],1)// StretchTemplate為空間轉(zhuǎn)換矩陣,1表示計算終點處的輪廓點。
}
EndPrimitive();//完成該模型的建模
}
3.1.2 CPU-GPU聯(lián)合場景渲染優(yōu)化
在傳統(tǒng)CPU建模方式中,往往使用層次空間包圍盒及可見性剔除算法,如八叉樹或KD-tree進行場景管理,以優(yōu)化顯示效率。這些算法根據(jù)場景節(jié)點的可見性、距視點的距離控制模型的顯示精度,但該場景管理方式在優(yōu)化線狀模型的管理上存在弊端:線狀的軌道交通線路模型往往只有少量的路段出現(xiàn)在視錐體內(nèi),而CPU建模的方式難以分段控制同一繪制批次內(nèi)線路模型的繪制等級,在同一個場景節(jié)點中,模型的繪制精度是相同的。如圖7所示,當線路模型走向與視線幾乎相同時,采用CPU建模方法時,同一繪制批次內(nèi)遠離及貼近視點的模型均只能采用同一精度的模型,造成遠離視點處的模型仍采用高精度繪制,無法有效降低繪制量及系統(tǒng)負擔。
考慮到線路模型的線狀特征與GPU建模的單體控制能力,本文的建模方法在場景管理上設(shè)計了2個場景的優(yōu)化策略。由CPU進行模型整體的可見性剔除,通過其將剔除后的數(shù)據(jù)提交至GPU,并利用高效的并行計算能力進行個體模型的繪制精度控制。與傳統(tǒng)的CPU對整個節(jié)點的渲染優(yōu)化過程相比,本文方法在保證模型細節(jié)效果的前提下,有效降低了模型繪制量,提高了系統(tǒng)的渲染效率,優(yōu)化過程如下:
(1) 由CPU對線路模型進行可見性剔除。首先,在每條線路CPU解析的過程中,根據(jù)設(shè)計資料JD (交點)的數(shù)據(jù),為模型創(chuàng)建OBB包圍盒。當視錐體包含該OBB包圍盒時,保留該模型并傳遞至GPU頂點著色器,否則剔除該模型。
(2) 由GPU頂點著色器對視錐體內(nèi)模型的各個組成構(gòu)件進行獨立的可見性判斷,依據(jù)視距距離評定構(gòu)件的繪制精度,向幾何著色器輸出相應的繪制等級數(shù)據(jù)。幾何著色器根據(jù)該數(shù)據(jù)選擇繪制模型的精度,或者不繪制,以達到優(yōu)化的目的。優(yōu)化方法按模型的繪制方式分2種:
方法1,掃掠體的優(yōu)化。以視點到掃掠線的最短距離作為判斷距離。采用隔點法或分裂法(道格拉斯·皮尤克算法[12])對掃掠體的輪廓面進行簡化、甚至取消,達到減少繪制量的目的。
方法2,點狀實體的簡化。以視點至插入點的距離作為判斷距離。采用頂點聚類算法[13]對點狀實體進行簡化,由于該簡化算法較為復雜,不適合在幾何著色器內(nèi)使用。本文在建模之前使用一個計算著色器完成點狀實體的分級簡化工作,分級的簡化結(jié)果保存至著色器頂點緩存數(shù)組中。由幾何著色器根據(jù)判斷距離讀取頂點并輸出。
本優(yōu)化方法應用在線狀模型上取得了良好的渲染優(yōu)化效果,如圖7所示。同一繪制批次的軌枕(掃掠體)及扣件(點狀實體),根據(jù)與視點距離的關(guān)系,模型精度由近及遠逐步降低,直至取消不再顯示,既保證了視覺體驗,也提高了運行效率。
圖7 軌枕、扣件的分等級繪制
片元著色器負責渲染模型并向屏幕輸出。幾何著色器向片元著色器輸出構(gòu)成模型的三角網(wǎng)數(shù)據(jù),包括三角網(wǎng)的頂點坐標、各頂點的法向量及三角形的紋理坐標。在該階段,片元著色器為組成模型的各個三角形貼上適當?shù)募y理,完善模型渲染細節(jié),如圖8所示。
圖8 紋理效果圖
光照能提高模型的立體感及視覺效果。線路設(shè)計往往處于大場景的條件下,單一光源無法有效覆蓋、凸顯模型的局部細節(jié)。本文采用視點光源的方式,由CPU傳遞視點坐標的uniform (統(tǒng)一值)至片元著色器,始終綁定光源及視點位置,使得觀察者能有良好的視覺效果。圖9為定點光源與視點光源作用在扣件及軌枕的對比圖。
圖9 光照效果對比圖
在Windows 10平臺下,利用OSG 3.4.5平臺和GSLS 4.3著色器版本編制了算法的驗證程序,測試計算機的CPU為i7-4800HQ,顯卡為GTX 960m。驗證程序創(chuàng)建了隧道和橋梁線路模型,運行效果如圖10所示。整個運行過程流暢,畫面精細度高,模型的各個部件可根據(jù)視點距離靈活地切換顯示精度。
圖10 建模效果圖
與CPU建模的測試對比數(shù)據(jù)見表1。
表1 本文方法與CPU建模測試對比
由表1可知,本文GPU建模方法在建模速度上相比傳統(tǒng)的CPU建模有著較大的優(yōu)勢,且隨著繪制長度的增加,GPU繪制增加的時間很少,而CPU繪制的時間與里程有著相對應的比例關(guān)系,增加幅度很大。如三角形從3 200萬增加至10 000萬時,GPU用時只增加了1.1 s,而CPU則增加了623 s。在繪制相同的三角形個數(shù)時,GPU用時約為CPU的0.55%~1.30%,顯示出本文算法的極大優(yōu)勢和繪制效率。究其上述差距原因在于,本文方法在CPU端并不實際創(chuàng)建三角形,只進行線路模型的離散化計算,并將離散數(shù)據(jù)包直接傳遞至GPU,一旦傳遞結(jié)束,GPU即實時創(chuàng)建與畫面相關(guān)的三角形。離散化計算的耗時很小,其中大部分的時間是在進行數(shù)據(jù)變量的初始化工作,隨著長度的增加,GPU建模繪制增加的時間很少。而傳統(tǒng)的CPU建模方式,需要由CPU進行所有的三角形創(chuàng)建,并存入內(nèi)存,時間及內(nèi)存消耗均很大,CPU負擔很重。
在CPU占用率方面,由于本文方法只需管理少量的離散化數(shù)據(jù),其占用率僅為15%;而傳統(tǒng)的CPU建模方式占用率最高可達73%。由此可知,本文方法極大地解放了CPU及內(nèi)存的資源。
最小幀數(shù)決定著使用者的最終體驗,隨著線路的增長,數(shù)據(jù)量的增多,CPU建模方式下降幅度達到了34%,且12幀的幀數(shù)已無法提供流暢的體驗;而本文方法僅下降了3%,且?guī)瑪?shù)一直維持在流暢的程度,顯示了本文方法中場景管理的有效性。
在設(shè)計成果的存儲方面,本文方法只需要保存原始的如JD,曲線半徑等線路參數(shù)數(shù)據(jù),大小僅為幾百kB,而CPU建模方法則需要保存各級別LOD模型,大小可達3 G。
本文針對傳統(tǒng)的CPU線路三維建模方法存在的數(shù)據(jù)占用空間大、建模速度慢、場景渲染效率低等不足,利用GPU高效并行的運行機制,研究了CPU-GPU協(xié)同的城市軌道交通線路三維快速建模方法。實現(xiàn)了線路數(shù)據(jù)在CPU端的離散化處理,在GPU端的線路三維模型快速建立、渲染優(yōu)化和場景管理。經(jīng)過實例驗證,較傳統(tǒng)CPU的建模方法,本文方法在建模速度、運行效率、渲染優(yōu)化、節(jié)約存儲空間等方面都具有極大的優(yōu)勢,也為城市軌道交通線路三維可視化設(shè)計實用化提供了一種可借鑒的方法和思路。
[1] 王明生. 城軌線路三維可視化設(shè)計基礎(chǔ)理論和方法[D].北京: 北京交通大學, 2013.
[2] 呂永來, 李曉莉. 基于CityEngine平臺的高速鐵路建模方法的研究與實現(xiàn)[J]. 測繪, 2013, 36(1): 19-22.
[3] 呂希奎, 王明生, 李鳴, 等. 城市軌道交通三維城市景觀快速建模方法研究[J]. 城市軌道交通研究, 2013, 16(9): 43-46.
[4] 何彬. 基于GIS的城市軌道交通三維空間選線系統(tǒng)研究[D]. 石家莊: 石家莊鐵道大學, 2015.
[5] 李鳴. 城市軌道交通線路設(shè)計三維地理環(huán)境建模方法與應用研究[D]. 石家莊: 石家莊鐵道大學, 2013.
[6] 朱穎, 閔世平, 代強玲. 面向鐵路行業(yè)三維場景快速構(gòu)建一體化技術(shù)研究[J]. 鐵道工程學報, 2011, 28(12): 4-10.
[7] WOLFF D. OpenGL 4 shading language cookbook [M]. 2nd ed. Birmingham: Packt Publishing, 2013: 215-219.
[8] 劉丹丹, 張樹有, 劉元開, 等. 一種基于特征點識別的曲線離散化方法[J]. 中國圖象圖形學報, 2004, 9(6): 755-759.
[9] 魏慶朝. 鐵路線路設(shè)計[M]. 2版. 北京: 中國鐵道出版社, 2016: 198-200.
[10] 施法中. 計算機輔助幾何設(shè)計與非均勻有理B樣條[M]. 北京: 高等教育出版社, 2001: 75-76.
[11] 陳維桓. 微分幾何初步[M]. 北京: 北京大學出版社, 1990: 18-30.
[12] 于靖, 陳剛, 張笑, 等. 面向自然岸線抽稀的改進道格拉斯—普克算法[J]. 測繪科學, 2015, 40(4): 23-27, 33.
[13] 魏子衿, 肖麗. 改進頂點聚類方法的并行核外模型簡化算法[J]. 計算機工程與應用, 2018, 54(13): 181-190, 215.
A Fast CPU/GPU Cooperative Modeling Method of Urban Rail Transport Lines
LI Ming1, WEI Qing-chao1, LV Xi-kui2
(1. School of Civil Engineering, Beijing Jiaotong University, Beijing 100044, China; 2. School of Traffic and Transportation Engineering, Shijiazhuang Tiedao University, Shijiazhuang Hebei 050043, China)
Three-dimensional (3D) visualization can greatly improve the quality and efficiency of urban rail lines design. However, the traditional CPU-based method of 3D modeling have some problems in modeling speed, render efficiency, optimization scene, which require to be improved urgently. A fast 3D modeling method of urban rail transport lines based on CPU discrete-GPU modeling is proposed. Firstly, the line is divided into linear models and point models, and then, according to the results of line design, CPU is used to decompose linear models to obtain dataset of discrete boundary conditions. Subsequently, the point models are analysed to obtain dataset of spatial information parameters which can form, independent discrete data packets with a small amount of data respectively. Finally, with these discrete data packets, the fast modeling of 3D line model is achieved owing to the parallel computing ability of GPU. Combining the scene picking ability of CPU with the vertex expansion ability of GPU, a kind of scene optimization method that applies to long linear model display is established. The results show that ① The time-consumed by this method is only 0.55%–1.30% of the time using traditional CPU-based method. ②The proposed method is better than traditional CPU modeling method and scene management in browsing experience, minimum frames per second is higher than 70. ③The performance indicators such as occupancy of memory and CPU are greatly improved, which help to lessen the pressure of design platform.④It provides significant implications for the 3D design of practical urban rail transport lines.
urban rail transport; line design; 3D transport line modeling; fast modeling
U 212
10.11996/JG.j.2095-302X.2019040644
A
2095-302X(2019)04-0644-07
2019-01-02;
定稿日期:2019-04-29
國家自然科學基金項目(51278316),北京市自然科學基金項目(8172040)
李 鳴(1984-),男,廣西柳州人,博士研究生。主要研究方向為鐵路線路BIM設(shè)計。E-mail:81792534@qq.com