王飛群,張新家,張慧翔,孫抒涵
(西北工業大學 自動化學院,陜西 西安710129)
基于OSG的城市三維綜合網管可視化系統研究
王飛群,張新家,張慧翔,孫抒涵
(西北工業大學 自動化學院,陜西 西安710129)
隨著城市的發展,城市網管也越來越錯綜復雜,致其規劃管理混亂。針對這個問題,基于OSG三維渲染引擎和Blender三維建模工具,對系統的總體設計和三維建模的具體流程進行研究,結合系統開發及實現的關鍵技術,建立了城市三維綜合網管可視化系統。使用該系統可以對城市綜合網管進行更科學的規劃和管理,具有很好的交互性和平臺無關性。
城市綜合網管;三維建模;OSG;可視化系統
城市綜合網管是城市最重要的基礎設施之一,與城市地下空間的規劃、開發、和利用息息相關。城市綜合管網包括雨水管線,排、給水管線、電力、電信管線、燃氣管線等[1],是一個城市賴以生存和發展的物質基礎。城市網管因其種類之多、分布之廣、關系之復雜、以及增長速度之快,已經使城市地下網管從單一、明了的形式發展成為了錯綜復雜、功能繁多的復雜局面,因城市綜合網管埋設不清,建設規劃不周而導致重復開挖路面的事情經常發生,施工造成網管損壞的事故也接連不斷。2014年11月25、26日,《焦點訪談》欄目分別以《理不清的地下管線》和《筑牢城市根基》為題,連續兩天播出拍攝內容。被稱作城市“生命線”的地下管線,如今已經越來越多的引起人們的關注和重視。掌握好城市綜合管網的分布情況,實現對城市地下空間的統一規劃和科學管理,必將成為確保城市可持續發展的必由之路。
初期的地下管網管理系統主要是二維圖形管理,其空間表現能力和空間分析能力都有很大的局限性,缺乏直觀性,無法表現管線之間的空間關系[2]。綜合管網覆蓋地區的地下環境情況復雜,各種地下網管縱橫交錯,因此綜合網管的垂直數據信息就非常重要,顯然,這是二維的網管信息系統做不到的。為了促進城市的發展,保障人民生活,建設三維的城市綜合網管可視化系統是必然趨勢。
針對以上問題,基于OSG和WxWidgets,設計并實現了城市綜合網管三維可視化信息系統。利用三維建模技術、計算機圖形學、數據庫管理技術和虛擬現實可視化技術對城市綜合網管進行綜合處理和集成管理,使得綜合網管具有更加直觀、立體的可視化效果。
1.1系統需求分析
作為一個城市綜合網管三維可視化信息系統,其需求主要體現在兩方面:普通用戶通過互聯網訪問網管系統數據,查詢相關信息;管理員及管網設計人員通過應用程序,對反映城市綜合網管現狀、規劃、變遷的各類數據進行輸入、存儲、查詢、統計、分析等操作。
為了滿足以上需求,城市綜合網管三維可視化系統的主要有以下特點:1)應用程序:首先有一個可視化的界面框架,方便相關用戶進行工程管理、屬性管理、模型載入等一系列操作;其次,用戶可以通過鼠標、鍵盤等工具,進行可視化配置,靈活構建管網環境,查詢管網信息。2)瀏覽器:普通用戶通過瀏覽器端(web端)對管網數據進行三維數據的訪問及查看。
1.2系統總體框架
根據以上系統的需求分析,結合B/S、C/S等架構特點,系統分為應用程序、瀏覽器、服務器,用戶等幾個主要部分,如圖1所示。

圖1 系統總體結構圖
基于系統的結構,系統框架依照應用層、驅動層、數據層三層而設計,其總體設計框圖如圖2所示。

圖2 系統總體設計框圖
數據層接收驅動層的請求,進行數據的讀取和保存操作,為驅動層提供了可供調用的統一的數據訪問接口。應用程序、瀏覽器各項操作的進行以及三維場景的渲染,都是對三維數據庫的實時的動態調用及訪問。因此,為了保證應用程序和瀏覽器通過驅動層調用的數據便于維護并具有通用性,必須采用統一的數據描述格式。文中應用程序端以及瀏覽器端所調用的三維模型均采用DAE文件格式來描述,最終將DAE文件存入數據庫。
DAE(Digital Asset Exchange)是全面的開放三維數據交換標準COLLADA,采用XML語法格式,需要COLLADA庫的支持。COLLADA是由索尼(Sony)提出的基于XML的一個開放的、免費的數據交換標準。XML是制定用于描述數據文檔中數據的組織和安排結構的語言,不但結構清晰,而且完全以文本方式存儲,所以通過任何一種編輯工具都可以對其進行查看和修改,用戶編輯非常方便[3]。正因為COLLADA基于XML技術,所以這個標準有著十分優秀的移植性,居于不同平臺的實時引擎只要支持這個標準,就可以實時表現三維模型。
例如,可以將一個場景中的相機描述成如下文件:
此外,城市綜合網管的數據有以下特點:數據量特別大;存在大量的空間數據;數據應用的范圍非常廣。目前流行的數據庫系統在直接管理城市綜合網管的空間數據方面存在著明顯的不足。在城市三維綜合網管信息系統中,需要管理的數據主要包括:空間幾何體數據、時間數據、結構化的非空間屬性數據以及非結構化的描述數據[4]。我們不采用傳統的某一單一的數據模型,而是采用建立在關系數據庫管理系統(RDBMS)基礎上的綜合數據模型,采用文件結合關系數據庫管理的方式(如圖3所示),對數據進行標準化,最后建立三維數據庫,采用的數據庫軟件為MySQL。

圖3 數據庫管理模型
三維建模是城市三維綜合網管系統的關鍵部分。實際的管網及部件類型復雜多樣,在建模之前,首先要按照性質將其分類,如直管(水管等)、閥門、三通等。然后使用開源的第三方建模工具Blender,它自帶基本圖形,如立方體、圓柱體、椎體、球體等建模過程中需要的幾何圖形,通過對其進行一系列的縮放、平移、旋轉、拉伸、布爾運算等操作,可以精確構造綜合網管的三維模型,并對其進行渲染,產生很好的可視化效果。在建模的過程中,需遵循如下原則[5]:真實合理性原則;去除模型冗余多邊形原則;主次分明原則;盡量使用簡單建模方式,避免不兼容原則;精細程度適度,避免過分強調細節原則;盡量以紋理映射方式來解決模型數據量大的問題。
Blender是一款開源的3D制作軟件,它采用模塊化的搭建,對復雜的功能也只需進行簡單設置,有利于開發大型項目。并且Blender軟件本身的建模功能十分強大,在模型和 3D引擎的結合上具有很好的兼容性[6],同時,Blender提供了強大的Python API支持,可以使用自動化的腳本來完成幾何建模、貼圖和渲染工作。使用Blender及其部件得到城市綜合管網及其各部件的三維模型的過程為:首先,計算管網的數學模型表達,并使用Python語言將其表達為計算機可以識別的程序模型。其次,使用Blender提供的Python API編寫運行腳本。執行腳本時,Blender調用城市綜合網管數據庫中的相關信息數據,最終生成三維模型。如圖4所示。

圖4 綜合網管三維生成流程
4.1應用程序
城市三維綜合網管可視化系統在應用程序端使用VS2010為開發平臺,wxWidgets為 GUI框架,結合 OSG(OpenSceneGraph)三維渲染引擎開發完成。OSG使用OpenGL底層渲染API,并由一系列高性能的三維圖形學功能模塊組成,主要為三維圖形圖像系統的開發提供場景管理和圖形渲染的功能[7]。OSG是一套基于C++平臺的開源API[8],可以更加快速便捷地創建高性能、跨平臺的交互式圖形程序。OSG將Blender輸出的模型從數據庫中讀取出來,組織為三維場景空間中的一系列對象,進行場景管理和優化渲染。wxWidgets是一個開源的跨平臺的C++構架庫(framework),它可以提供GUI和其他工具。將wxWidgets與OSG相結合,具有很好的平臺無關性。
應用程序的主要用戶為開發設計人員,如圖5所示。GUI界面包含系統菜單、屬性窗口、仿真輸出窗口,界面交互非常友好。整個應用程序主要包含以下幾個功能模塊:
1)三維瀏覽,通過放大或者縮小場景,用戶可以在仿真輸出窗口中瀏覽管網工程及管網部件的三維視圖,并且可以切換視角。
2)工程管理,使用鼠標或者鍵盤對管網部件進行拖拽、縮放、旋轉等操作,設計人員可以根據需要得到預期的工程場景。此外,通關在屬性窗口中設置部件的屬性,可以改變部件的規格,比如縮短一個直管部件的長度。
3)場景漫游,系統使用OSG軌跡球方式,可以在虛擬的三維管網場景中進行觀察。
4)信息查詢,利用OSG及wxWidgets三維交互及拾取功能,用戶點擊管網或者部件,根據拾取到的信息,程序會與數據庫進行交互,將查詢到的所需信息顯示到輸出窗口中。

圖5 應用程序效果圖
4.2web端
在web端使用WebGL和HTML5來實現,采用了Three. js的框架來實現三維模型的渲染。WebGL是一項新的Web3D圖形標準,使用了 Canvas的 WebGL正好貼合HTML5。WebGL API廣泛應用于目前幾乎所有的新型智能手機和移動設備,JavaScript是WebGL的唯一入口。
Three.js是一個開源的javascript框架,掩蓋了3D渲染的細節,將WebGL原生API的細節抽象畫,將3D場景拆解為網格、材質和光源[9]。由于WebGL本身并不提供拾取功能,Three.js封裝了Raycaster類來實現鼠標獲取的物體,使添加旋轉,改變視角等交互功能變得輕松。
要渲染物體到網頁中,需要3個組建:場景(scene)、相機(camera)和渲染器(renderer)。創建后才能將物體渲染到網頁中去,加載一個簡單模型的過程分為4個主要步驟:
1)服務器上的模型文件以文本的方式存儲,Three.js支持很多種3D模型格式,在此使用DAE文件來存儲物體,使用xm l文件來管理場景中的多個過程。
2)瀏覽器下載xml配置文件和DAE模型文件到本地。
3)Javascript解析文件,生成Mesh模型,獲取平移旋轉和縮放參數并添加到場景中。
4)顯示場景,渲染,調用requestAnimationFrame()來實現更新。
在網頁上渲染出結果如圖6所示。

圖6 WebGL渲染三維網管模型
城市綜合網管作為城市最重要的組成部分之一,建立功能強大、交互性好的三維城市綜合網管可視化系統迫在眉睫。由于OSG、Blender及wxWidgets都具有高性能、跨平臺、開源免費的特點,將其應用于該系統的開發,降低了開發成本,還具有很好的可移植性、可擴展性及平臺無關性。使用該系統可以對城市綜合網管進行科學的規劃和管理,達到了設計要求。
[1]黨增明.虛擬現實技術在城市地下空間可視化的應用[D].天津:天津城市建設學院:2008
[2]陳子輝.虛擬三維地下管網建模技術研究與實現 [D].天津:天津大學,2009.
[3]劉瑞恒,張新家,張婷婷.基于設計模式的圖形組態系統研究與設計[J].微處理機,2011(1):67-70.
[4]上海市信息化委員會.城市地理信息系統——原理、應用與項目管理[M].北京:科學出版社,2008.
[5]黃海林.虛擬實驗三維建模技術研究[D].長春:吉林大學,2007.
[6]張斌,陳春歌.Blender在虛擬現實領域中的應用[J].計算機光盤軟件與應用,2013(8):140-142.
[7]尹志永,王濤,徐瑩,等.基于OSG的城市三維GIS系統的初步設計與開發[J].城市勘測,2015(1):52-55.
[8]王銳,錢學雷.OpenSceneGraph三維渲染引擎設計與實踐[M].北京:清華大學出版社,2009.
[9]Jos,Dirksen.Three.js開發指南[M].北京:機械工業出版社,2015.
Research of 3D general pipeline visualization system in cities based on OSG
WANG Fei-qun,ZHANG Xin-jia,ZHANG Hui-xiang,SUN Shu-han
(School of Automation,Northwestern Polytechnical University,Xi'an 710129,China)
With the development of cities,pipelines in the city are getting more complicated,lead to chaos in the management.In order to solve this problem,based on 3D rendering engine and Blender,which is the 3Dmodeling tools,research goes deep into the general design of system and specific process of 3D modeling,combined with the critical techniques in the development and achievement of system,conceive a visualization system of 3D general pipeline in cities. Using this system could achieve more scientific planning and management towards general pipelines in the city,it is platform-independentand hasgreat interactivity.
general pipeline of cities;3Dmodelling;OSG;visualization system
TN919.82
A
1674-6236(2016)19-0025-03
2015-10-20稿件編號:201510137
西北工業大學研究生創意創新種子基金(Z2015130)
王飛群(1991—),女,山西晉城人,碩士。研究方向:三維可視化仿真、計算機應用等。