( 1. 中國(guó)科學(xué)院地理科學(xué)與資源研究所,北京 100101; 2. 中國(guó)科學(xué)院大學(xué),北京 100039;
論文來(lái)源:《增刊測(cè)繪與空間地理信息》 2013年8月 第36卷
摘要:提出了在三維 GIS 系統(tǒng)中以符號(hào)化的方式解決水面可視化問(wèn)題的方案,基于超圖 GIS 平臺(tái)軟件進(jìn)行了實(shí)現(xiàn)。結(jié)果證明,該方案能夠和二維 GIS 數(shù)據(jù)緊密結(jié)合,提高了三維 GIS 中水面場(chǎng)景的構(gòu)建效率,提升了可視化效果。
關(guān)鍵詞: 地理信息系統(tǒng),場(chǎng)景,三維符號(hào),水面可視化
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ā)展,人們對(duì)于其可視化能力提出了更高的要求。在一些應(yīng)用中,人們不但要求場(chǎng)景中的物體位置準(zhǔn)確,而且要求其逼真、好看。水面效果是影響場(chǎng)景可視化質(zhì)量的關(guān)鍵要素,能大大加強(qiáng) GIS 可視化的用戶體驗(yàn),使用戶更容易理解和接受三維 GIS 所展示的空間信息。
但目前已知的大多數(shù) GIS 系統(tǒng),對(duì)水面的表現(xiàn)力有限,通常只是用一張貼在矢量面上的靜態(tài)紋理或 GIF 圖片來(lái)表現(xiàn)水面,而喪失了對(duì)水面流動(dòng)、起伏、倒影等效果的表現(xiàn)力。少數(shù)從虛擬現(xiàn)實(shí)軟件演化來(lái)的 GIS 系統(tǒng)雖然能夠表現(xiàn)水面效果,但要依賴于特定的插件把 GIS 矢量數(shù)據(jù)轉(zhuǎn)化為 osg、3ds 等模型數(shù)據(jù),不但丟失了部分地理空間信息,而且造成了實(shí)際空間數(shù)據(jù)可顯示數(shù)據(jù)的不一致,通過(guò)這種方式制作三維場(chǎng)景費(fèi)時(shí)費(fèi)力。
三維地圖符號(hào)是來(lái)源于二維地圖符號(hào)的表現(xiàn)形式,三維地圖符號(hào)更形象、直觀,也更容易理解。將水面特效與三維符號(hào)相結(jié)合后,用戶只需要為傳統(tǒng)的二維矢量面指定水面符號(hào),就可以制作出具有水面效果的三維場(chǎng)景。
1 理論與關(guān)鍵技術(shù)
1. 1 三維符號(hào)理論
三維符號(hào)是二維符號(hào)的拓展,能夠使使用者更好的識(shí)別和認(rèn)知空間信息[1]。根據(jù)符號(hào)化對(duì)象的空間特性不同,三維符號(hào)可分為三維實(shí)體模型符號(hào)、三維線狀模型符號(hào)、三維 面 狀 模 型 符 號(hào)、過(guò)程模型符號(hào)和三維注記符號(hào)[2]。水面的三維符號(hào)屬于三維面狀符號(hào)。傳統(tǒng)的地圖符號(hào)設(shè)計(jì)原則是依據(jù) Bertin 視覺(jué)參量體系建立起來(lái)的[3]。
隨著 數(shù) 字 制 圖 技 術(shù) 的 發(fā) 展 和 三 維 地 圖 的 出 現(xiàn),MacEachren,Kraak,Jobst 等人又相繼對(duì)視覺(jué)參量進(jìn)行了補(bǔ)充,增加了動(dòng)態(tài)視覺(jué)變量和深度視覺(jué)變量[4 - 6]。Neubauer在 2009 年向 OGC 遞交的 3D - Symbology Encoding 討論稿中提出以材質(zhì)作為面填充符號(hào)的參量,其所提出的材質(zhì)包含了鏡面光、環(huán)境光、發(fā)射光及陰影透明度等屬性[7]。
本文所提出的水面符號(hào)是在材質(zhì)視覺(jué)參量基礎(chǔ)上進(jìn)行的擴(kuò)展,將水面特征參數(shù),包括水波大小、反射亮度、水波速度等引入到材質(zhì)參量中。
1. 2 水面的可視化技術(shù)
水面具有起伏、流動(dòng)、反射、折射等效果。在計(jì)算機(jī)圖形學(xué)中,水面的波動(dòng)通常采用兩種思路實(shí)現(xiàn),第一種是把水的表面剖分成均勻的網(wǎng)格,然后通過(guò) GPU 中的頂點(diǎn)著色器控制每個(gè)網(wǎng)格頂點(diǎn)按照特定規(guī)律運(yùn)動(dòng)。第二種是通過(guò)控制 GPU 中的片元著色器,使得水面的凹凸紋理隨時(shí)間平移來(lái)實(shí)現(xiàn)的[8]。在三維 GIS 中的數(shù)據(jù)量大,所以渲染性能尤為關(guān)鍵。而第二種思路中由于不用計(jì)算大量的頂點(diǎn)位置,其渲染性能更高,所以本文所實(shí)現(xiàn)的系統(tǒng)中采用了第二種思路。
水面的反射的基本實(shí)現(xiàn)思路是紋理渲染。在每一幀中對(duì)場(chǎng)景進(jìn)行兩次渲染,第一次渲染時(shí),將場(chǎng)景中水面對(duì)象設(shè)置為不可見(jiàn),然后把當(dāng)前相機(jī)移動(dòng)到關(guān)于反射面對(duì)稱的位置,渲染場(chǎng)景到一張紋理上; 第二次渲染時(shí)將整個(gè)場(chǎng)景設(shè)為可見(jiàn),把剛才得到的反射紋理作為水面的紋理進(jìn)行渲染。當(dāng)相機(jī)距水面位置較遠(yuǎn)時(shí),其反射效果很不顯著,為了提高渲染性能,此時(shí)不進(jìn)行第一次渲染,而采用一張靜態(tài)紋理來(lái)代表反射面。
折射效果通常用來(lái)表現(xiàn)水底情況。本文采用多重紋理方式實(shí)現(xiàn)折射效果,采用第一層紋理存儲(chǔ)水面表面法向量,第二層紋理表現(xiàn)反射物體,第三層紋理存儲(chǔ)水底折射物體。當(dāng)光到達(dá)材質(zhì)的交界面時(shí),一部分光被反射,而另一部分將發(fā)生折射,這個(gè)現(xiàn)象稱為菲涅爾效應(yīng)。菲涅爾效應(yīng)混合了反射和折射,使得物體更真實(shí)。理論物理中的菲涅爾公式是很復(fù)雜的,而在實(shí)時(shí)圖形學(xué)中只要在最終效果上滿足人們的視覺(jué)感受就可以了。因此本文采用了以下簡(jiǎn)化公式來(lái)計(jì)算水面的折射和反射混合參數(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è)計(jì)與實(shí)現(xiàn)
水面的符號(hào)化表達(dá)分為水面符號(hào)庫(kù)管理和符號(hào)可視化兩個(gè)模塊。符號(hào)庫(kù)管理模塊負(fù)責(zé)進(jìn)行水面符號(hào)的創(chuàng)建、修改、復(fù)制等。而符號(hào)可視化模塊則負(fù)責(zé)把二維矢量面數(shù)據(jù)在場(chǎng)景中渲染為水面效果。
2. 1 三維符號(hào)庫(kù)的設(shè)計(jì)
三維符號(hào)庫(kù)的設(shè)計(jì)是符號(hào)庫(kù)管理的核心。由于水面特效需要用到材質(zhì)參數(shù)、著色器參數(shù)、著色器代碼、紋理等多種不同種類的參數(shù),所以水面符號(hào)的設(shè)計(jì)比傳統(tǒng)三維填充符號(hào)更為復(fù)雜。本文所實(shí)現(xiàn)的系統(tǒng)中符號(hào)庫(kù)對(duì)象設(shè)計(jì)如圖 1 所示。
水面符號(hào)作為一種填充符號(hào)( FillSymbol) ,而填充符號(hào)可能是有很多層疊加在一起形成的,每一層是一個(gè) FillSymbolBase,材質(zhì)填充對(duì)象( MaterialSymFill) 是其中一種FillSymbolBase。MaterialSymFill 中包含了一個(gè)材質(zhì)對(duì)象( Material) ,材質(zhì)對(duì)象中包含了渲染此材質(zhì)時(shí)所需要設(shè)置的渲染狀態(tài)參數(shù),同時(shí)還包含了渲染時(shí)需要用到的 GPU程序名稱以及用到的紋理名稱。MaterialSymFill 中還含有兩個(gè)字典,其 key 值與 Material 對(duì)象中的 GPU 程序名稱和紋理名稱對(duì)應(yīng),value 值包含的分別是紋理圖片數(shù)據(jù)和GPU 程序?qū)ο?。符?hào)存儲(chǔ)時(shí),MaterialSymFill 中的 Material對(duì)象和 GPU 程序?qū)ο蟛捎?XML 字符串方式存儲(chǔ),而紋理圖片數(shù)據(jù)采用二進(jìn)制流方式存儲(chǔ)。整個(gè) FillSymbol 對(duì)象最終轉(zhuǎn)化為流,既可以存儲(chǔ)在符號(hào)庫(kù)文件中,也可以通過(guò)空間數(shù)據(jù)引擎存儲(chǔ)在數(shù)據(jù)庫(kù)中。
2. 2 符號(hào)的可視化
矢量面的水符號(hào)可視化過(guò)程如圖 2 所示。
系統(tǒng)底層基于一個(gè)渲染循環(huán),能夠不斷渲染在渲染隊(duì)列中的可渲染對(duì)象??射秩緦?duì)象包含了物體的幾何形態(tài)、方向、紋理、材質(zhì)等信息。符號(hào)可視化的過(guò)程可簡(jiǎn)化為三個(gè)階段: 把數(shù)據(jù)構(gòu)建成圖形管線能夠渲染的幾何對(duì)象,把符號(hào)參數(shù)解析為圖形管線可識(shí)別的渲染狀態(tài),然后把以上兩部分組合為可渲染對(duì)象放到渲染隊(duì)列中進(jìn)行渲染。
2. 3 應(yīng)用實(shí)例
本文所述水面符號(hào)已在超圖 GIS 平臺(tái)軟件中作為三維填充符號(hào)的一部分實(shí)現(xiàn)。系統(tǒng)采用標(biāo)準(zhǔn) C + + 語(yǔ)言在windows 環(huán)境下開(kāi)發(fā)。
目前三維水面符號(hào)具有新建、復(fù)制、動(dòng)態(tài)修改等功能。圖 3 是系統(tǒng)提供的符號(hào)編輯器,使得用戶能夠在可視化的環(huán)境下方便的創(chuàng)建自己的水面符號(hào),并調(diào)整水面效果。能夠調(diào)整的參數(shù)有水波頻率、水波大小、反射亮度、水波方向和水波速度。用戶可以通過(guò)指定矢量面圖層上的風(fēng)格 ID 來(lái)設(shè)置場(chǎng)景中的面圖層顯示為水面效果。圖 4是場(chǎng)景中的水面效果。
3 結(jié)束語(yǔ)
本文提出了以符號(hào)化的方式來(lái)解決三維 GIS 系統(tǒng)中水面可視化問(wèn)題的方案,闡述了符號(hào)化水面的關(guān)鍵技術(shù)及優(yōu)勢(shì),并基于超圖 GIS 平臺(tái)軟件進(jìn)行了實(shí)現(xiàn)。符號(hào)化水面技術(shù)已經(jīng)作為超圖軟件產(chǎn)品的一部分應(yīng)用于多個(gè)實(shí)際工程項(xiàng)目中,受到了用戶的一致好評(píng)。實(shí)踐證明該技術(shù)能夠大大縮短用戶搭建水面場(chǎng)景的時(shí)間,能夠很好的利用現(xiàn)有的二維空間矢量數(shù)據(jù),能夠大幅度提升場(chǎng)景的逼真程度。
參考文獻(xiàn):
[1] 蔣秉川,夏青,岳利群,等. 基于三維地圖視覺(jué)變量理論的三維符號(hào)設(shè)計(jì)[J]. 測(cè)繪科學(xué),2009,34( 6) : 159 - 161.
[2] 許敏,劉寧,叢鳳波. 二維符號(hào)過(guò)程和建模方法研究[J].海洋測(cè)繪,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.
作者簡(jiǎn)介: 孫寅樂(lè)( 1986 - ) ,男,北京人,中國(guó)科學(xué)院大學(xué)地圖學(xué)與地理信息系統(tǒng)專業(yè)碩士研究生,主要研究方向?yàn)槿S地理信息系統(tǒng)。