李 鳴,魏慶朝,呂希奎
城市軌道交通線路的CPU/GPU協同快速建模方法
李 鳴1,魏慶朝1,呂希奎2
(1. 北京交通大學土木建筑工程學院,北京 100044;2. 石家莊鐵道大學交通運輸學院,河北 石家莊 050043)
城市軌道交通線路三維可視化設計能有效地改進設計質量。針對傳統基于CPU的線路三維建模方法存在著建模速度慢、等待設計成果時間長、渲染效率低、場景優化困難等問題,提出一種基于CPU離散-GPU建模的城市軌道交通線路三維模型快速建模方法。首先,將線路分為線狀模型和點狀模型,然后根據線形設計成果利用CPU分解線狀模型得到離散化的邊界條件,解析點狀模型得到空間信息參數,分別形成獨立的、數據量極小的離散數據包;然后利用GPU的并行計算能力通過離散數據包實現線路三維模型的快速建立;聯合CPU的場景揀選能力和GPU的頂點擴展能力,建立了一種用于長線狀模型顯示的場景優化方法。研究結果顯示:①該方法建模耗時僅為傳統方法的0.55%~1.30%;②瀏覽體驗相比基于傳統CPU建模和場景管理的方法顯著提升,最小幀數在70幀以上;③可有效降低內存及CPU占用率等性能指標,釋放設計平臺計算壓力;④為線路三維可視化設計實用化提供了一種可借鑒的方法和思路。
城市軌道交通;線路設計;三維線路建模;快速建模
三維可視化設計在減少設計沖突、提高設計質量和效率方面具有顯著的作用,目前已成為城市軌道交通線路信息化設計的主要發展趨勢。很多學者進行了有益的探索,如王明生[1]采用面向對象的圖形仿真建模技術,實現線路路基、隧道和橋梁各部分的三維建模;呂永來和李曉莉[2]完成了單線和雙線的線路建模;文獻[3-5]研究了用于線路設計的三維城市景觀的建模方法。上述研究均利用CPU實現線路三維及景觀的建模,但城市軌道交通線路海量的數據和CPU串行計算的特點,使得單純利用CPU進行建模存在以下問題:
(1) 建模速度較慢,特別是較長線路建模時更為明顯[6],無法達到二維設計平臺中所繪即所得的高效率。特別是線路設計變更頻繁時,每次變更均需要長時間的等待,效率過于低下。
(2) 渲染效率低,場景優化困難,傳統的CPU動態調度算法難以滿足線狀模型的渲染優化要求。
(3) 計算資源消耗多[7],內存占用大。海量的三維模型數據占用了大量的CPU、內存和硬盤資源,使得設計平臺的計算資源余量較少,難以付出更多的資源參與到與設計相關的邏輯計算中去,造成平臺的設計效率低下。
上述問題是制約目前軌道交通線路三維設計實用化的主要瓶頸。而隨著現代硬件GPU技術的飛速發展,其幾何擴展能力、并行計算能力愈發強大。針對線路模型的標準化、結構化的特征,本文結合CPU與GPU運算的特點,將傳統的基于CPU的線路三維建模過程合理分配至CPU及GPU中。通過以下幾個方面解決傳統CPU在線路三維設計中存在的關鍵問題:
(1) CPU-GPU協同的線路三維建模。根據軌道線路模型特點及GPU并行計算機制,設計出一種“CPU離散-GPU建模”的線路模型繪制的算法:CPU進行線路中線的離散化操作,計算離散中線的邊界條件、部件空間位置姿態等數據,且向GPU傳送極為簡單的離散化屬性數據包。GPU利用離散化數據與各個核心同步、并行地創建離散模型并組合,從而實現模型的快速實時繪制。
(2) 基于GPU的線狀模型渲染優化。利用GPU的頂點擴充、裁剪能力,根據視點與模型的空間關系,實現同一繪制批次下模型的非一致性LOD模型表達,在保證模型顯示精度的情況下,提高渲染效率。
(3) 大規模數據的管理能力。生成模型的過程中,CPU及內存只需管理及保存極少的線路屬性數據,所以有著充足的數據管理余量及計算資源余量參與至設計平臺的其他過程中去,對提高設計平臺的效率有著重要意義。對設計成果也只需保存原始的設計數據即可,有效地節約了存儲資源,并且有極快的重載速度。
傳統線路模型CPU建模方法的流程如圖1(a)所示。大量的建模工作均由不擅長并行計算的CPU進行,且CPU需要向GPU傳遞全部可視的模型數據,造成CPU建模速度慢、占用率高,形成前文所述的問題,制約著軌道交通線路三維設計的實用化。
考慮到線路模型具有高度參數化的特征,線路的組成結構層次分明,組件間的約束關系清晰,易于使用函數語言表達。基于線路模型特征及幾何構成特點,本文將整個建模過程分為:CPU離散和GPU建模2個部分。如圖1(b)所示,CPU承擔邏輯串行計算:包括計算線路中線的空間曲線參數、對線路中線進行離散化操作、離散中線的邊界條件計算等工作;利用GPU的并行計算能力,將原本通過CPU完成的高強度建模計算全部移交至GPU完成:包括由頂點著色器進行場景管理、由幾何著色器進行線路模型的頂點計算、三角網化,CPU與GPU間只需傳遞少量的離散曲線數據。該建模方法,充分利用了CPU、GPU各自的優勢,有效地提高了建模效率。

圖1 協同建模流程及對比
利用CPU的串行數據處理能力,完成線路模型原始數據處理,為GPU提供建模數據,包括2部分內容:
(1) 合理分解線狀模型,用一定長度的直線擬合原線路中線,形成離散中線集合,然后通過離散中線的前后幾何關系,得到每一條離散中線的邊界約束條件及里程信息。通過CPU的計算處理后,將離散化中線的端點坐標、邊界約束條件、里程等信息順序傳遞至GPU各個核心,為GPU提供并行計算的數據集合。流程如圖2所示。

圖2 CPU的獨立性計算流程示意圖
(2) 解析點狀實體模型的三維數據,發送至GPU緩存中,同時計算插入點及空間角度參數,確保GPU能正確繪制模型。


離散結果如圖3所示,直線部分由于沒有局部特征點,保持原樣,而曲線部分被離散為若干個小段。

圖3 線路中線的離散化
線狀模型在曲率變化處存在模型失真的問題,按2.1節計算結果及橫截面數據直接創建分段模型,在模型拼接處曲線的內側會出現模型重疊、外側出現模型空隙,如圖4所示。由于建模工作均提交至GPU,考慮到各個核心并行計算時的獨立性,因此,需設置一個邊界條件,確保GPU各核心在創建模型時,滿足模型拼接處0階參數的連續性0[10](拼接面處坐標點相同),以及拼接面上各點至離散中線的距離恒定的條件(模型幾何外觀不變),如圖5所示。

圖4 線路模型拼接圖

圖5 邊界條件圖

接受離散化數據后,由GPU中的頂點著色器將每一對(p,p)坐標,以及p和p處的拼接面法向量通過數組VS_OUT傳遞至幾何著色器:
幾何著色器及片元著色器共同完成建模:利用幾何著色器的幾何擴展及裁剪能力,根據(p,p)處的坐標與法向量完成線路模型的頂點網格數據計算及場景管理;利用片元著色器對模型的紋理、光照進行渲染模型并在屏幕上顯示。
本文主要利用了幾何著色器的2個功能,一是幾何頂點計算輸出能力,幾何著色器可根據輸入參數擴展生成出更豐富的圖形細節,如輸入一條線路的中線,可根據預定義的鋼軌、排水溝及隧道面等構件與中線的相對坐標關系擴展出上述模型的三角網,并用于掃掠體模型的建模;也可讀取GPU緩存中的頂點數據,實現對實體模型頂點的空間變換計算及頂點輸出。二是幾何頂點的裁剪能力,依據一定的規則計算,采用不同等級的頂點輸出策略,減少頂點的計算及輸出,實現GPU的場景管理,進一步提高運行效率。
3.1.1 模型的創建



聯立式(1)和式(2),有


圖6 輪廓掃掠及裁剪圖
//設置接受的數據為離散的線段
layout (lines) in;
//設置輸出的數據為三角網帶
layout (triangle_strip, max_vertices = 500) out;
void creatModel(vec4 insertPt)//傳遞模型的插入點

gl_Position=StretchTemplate(pfi[],0)// StretchTemplate為空間轉換矩陣,0表示計算起點處的輪廓點。
gl_Position=StretchTemplate(pfi[],1)// StretchTemplate為空間轉換矩陣,1表示計算終點處的輪廓點。
}
EndPrimitive();//完成該模型的建模
}
3.1.2 CPU-GPU聯合場景渲染優化
在傳統CPU建模方式中,往往使用層次空間包圍盒及可見性剔除算法,如八叉樹或KD-tree進行場景管理,以優化顯示效率。這些算法根據場景節點的可見性、距視點的距離控制模型的顯示精度,但該場景管理方式在優化線狀模型的管理上存在弊端:線狀的軌道交通線路模型往往只有少量的路段出現在視錐體內,而CPU建模的方式難以分段控制同一繪制批次內線路模型的繪制等級,在同一個場景節點中,模型的繪制精度是相同的。如圖7所示,當線路模型走向與視線幾乎相同時,采用CPU建模方法時,同一繪制批次內遠離及貼近視點的模型均只能采用同一精度的模型,造成遠離視點處的模型仍采用高精度繪制,無法有效降低繪制量及系統負擔。
考慮到線路模型的線狀特征與GPU建模的單體控制能力,本文的建模方法在場景管理上設計了2個場景的優化策略。由CPU進行模型整體的可見性剔除,通過其將剔除后的數據提交至GPU,并利用高效的并行計算能力進行個體模型的繪制精度控制。與傳統的CPU對整個節點的渲染優化過程相比,本文方法在保證模型細節效果的前提下,有效降低了模型繪制量,提高了系統的渲染效率,優化過程如下:
(1) 由CPU對線路模型進行可見性剔除。首先,在每條線路CPU解析的過程中,根據設計資料JD (交點)的數據,為模型創建OBB包圍盒。當視錐體包含該OBB包圍盒時,保留該模型并傳遞至GPU頂點著色器,否則剔除該模型。
(2) 由GPU頂點著色器對視錐體內模型的各個組成構件進行獨立的可見性判斷,依據視距距離評定構件的繪制精度,向幾何著色器輸出相應的繪制等級數據。幾何著色器根據該數據選擇繪制模型的精度,或者不繪制,以達到優化的目的。優化方法按模型的繪制方式分2種:
方法1,掃掠體的優化。以視點到掃掠線的最短距離作為判斷距離。采用隔點法或分裂法(道格拉斯·皮尤克算法[12])對掃掠體的輪廓面進行簡化、甚至取消,達到減少繪制量的目的。
方法2,點狀實體的簡化。以視點至插入點的距離作為判斷距離。采用頂點聚類算法[13]對點狀實體進行簡化,由于該簡化算法較為復雜,不適合在幾何著色器內使用。本文在建模之前使用一個計算著色器完成點狀實體的分級簡化工作,分級的簡化結果保存至著色器頂點緩存數組中。由幾何著色器根據判斷距離讀取頂點并輸出。
本優化方法應用在線狀模型上取得了良好的渲染優化效果,如圖7所示。同一繪制批次的軌枕(掃掠體)及扣件(點狀實體),根據與視點距離的關系,模型精度由近及遠逐步降低,直至取消不再顯示,既保證了視覺體驗,也提高了運行效率。

圖7 軌枕、扣件的分等級繪制
片元著色器負責渲染模型并向屏幕輸出。幾何著色器向片元著色器輸出構成模型的三角網數據,包括三角網的頂點坐標、各頂點的法向量及三角形的紋理坐標。在該階段,片元著色器為組成模型的各個三角形貼上適當的紋理,完善模型渲染細節,如圖8所示。

圖8 紋理效果圖
光照能提高模型的立體感及視覺效果。線路設計往往處于大場景的條件下,單一光源無法有效覆蓋、凸顯模型的局部細節。本文采用視點光源的方式,由CPU傳遞視點坐標的uniform (統一值)至片元著色器,始終綁定光源及視點位置,使得觀察者能有良好的視覺效果。圖9為定點光源與視點光源作用在扣件及軌枕的對比圖。

圖9 光照效果對比圖
在Windows 10平臺下,利用OSG 3.4.5平臺和GSLS 4.3著色器版本編制了算法的驗證程序,測試計算機的CPU為i7-4800HQ,顯卡為GTX 960m。驗證程序創建了隧道和橋梁線路模型,運行效果如圖10所示。整個運行過程流暢,畫面精細度高,模型的各個部件可根據視點距離靈活地切換顯示精度。

圖10 建模效果圖
與CPU建模的測試對比數據見表1。

表1 本文方法與CPU建模測試對比
由表1可知,本文GPU建模方法在建模速度上相比傳統的CPU建模有著較大的優勢,且隨著繪制長度的增加,GPU繪制增加的時間很少,而CPU繪制的時間與里程有著相對應的比例關系,增加幅度很大。如三角形從3 200萬增加至10 000萬時,GPU用時只增加了1.1 s,而CPU則增加了623 s。在繪制相同的三角形個數時,GPU用時約為CPU的0.55%~1.30%,顯示出本文算法的極大優勢和繪制效率。究其上述差距原因在于,本文方法在CPU端并不實際創建三角形,只進行線路模型的離散化計算,并將離散數據包直接傳遞至GPU,一旦傳遞結束,GPU即實時創建與畫面相關的三角形。離散化計算的耗時很小,其中大部分的時間是在進行數據變量的初始化工作,隨著長度的增加,GPU建模繪制增加的時間很少。而傳統的CPU建模方式,需要由CPU進行所有的三角形創建,并存入內存,時間及內存消耗均很大,CPU負擔很重。
在CPU占用率方面,由于本文方法只需管理少量的離散化數據,其占用率僅為15%;而傳統的CPU建模方式占用率最高可達73%。由此可知,本文方法極大地解放了CPU及內存的資源。
最小幀數決定著使用者的最終體驗,隨著線路的增長,數據量的增多,CPU建模方式下降幅度達到了34%,且12幀的幀數已無法提供流暢的體驗;而本文方法僅下降了3%,且幀數一直維持在流暢的程度,顯示了本文方法中場景管理的有效性。
在設計成果的存儲方面,本文方法只需要保存原始的如JD,曲線半徑等線路參數數據,大小僅為幾百kB,而CPU建模方法則需要保存各級別LOD模型,大小可達3 G。
本文針對傳統的CPU線路三維建模方法存在的數據占用空間大、建模速度慢、場景渲染效率低等不足,利用GPU高效并行的運行機制,研究了CPU-GPU協同的城市軌道交通線路三維快速建模方法。實現了線路數據在CPU端的離散化處理,在GPU端的線路三維模型快速建立、渲染優化和場景管理。經過實例驗證,較傳統CPU的建模方法,本文方法在建模速度、運行效率、渲染優化、節約存儲空間等方面都具有極大的優勢,也為城市軌道交通線路三維可視化設計實用化提供了一種可借鑒的方法和思路。
[1] 王明生. 城軌線路三維可視化設計基礎理論和方法[D].北京: 北京交通大學, 2013.
[2] 呂永來, 李曉莉. 基于CityEngine平臺的高速鐵路建模方法的研究與實現[J]. 測繪, 2013, 36(1): 19-22.
[3] 呂希奎, 王明生, 李鳴, 等. 城市軌道交通三維城市景觀快速建模方法研究[J]. 城市軌道交通研究, 2013, 16(9): 43-46.
[4] 何彬. 基于GIS的城市軌道交通三維空間選線系統研究[D]. 石家莊: 石家莊鐵道大學, 2015.
[5] 李鳴. 城市軌道交通線路設計三維地理環境建模方法與應用研究[D]. 石家莊: 石家莊鐵道大學, 2013.
[6] 朱穎, 閔世平, 代強玲. 面向鐵路行業三維場景快速構建一體化技術研究[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] 魏慶朝. 鐵路線路設計[M]. 2版. 北京: 中國鐵道出版社, 2016: 198-200.
[10] 施法中. 計算機輔助幾何設計與非均勻有理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設計。E-mail:81792534@qq.com