楊銳,馬丁山,雷文書,田芮,陳健平,朱銘凡
(1.南京市水務設施管理中心,江蘇 南京 210036; 2.南京市供水節(jié)水指導中心,江蘇 南京 210004;3.南京市測繪勘察研究院股份有限公司,江蘇 南京 210019)
城市地下管網(wǎng)是保障城市運行的重要基礎設施和“生命線”,近年來,隨著城市的快速發(fā)展,對城市地下管網(wǎng)的需求量越來越大,地下空間也變得更加復雜。城市地下管網(wǎng)信息具有空間分布復雜、管線種類繁多、數(shù)據(jù)量大、更新速度快等特點[1]。三維管線能夠直觀表達地下管線的空間位置關系,解決傳統(tǒng)二維管線空間關系不明晰、顯示效果不直觀等問題[2],便于管線相關信息迅速查詢及空間分析的應用。因此,城市地下管網(wǎng)三維可視化[3-6]成為三維GIS領域近年來研究的熱點問題。
針對地下管線精細化三維建模,藍貴文[7]等采用邊界法與結(jié)構(gòu)實體幾何法的混合模型,兼顧了模型展示與空間分析,其中管件和附屬物在3DS MAX中預先精細建模,管段批量參數(shù)化建模;詹勇[8]等基于OSG圖形庫進行管件和管段的自動參數(shù)化建模。針對模型的高效展示,李政和[9]使用了可見性剔除、消隱處理和LOD,對三維場景的管線數(shù)據(jù)優(yōu)化處理;田師聰[10]結(jié)合了靜態(tài)實例化與LOD,有效加速了含有大量相似模型的場景渲染。對于模型的美觀處理,黃明[11]等使用布爾差運算刪除了管線的重疊部分,使用布爾交運算修補了節(jié)點的空洞缺失;李政和[9]賦予管線材質(zhì)和貼圖,并簡化了管網(wǎng)模型紋理映射的計算,經(jīng)過著色處理提高了管線的真實質(zhì)感。本文以南京市地下管線數(shù)據(jù)為實驗對象,對管點進行參數(shù)化建模,并使用實例化技術生成管段模型,大大提升了渲染效率,實現(xiàn)了在Web平臺100幀每秒的高效渲染,通過LOD提高加載速度,此外,對三維管網(wǎng)模型賦予PBR材質(zhì)使得顯示效果更加逼真。
本文采用3DTiles作為三維模型格式標準,對地下管網(wǎng)數(shù)據(jù)進行參數(shù)化建模。其中管段采用I3DM格式實現(xiàn)實例化,管點采用B3DM格式進行自動建模;對完成建模的三維模型進行瓦片劃分,構(gòu)建四叉樹LOD;為模型賦予符合物理規(guī)律的PBR材質(zhì),使表現(xiàn)效果更逼真。
實例化技術,指在一次CPU繪制調(diào)用中對同一個幾何體繪制多次,每次繪制的幾何體具備各異的位置、縮放和姿態(tài)等。各管段僅在形態(tài)和位置上有所不同,可由一個標準管段通過仿射變換得到。仿射變換是平移和線性變換的組合,其中平移可由中心點位置計算得到,線性變換包括縮放和旋轉(zhuǎn),分別由三個軸向的縮放比例和朝向得到。可使用實例化技術規(guī)避對每個管段單獨建模,提升建模和渲染的效率。
以圓管為例,本文選用長1 m,直徑 1 m的圓柱體管段作為標準模型,中心點為圓柱體下底面的圓心,其與上底面圓心連線方向為Y軸正方向,向上為Z軸正方向,X軸與Y、Z軸組成右手系,如圖1所示。
圖1 圓管標準模型
管段數(shù)據(jù)以線表形式存儲。每條管段記錄存儲了始末點平面位置、管徑和埋深等信息,管段實例化建模時,需由此計算標準模型中心點對應的位置、三個軸向的縮放比例和方向向量。
(1)中心點位置
讀取二維管線兩端節(jié)點的水平位置,即為管段起點A和終點B的二維坐標。取管段起點埋深作為A點的Z坐標,終點埋深作為B點的Z坐標,由此得到管段起點和終點的完整三維坐標,并取起點A為標準模型中心點O對應的位置。如圖2所示,藍色虛線處是管段最終姿態(tài),首先將標準模型平移到管段起點A處。
圖2 平移示意
(2)三個軸向的縮放比例
圓形管段X和Z方向的縮放比例需一致,其大小為管段的直徑。Y方向的縮放比例為管段的長度,由起點A和終點B之間的距離得到:
(1)
(3)三個軸向的方向向量
Y軸的方向向量ey為管段起點A指向終點B方向的單位向量。不考慮完全垂直的管段,X軸方向向量ex可由ey和Z軸方向向量(0,0,1)叉乘獲得:
ex=ey×(0,0,1)
(2)
Z軸方向向量ez可由兩者叉乘得到:
ez=ex×ey
(3)
將中心點位置、三個軸向的縮放比例和方向向量存儲在實例化數(shù)組中,每讀取一個實例化數(shù)組元素,就在著色器代碼中應用該元素值,對標準模型作出偏移旋轉(zhuǎn)縮放等操作,繪制出相應管段。3DTiles中使用I3DM瓦片保存實例化信息,在解析時使用實例化技術渲染,可顯著減少CPU與GPU之間的數(shù)據(jù)交換量,提高繪制效率。
參數(shù)化建模是將三維模型的幾何特征通過合理的方式抽象出來,將其映射為變量化參數(shù),通過控制各參數(shù)的值以實現(xiàn)模型大小、形狀的變更。
管點指二維數(shù)據(jù)中的點數(shù)據(jù)部分。按管點數(shù)據(jù)中的特征點和附屬物字段的語義,可將管點分為彎頭、井室和附屬物三類,其中彎頭包括二通、三通、四通彎頭和變徑彎頭。本文中彎頭和井室采用參數(shù)化建模,附屬物則與前文的管段類似,通過實例化技術完成建模。
本文將彎頭和井室模型抽象為截面形態(tài)和移動路徑,如圖3所示,截面位于起始點時構(gòu)成模型底面,沿路徑移動的過程中形成的外包面為模型側(cè)面,到達終止點時構(gòu)成模型頂面。模型的底面和頂面由截面頂點直接組成平面三角網(wǎng)格,側(cè)面則根據(jù)移動路徑上各節(jié)點處的截面法線方向計算該節(jié)點處的截面姿態(tài),依次將相鄰截面的頂點連接組成立體三角網(wǎng)格,如圖4所示。
圖3 截面沿路徑移動
圖4 模型側(cè)面立體三角網(wǎng)格
(1)彎頭參數(shù)化建模
二通彎頭的截面取管段的橫截面,即以管徑為直徑的圓形。如圖5所示,二維數(shù)據(jù)中兩相接管段AC、BC相交于點C,按照給定的轉(zhuǎn)彎半徑,在拐角處生成圓弧曲線DE,本文的轉(zhuǎn)彎半徑取管段半徑。連接直線AD、曲線DE和直線EB即為截面的移動路徑,由此構(gòu)建彎頭網(wǎng)格體。
圖5 相接管段彎頭構(gòu)建
當多個管段在同一點處聚集或分流時會形成多通彎頭,常見的有三通和四通彎頭。二維數(shù)據(jù)一般不會記錄多通彎頭的具體結(jié)構(gòu),因此在建模時需重點考慮結(jié)構(gòu)的合理展示。本文將多通彎頭依次拆分成多個二通彎頭,優(yōu)先匹配管徑相同的、管段夾角最大的點。三通彎頭在匹配完一對管段建立二通彎頭后,再使用二通彎頭的中心點與剩余管段建立二通彎頭。四通彎頭則分別匹配兩對管段建立二通彎頭。
當彎頭兩端管段直徑不一致時,會形成變徑彎頭。在對變徑彎頭參數(shù)化建模時,移動路徑與二通彎頭相同,截面大小隨移動距離產(chǎn)生變化。本文采用“移動—縮放”數(shù)組描述變徑點的結(jié)構(gòu),其中移動量取[0,1]區(qū)間的值,表示當前截面沿路徑移動的距離占總距離的比例,縮放量取當前截面的縮放比例,相鄰截面間的縮放比例均勻變化。例如指定(0,1)、(0.5,1)、(1,0.5)時,得到的變徑彎頭如圖6所示,表示從起始點至中點的截面為原始大小,從中點到終止點的截面均勻縮小,直到原始大小的一半。
圖6 變徑彎頭
(2)井室參數(shù)化建模
井室的截面為圓形平面,其直徑與井室直徑和井蓋直徑有關。相較于彎頭,井室截面的移動路徑較為簡單,是以地面為起點,井深為距離的垂直向下的直線。特別的,對于井蓋直徑和井室直徑不一致的井室,通常會給定井脖深度,在井脖深度以上截面直徑取井蓋直徑,以下則取井室直徑。
3DTile中的B3DM瓦片用于存放一般的三維模型及其屬性信息。在對管點參數(shù)化建模時,將模型與屬性數(shù)據(jù)一起寫入B3DM文件中,兩者通過索引號關聯(lián)。
(3)附屬物參數(shù)化建模
附屬物采用實例化建模,與管段的建模方法相似,需要指定位置、縮放和旋轉(zhuǎn)參數(shù)。
位置參數(shù)可取管點自身的位置數(shù)據(jù),對于閥門、水表等附著在管線上的附屬物,可在自身位置上增加偏移:
P=P0+(R×Zup)
(4)
式(4)中P為最終位置,P0為管點位置,R為管段半徑,Zup為管段Z軸方向。
附屬物的旋轉(zhuǎn)參數(shù)由三個軸的方向指定,與所在管段的方向一致,計算方法參照式(2)、式(3)。注意對于消防栓等固定垂直于地面的附屬物,在計算時Z軸方向取(0,0,1)。
PBR是基于物理渲染的材質(zhì)系統(tǒng),通過計算光線與物體表面的交互狀態(tài),實現(xiàn)模擬真實世界畫面。
為使建模結(jié)果更具表現(xiàn)力,本文使用PBR材質(zhì)系統(tǒng)為模型設定材質(zhì)。根據(jù)不同類型管線的材質(zhì),指定對應的漫反射顏色、金屬度貼圖和粗糙度貼圖,構(gòu)造最接近現(xiàn)實的PBR材質(zhì)。如圖7所示,采用PBR材質(zhì)系統(tǒng)的標準管段模型如圖7(a)所示,相較于不采用PBR材質(zhì)系統(tǒng)的圖7(b),在反射細節(jié)上有較大提升,表現(xiàn)效果更為美觀逼真。
圖7 標準管段模型渲染效果對比
LOD技術指多層次細節(jié)加載,根據(jù)物體在渲染時所處的位置和重要程度為每個物體分配渲染資源,決定該物體是否渲染或以何種精細度渲染。
3DTiles規(guī)范中的瓦片集合可用于實現(xiàn)LOD技術,集合以多叉樹的形式組織,本文在構(gòu)建管線3DTiles時選用四叉樹。
如圖8所示,從頂層瓦片開始,通過將邊長二等分,每個瓦片都被劃分為均勻的4塊子瓦片,直到最底層瓦片結(jié)束,形成一顆完整的四叉樹。
圖8 四叉樹瓦片劃分
判斷任一點在指定層級時所處瓦片的過程如下:
計算指定層級的瓦片大小:
(5)
其中,size為瓦片大小,level為瓦片層級。
所處瓦片的行號x和列號y由該點經(jīng)緯度(lon,lat)分別除以瓦片大小后向上取整得到。
(6)
獲得指定層級的瓦片行列號后,可計算瓦片中心點坐標,以此計算其父級瓦片的行列號,依此類推直到最上層瓦片,便可完成四叉樹的構(gòu)建。
管段數(shù)據(jù)可按其管段中心點判斷所在瓦片,而管點數(shù)據(jù)則直接根據(jù)其地理位置判斷??蛻舳嗽诿恳粠轮袝陨隙卤闅v瓦片樹,在訪問較高層級的瓦片時,若根據(jù)剔除規(guī)則判斷為不可見,那么該瓦片所包含的較小層級瓦片便跳過遍歷,由此減小遍歷數(shù)量,加速渲染。
為了驗證本文方法,利用南京市某區(qū)域地下管網(wǎng)數(shù)據(jù)(供水管、雨水管和排水管)進行實驗驗證。整個實驗區(qū)域內(nèi),管線總長為 60 387.632 km,彎頭總數(shù)為 2 692 459個,井室總數(shù)為 2 828 470個,附屬物總數(shù)為 1 406 066個,總計建模用時約1時10分,在Web平臺渲染效率可達到100幀每秒,地下管網(wǎng)模型效果如圖9所示。如表1所示,在不同距離的視點下,客戶端的資源消耗都處在相對平穩(wěn)的水平,其幀率表現(xiàn)也較為穩(wěn)定。同時,支持3DTiles格式的客戶端都可加載本文方法生成的管線模型,通用性良好。通過實驗的驗證和分析,有效驗證了本文地下管網(wǎng)參數(shù)化建模技術流程的可行性,可有效提升地下管網(wǎng)建模效率及模型渲染效果。
表1 不同距離視點下客戶端資源消耗情況
圖9 地下管網(wǎng)建模效果
本文提出了一種用于城市地下管線三維可視化的建模方法,采用3DTiles作為三維模型格式標準,對地下管網(wǎng)數(shù)據(jù)進行參數(shù)化建模,為模型賦予符合物理規(guī)律的PBR材質(zhì),使表現(xiàn)效果更逼真。并通過實驗驗證了本文方法的可行性,可有效提升地下管網(wǎng)建模效率與渲染效果,可實際應用于城市規(guī)模的地下管網(wǎng)三維可視化項目建設,為三維管線信息系統(tǒng)的管線查詢、管線分析等業(yè)務應用提供關鍵技術支撐。