三維 GIS 中符號化水面的設(shè)計與實現(xiàn)

孫寅樂,宋關(guān)福,曾志明,馮振華

( 1. 中國科學(xué)院地理科學(xué)與資源研究所,北京 100101; 2. 中國科學(xué)院大學(xué),北京 100039;

論文來源:《增刊測繪與空間地理信息》 2013年8月 第36卷

摘要:提出了在三維 GIS 系統(tǒng)中以符號化的方式解決水面可視化問題的方案,基于超圖 GIS 平臺軟件進行了實現(xiàn)。結(jié)果證明,該方案能夠和二維 GIS 數(shù)據(jù)緊密結(jié)合,提高了三維 GIS 中水面場景的構(gòu)建效率,提升了可視化效果。

關(guān)鍵詞: 地理信息系統(tǒng),場景,三維符號,水面可視化

Design and Implementation of Symbolic Water with 3D GIS

SUN Yin le,SONG Guan - fu,ZENG Zhi ming,FENG Zhen hua

( 1. Institute of Geographic Sciences and Natural Resources Research,CAS Beijing 100101,China; 2. University of Chinese Academy of Sciences,Beijing 100039,China; 3. SuperMap Software Co. ,Ltd. ,Beijing 100015,China)

Abstract: This paper presents a solution focusing on the visualization of water with 3D fill symbols in the 3D GIS system,based on the SuperMap GIS platform software. Our results prove that this solution can closely integrate with 2D GIS data,and improve the efficiency of constructing water in the scene and the visualization effect.

Key words: GIS; scene; 3D symbol; water visualization

0 引 言

  隨著三維 GIS 的發(fā)展,人們對于其可視化能力提出了更高的要求。在一些應(yīng)用中,人們不但要求場景中的物體位置準確,而且要求其逼真、好看。水面效果是影響場景可視化質(zhì)量的關(guān)鍵要素,能大大加強 GIS 可視化的用戶體驗,使用戶更容易理解和接受三維 GIS 所展示的空間信息。

  但目前已知的大多數(shù) GIS 系統(tǒng),對水面的表現(xiàn)力有限,通常只是用一張貼在矢量面上的靜態(tài)紋理或 GIF 圖片來表現(xiàn)水面,而喪失了對水面流動、起伏、倒影等效果的表現(xiàn)力。少數(shù)從虛擬現(xiàn)實軟件演化來的 GIS 系統(tǒng)雖然能夠表現(xiàn)水面效果,但要依賴于特定的插件把 GIS 矢量數(shù)據(jù)轉(zhuǎn)化為 osg、3ds 等模型數(shù)據(jù),不但丟失了部分地理空間信息,而且造成了實際空間數(shù)據(jù)可顯示數(shù)據(jù)的不一致,通過這種方式制作三維場景費時費力。

  三維地圖符號是來源于二維地圖符號的表現(xiàn)形式,三維地圖符號更形象、直觀,也更容易理解。將水面特效與三維符號相結(jié)合后,用戶只需要為傳統(tǒng)的二維矢量面指定水面符號,就可以制作出具有水面效果的三維場景。

1 理論與關(guān)鍵技術(shù)

  1. 1 三維符號理論

  三維符號是二維符號的拓展,能夠使使用者更好的識別和認知空間信息[1]。根據(jù)符號化對象的空間特性不同,三維符號可分為三維實體模型符號、三維線狀模型符號、三維 面 狀 模 型 符 號、過程模型符號和三維注記符號[2]。水面的三維符號屬于三維面狀符號。傳統(tǒng)的地圖符號設(shè)計原則是依據(jù) Bertin 視覺參量體系建立起來的[3]。

  隨著 數(shù) 字 制 圖 技 術(shù) 的 發(fā) 展 和 三 維 地 圖 的 出 現(xiàn),MacEachren,Kraak,Jobst 等人又相繼對視覺參量進行了補充,增加了動態(tài)視覺變量和深度視覺變量[4 - 6]。Neubauer在 2009 年向 OGC 遞交的 3D - Symbology Encoding 討論稿中提出以材質(zhì)作為面填充符號的參量,其所提出的材質(zhì)包含了鏡面光、環(huán)境光、發(fā)射光及陰影透明度等屬性[7]。

  本文所提出的水面符號是在材質(zhì)視覺參量基礎(chǔ)上進行的擴展,將水面特征參數(shù),包括水波大小、反射亮度、水波速度等引入到材質(zhì)參量中。

  1. 2 水面的可視化技術(shù)

  水面具有起伏、流動、反射、折射等效果。在計算機圖形學(xué)中,水面的波動通常采用兩種思路實現(xiàn),第一種是把水的表面剖分成均勻的網(wǎng)格,然后通過 GPU 中的頂點著色器控制每個網(wǎng)格頂點按照特定規(guī)律運動。第二種是通過控制 GPU 中的片元著色器,使得水面的凹凸紋理隨時間平移來實現(xiàn)的[8]。在三維 GIS 中的數(shù)據(jù)量大,所以渲染性能尤為關(guān)鍵。而第二種思路中由于不用計算大量的頂點位置,其渲染性能更高,所以本文所實現(xiàn)的系統(tǒng)中采用了第二種思路。

  水面的反射的基本實現(xiàn)思路是紋理渲染。在每一幀中對場景進行兩次渲染,第一次渲染時,將場景中水面對象設(shè)置為不可見,然后把當前相機移動到關(guān)于反射面對稱的位置,渲染場景到一張紋理上; 第二次渲染時將整個場景設(shè)為可見,把剛才得到的反射紋理作為水面的紋理進行渲染。當相機距水面位置較遠時,其反射效果很不顯著,為了提高渲染性能,此時不進行第一次渲染,而采用一張靜態(tài)紋理來代表反射面。

  折射效果通常用來表現(xiàn)水底情況。本文采用多重紋理方式實現(xiàn)折射效果,采用第一層紋理存儲水面表面法向量,第二層紋理表現(xiàn)反射物體,第三層紋理存儲水底折射物體。當光到達材質(zhì)的交界面時,一部分光被反射,而另一部分將發(fā)生折射,這個現(xiàn)象稱為菲涅爾效應(yīng)。菲涅爾效應(yīng)混合了反射和折射,使得物體更真實。理論物理中的菲涅爾公式是很復(fù)雜的,而在實時圖形學(xué)中只要在最終效果上滿足人們的視覺感受就可以了。因此本文采用了以下簡化公式來計算水面的折射和反射混合參數(shù),然后根據(jù)該參數(shù)混合折射和反射紋理的顏色作為水面像元的顏色。

  factor = bias + scale* ( 1. 0 + I·N) power

  color = factor * 反射光顏色 + ( f - factor) * 折 射 光顏色

  其中,bias 為偏移系數(shù),scale 為縮放系數(shù),power 為Fresnel 指數(shù),I 為入射光方向向量,N 為法向量。

2 系統(tǒng)設(shè)計與實現(xiàn)

  水面的符號化表達分為水面符號庫管理和符號可視化兩個模塊。符號庫管理模塊負責進行水面符號的創(chuàng)建、修改、復(fù)制等。而符號可視化模塊則負責把二維矢量面數(shù)據(jù)在場景中渲染為水面效果。

  2. 1 三維符號庫的設(shè)計

  三維符號庫的設(shè)計是符號庫管理的核心。由于水面特效需要用到材質(zhì)參數(shù)、著色器參數(shù)、著色器代碼、紋理等多種不同種類的參數(shù),所以水面符號的設(shè)計比傳統(tǒng)三維填充符號更為復(fù)雜。本文所實現(xiàn)的系統(tǒng)中符號庫對象設(shè)計如圖 1 所示。

圖 1 填充符號對象結(jié)構(gòu)
Fig. 1 Object structure of fillsymbol

  水面符號作為一種填充符號( FillSymbol) ,而填充符號可能是有很多層疊加在一起形成的,每一層是一個 FillSymbolBase,材質(zhì)填充對象( MaterialSymFill) 是其中一種FillSymbolBase。MaterialSymFill 中包含了一個材質(zhì)對象( Material) ,材質(zhì)對象中包含了渲染此材質(zhì)時所需要設(shè)置的渲染狀態(tài)參數(shù),同時還包含了渲染時需要用到的 GPU程序名稱以及用到的紋理名稱。MaterialSymFill 中還含有兩個字典,其 key 值與 Material 對象中的 GPU 程序名稱和紋理名稱對應(yīng),value 值包含的分別是紋理圖片數(shù)據(jù)和GPU 程序?qū)ο?。符號存儲時,MaterialSymFill 中的 Material對象和 GPU 程序?qū)ο蟛捎?XML 字符串方式存儲,而紋理圖片數(shù)據(jù)采用二進制流方式存儲。整個 FillSymbol 對象最終轉(zhuǎn)化為流,既可以存儲在符號庫文件中,也可以通過空間數(shù)據(jù)引擎存儲在數(shù)據(jù)庫中。

  2. 2 符號的可視化

  矢量面的水符號可視化過程如圖 2 所示。

圖 2 符號可視化流程
Fig. 2 Visual process of symbol

  系統(tǒng)底層基于一個渲染循環(huán),能夠不斷渲染在渲染隊列中的可渲染對象??射秩緦ο蟀宋矬w的幾何形態(tài)、方向、紋理、材質(zhì)等信息。符號可視化的過程可簡化為三個階段: 把數(shù)據(jù)構(gòu)建成圖形管線能夠渲染的幾何對象,把符號參數(shù)解析為圖形管線可識別的渲染狀態(tài),然后把以上兩部分組合為可渲染對象放到渲染隊列中進行渲染。

  2. 3 應(yīng)用實例

  本文所述水面符號已在超圖 GIS 平臺軟件中作為三維填充符號的一部分實現(xiàn)。系統(tǒng)采用標準 C + + 語言在windows 環(huán)境下開發(fā)。

  目前三維水面符號具有新建、復(fù)制、動態(tài)修改等功能。圖 3 是系統(tǒng)提供的符號編輯器,使得用戶能夠在可視化的環(huán)境下方便的創(chuàng)建自己的水面符號,并調(diào)整水面效果。能夠調(diào)整的參數(shù)有水波頻率、水波大小、反射亮度、水波方向和水波速度。用戶可以通過指定矢量面圖層上的風格 ID 來設(shè)置場景中的面圖層顯示為水面效果。圖 4是場景中的水面效果。

圖 3 水面符號編輯器
Fig. 3 Water effect editor

  

圖 4 帶有水面的三維場景
Fig. 4 Water in 3D scene

3 結(jié)束語

  本文提出了以符號化的方式來解決三維 GIS 系統(tǒng)中水面可視化問題的方案,闡述了符號化水面的關(guān)鍵技術(shù)及優(yōu)勢,并基于超圖 GIS 平臺軟件進行了實現(xiàn)。符號化水面技術(shù)已經(jīng)作為超圖軟件產(chǎn)品的一部分應(yīng)用于多個實際工程項目中,受到了用戶的一致好評。實踐證明該技術(shù)能夠大大縮短用戶搭建水面場景的時間,能夠很好的利用現(xiàn)有的二維空間矢量數(shù)據(jù),能夠大幅度提升場景的逼真程度。

參考文獻:

  [1] 蔣秉川,夏青,岳利群,等. 基于三維地圖視覺變量理論的三維符號設(shè)計[J]. 測繪科學(xué),2009,34( 6) : 159 - 161.

  [2] 許敏,劉寧,叢鳳波. 二維符號過程和建模方法研究[J].海洋測繪,2006,26( 2) : 45 - 48.

  [3] Bertin. Graphics and Graphic Information Processing[M].Berlin: Walterde Gruyter,1981.

  [4] DiBiase D,MacEachren A,Krygier J,et al. Animation and the role design in scientific visualization[J]. Cartography and Geographic Information Science

  [5] Kraak M. Interactive modeling environment for three - dimensional maps: Functionality and interface issues[M]. Visualization in modern cartography. Oxford: Pergamon,1994: 269 - 285.

  [6] Jobst M,Kyprianidis J E and Doller J. Mechanisms on Graphical Core Variables in the Design of Cartographic 3D City Presentations[M]. Geospatial Vision. Berlin Springer,2008: 45-49.

  [7] OGC. 09 - 042. 3D - Symbology Encoding Discussion Draft[S]. United States: OGC,2009.

  [8] Tessendorf,J. Simulating ocean water[J]. ACM SIGGRAPH 2001 course notes No. 47 Simulating Nature: Realistic and Interactive Techniques.

  [9] Akenine - M ller,Eric Haines. Real - Time Rendering,2nd ed[M]. Massachusetts: A K Peters,2002.

作者簡介: 孫寅樂( 1986 - ) ,男,北京人,中國科學(xué)院大學(xué)地圖學(xué)與地理信息系統(tǒng)專業(yè)碩士研究生,主要研究方向為三維地理信息系統(tǒng)。