陳俊任,李景文,傅毓,蘇子雍
(1.桂林理工大學(xué)測繪地理信息學(xué)院,廣西桂林 541004;2.廣西空間信息與測繪重點實驗室(桂林理工大學(xué)),廣西桂林 541004; 3.武警廣西總隊,廣西南寧 530022)
一種基于面向?qū)ο蠛蚔RML的地理實體三維建模方法
陳俊任1,2?,李景文1,2,傅毓1,2,蘇子雍3
(1.桂林理工大學(xué)測繪地理信息學(xué)院,廣西桂林 541004;2.廣西空間信息與測繪重點實驗室(桂林理工大學(xué)),廣西桂林 541004; 3.武警廣西總隊,廣西南寧 530022)
在分析現(xiàn)有三維空間對象的幾何表示方法和面向?qū)ο蠓椒ǖ幕A(chǔ)上,從三維空間的角度去理解和表達(dá)現(xiàn)實世界中的地物、地理現(xiàn)象及其空間關(guān)系。提出一種基于面向?qū)ο蠛蚔RML的地理實體三維建模方法,以三維建筑物模型構(gòu)建為例的驗證結(jié)果顯示,該方法可以快速地進(jìn)行三維重建,為不規(guī)則、非對稱性地理實體三維建模及地理實體的面向?qū)ο笕S可視化的實現(xiàn)提供了新方法和新思路。
面向?qū)ο?;VRML;地理實體;三維建模
世界的本身是在三維空間中存在的,目前2DGIS在描述真三維實體存在局限性,如何完整地描述三維地理現(xiàn)象再現(xiàn)三維世界,其中涉及的一個核心問題是如何進(jìn)行三維空間對象的幾何表示[1]。近年來眾多學(xué)者研究了結(jié)構(gòu)實體幾何CSG、邊界表示法BR、八叉樹、四面體格網(wǎng)以及八叉樹和不規(guī)則四面體等混合數(shù)據(jù)模型來表示三維空間實體[2,3]。然而,現(xiàn)有的三維建模很少對地理實體進(jìn)行描述和表達(dá)。地理實體是為了表達(dá)三維地理世界而抽象出來一個具有相對意義的概念[4],其抽象程度根據(jù)實際描述和表達(dá)地理事物特征屬性的需要而定,通常地理實體分為點狀實體、線狀實體、面狀實體和體狀實體,復(fù)雜的地理實體由這些類型的實體構(gòu)成。文中針對這些實體建模的特點,結(jié)合軟件的實用性及可擴(kuò)展性提出了一種基于面向?qū)ο蠛蚔RML的三維建模方法,實現(xiàn)了對地理實體三維建模和可視化仿真。
2.1 面向?qū)ο?/p>
面向?qū)ο?Object-Oriented)方法不僅是一種程序設(shè)計技術(shù),而且是一種全新的設(shè)計與構(gòu)造系統(tǒng)的思想和方法[5]。它是以對象為中心的軟件開發(fā)方法,具有高度的抽象性、完整的封裝性、繼承性和多態(tài)性,可以很好地描述現(xiàn)實世界。
現(xiàn)實地理世界中,地理空間信息是對地理實體的具體描述和表達(dá),地理實體是地理空間中獨立的、具有完整地理意義的最小邏輯單元。在地理實體三維建模中,可以利用面向?qū)ο蠹夹g(shù)將任何一個三維實體抽象為一個點對象、線對象、面對象、體對象以及組合對象,其抽象表達(dá)如圖1所示。這個對象封裝了構(gòu)成地理實體的幾何數(shù)據(jù)、屬性數(shù)據(jù)以及相應(yīng)的操作等,對象之間通過對象標(biāo)識建立起聯(lián)系,每個對象都具有自己的屬性和任務(wù),一旦獲取了一個對象,那么就獲得了與此對象相對應(yīng)地理實體的全部信息。將三維可視化看做是一些相互作用的對象組成的集合,集合中的對象根據(jù)收到的消息來完成相應(yīng)的任務(wù),從而實現(xiàn)系統(tǒng)的整體功能。
圖1 地理實體的抽象表達(dá)過程
2.2 VRML
VRML是一種建立真實世界模型或虛構(gòu)三維世界的場景建模語言,定義了一種把3D圖形和多媒體集成在一起的文件格式,允許描述一個現(xiàn)有的或者想象的地理事物,并把它放入虛擬的三維環(huán)境中,同時也是一個開發(fā)標(biāo)準(zhǔn),其他技術(shù)可以引用VRML或者成為VRML的一部分[6]。VRML語法結(jié)構(gòu)化、層次化,利用VRML三維交互建模算法不僅可以靈活高效地創(chuàng)建三維模型,而且可以控制三維場景的布置、數(shù)據(jù)管理、實時編輯等,實現(xiàn)仿真數(shù)據(jù)的可視化和虛擬現(xiàn)實,VRML工作方式如圖2所示。
圖2 VRML的工作方式
基于面向?qū)ο蠛蚔RML的地理實體三維模型是以面向?qū)ο蠛蚔RML建模方法為基礎(chǔ),將復(fù)雜的地理實體抽象分解成若干簡單的子對象,然后根據(jù)點→點集→線→線集→面→面集的思路,再分別建立各個子對象模型,最后把這些簡單對象子模型按一定的關(guān)系連接起來就可以得到整個地理實體的復(fù)雜三維模型。
3.1 基于面向?qū)ο蠛蚔RML地理實體的聯(lián)合表達(dá)
VRML把場景中的物體看成對象,主要包括節(jié)點、域值、事件、路由、原型以及腳本等要素,其中節(jié)點是對客觀世界中各種事物、對象、概念的抽象描述[6]。面向?qū)ο笾饕婕暗囊赜蓄?、對象、消息、接口、屬性等概念,而VRML具有面向?qū)ο蟮奶卣骱蛯哟谓Y(jié)構(gòu),可以很好地與面向?qū)ο笳Z言相對應(yīng)[7,8]:VRML節(jié)點/造型對應(yīng)面向?qū)ο笳Z言中的對象、VRML原型對應(yīng)類、VRML域?qū)?yīng)屬性、VRML出事件與入事件對應(yīng)消息、VRML路由對應(yīng)消息的傳遞、VRML腳本對應(yīng)接口。因此,結(jié)合具體應(yīng)用,考慮模型的通用性、系統(tǒng)的可擴(kuò)展性,各類地理實體可以通過面向?qū)ο蠹夹g(shù)和VRML聯(lián)合表達(dá),其關(guān)系如圖3所示。
3.2 規(guī)則地理幾何實體基礎(chǔ)類的構(gòu)建方法
地理實體三維模型由多個子模型集合而成,每個子模型是由多個實體構(gòu)成,而每個物體則由若干基本三維幾何體有機(jī)構(gòu)成。VRML中提供多種規(guī)則幾何體結(jié)構(gòu)的造型[6],包括長方體、圓柱體、圓錐體、球體等幾何體結(jié)構(gòu),這些規(guī)則幾何體是構(gòu)建復(fù)雜的三維空間實體的基礎(chǔ)和前提。為了對這些不同的幾何形體進(jìn)行統(tǒng)
圖3 地理實體的聯(lián)合表達(dá)
一的分析與保存,類的設(shè)計如下:建立基類C3DFigure,添加純虛函數(shù)Parse()和glDraw(),分別用于語法分析和三維顯示,然后創(chuàng)建此類的派生類CBox、CCone、CCylinder、CSphere等,再分別重載基類的Parse()和glDraw()函數(shù),實現(xiàn)自身的語法分析和顯示。在此,只描述地理實體長方體類(CBox)建模方法,其他幾何體類建模方法可以依此類推。
在VRML中,長方體的基本幾何參數(shù)長(Length)、寬(Width)和高(Height)是用Box節(jié)點的size域的域值來描述。size域的三個域值分別表示Box在X方向的寬度、Y方向的高度、Z方向的深度。長方體的原始幾何中心位于局部坐標(biāo)系的原點,因此,在沒有發(fā)生坐標(biāo)變換之前,可以根據(jù)長、寬、高基本參數(shù)計算出幾何體各個頂點的位置坐標(biāo)。如果坐標(biāo)發(fā)生變換,可以根據(jù)幾何學(xué)中的齊次坐標(biāo)表示法,通過變換矩陣實現(xiàn)圖形的基本變換,由此計算出變換后的頂點坐標(biāo),最后通過其坐標(biāo)構(gòu)造出長方體的各個點對象。
地理實體長方體類的建模算法規(guī)范如下:
#VRML V2.0 utf8
Shape{
appearance Appearance{
material Material{}
}
CBox//創(chuàng)建長方體類
{
field SFVec3f size 2.0 2.0 2.0#(0,+∞)
}
3.3 復(fù)雜地理幾何體建模方法
自然界中某些復(fù)雜形體是無法通過基本造型的簡單組合而滿足視覺需求,此時應(yīng)考慮如何以立體幾何中最基本的點、線、面方式構(gòu)造空間復(fù)雜造型。在VRML中復(fù)雜的地理幾何體通常由任意形狀、任意數(shù)量的曲線及曲面構(gòu)成,因此,對于任意復(fù)雜的自然界物體造型,均可使用VRML復(fù)雜造型技術(shù)。在構(gòu)造復(fù)雜地理幾何體之前,可以預(yù)先定義點集(PointSet)、索引面(IndexedFaceSet)、索引線(IndexedLineSet)以及高程格網(wǎng)(ElevationGrid)、拉伸面(Extrusion)等一些高級造型節(jié)點作為Shape造型節(jié)點geometry域值加以創(chuàng)建。
空間點數(shù)據(jù)是空間定位數(shù)據(jù)庫的核心,任何空間實體最終都是通過點坐標(biāo)來控制的,任何實體的建模最終是對空間點的建模。它主要包括點標(biāo)識號、空間三維坐標(biāo)(x,y,z)等字段。三維空間點建模分為兩種方式:一種是控制點,一種是實體點。對于控制點用PointSet節(jié)點進(jìn)行建模,對于實體點通過Sphere節(jié)點進(jìn)行建模,因為VRML中的PointSet節(jié)點沒有大小的顯示特性[5]??刂泣c建模算法描述如下:
PointSet
{
exposedField SFNode coord NULL//定義空間點的坐標(biāo)exposedField SFNode color NULL//定義空間點的顏色}
在VRML建模中線分為控制線和實體線兩類,控制線通過IndexLineSet來建模,沒有實際的粗細(xì)顯示特性,實體線通過Extrusion節(jié)點建模。
面是構(gòu)成體的基本元素,同時某些面可以直接構(gòu)成空間實體對象。對于任意曲面的構(gòu)造,在VRML中可以利用IndexedFaceSet節(jié)點;如果構(gòu)造高效建造管狀對象和彎曲對象,可以利用Extrusion節(jié)點;ElevationGrid節(jié)點則通常用于繪制地形圖形狀和建造地形;而利用Coordinate節(jié)點來創(chuàng)建出點、線、面造型的空間參數(shù),則可以指定PointSet、IndexedFaceSet等節(jié)點的三維坐標(biāo)。
3.4 VRML中幾種地理實體造型建模比較
VRML中幾種地理實體造型建模比較 表1
在模型構(gòu)建過程中,針對描述和表達(dá)地理事物特征屬性的需要采用不同的造型節(jié)點。對于一些規(guī)則的簡單地理幾何造型,可以直接采用VRML中提供的Box等基本節(jié)點造型建模;對于不規(guī)則的復(fù)雜地理幾何體,不能僅僅由簡單造型組合構(gòu)成,而是綜合運用一些復(fù)雜節(jié)點造型如ElevationGrid節(jié)點、Extursion節(jié)點、IndxedFdacedset節(jié)點面造型等建模方法,高效地構(gòu)造出具有高真實感的三維模型。
對于城市中的建筑物,首先將建筑物分為規(guī)則建筑物和不規(guī)則建筑物,然后將其抽象分解為建筑物構(gòu)件對象,再利用VRML節(jié)點/造型與構(gòu)件對象進(jìn)行映射,實現(xiàn)三維建筑模型的構(gòu)建。
4.1 三維建筑模型構(gòu)建過程
基于面向?qū)ο蠛蚔RML的三維建筑模型是采用面向?qū)ο蟮姆椒▽⒔ㄖ锍橄蠓纸饨ㄖ飿?gòu)件對象,它主要是通過墻體對象組合構(gòu)成建筑物對象,對墻體對象又可以進(jìn)一步分解為左墻體對象、右墻體對象、外墻體對象,這些對象又可以進(jìn)一步細(xì)分為更小的對象,直到分解為點、線、面、體四類元對象,這些對象與VRML節(jié)點/造型相映射,通過VRML方式構(gòu)建建筑物的構(gòu)建對象,再逆向運用面向?qū)ο蟮姆椒ㄟM(jìn)行構(gòu)件對象的組合及運算,最終實現(xiàn)三維建筑物的幾何特征、屬性特征和操作方法以對象的方式進(jìn)行封裝和一體化管理,具體過程如圖4所示。
圖4 三維建筑模型構(gòu)建過程
4.2 三維建筑模型可視化實現(xiàn)
三維建筑構(gòu)件對象主要是通過VRML中的兩種方式進(jìn)行構(gòu)建:一種是直接通過VRML中的節(jié)點/造型進(jìn)行構(gòu)建,該方法主要構(gòu)建簡單的對象;另一種方式是先通過VRML原型構(gòu)建新的節(jié)點類型,然后再通過第一種方式生成對象,該方法主要構(gòu)建復(fù)雜的對象特別是重用性比較高的對象。對每一類對象通過VRML建模都會產(chǎn)生一個后綴為wrl的文件,每一個文件對應(yīng)這一個對象,對這些對象可以通過Transform節(jié)點及相應(yīng)的域進(jìn)行模型的平移、旋轉(zhuǎn)、縮放等空間變換操作,組合成更高一層的對象,直至構(gòu)成建筑物對象。其部分主要代碼如下:
Transform{
childrenTransform{
childrenInline{
url"build\MAINLEFT.wrl" #構(gòu)建的左墻體對象
}
}
}
Transform{
childrenTransform{ childrenInline{
url"build\MAINOUT.wrl" #構(gòu)建的外墻體對象
}
}
……
構(gòu)建的建筑物三維模型如圖5所示。
圖5 建筑物三維模型圖
本示例中的建筑物基本屬于規(guī)則建筑物對象,其幾何形體大多呈現(xiàn)圓柱體、長方體、三棱體等組合外形,因此可定義圓柱體、長方體、三棱體等幾何形體為基本體對規(guī)則建筑體對象進(jìn)行表達(dá),實現(xiàn)較為規(guī)則的空間目標(biāo)對象的三維重建,但對于不規(guī)則建筑物對象則要借助3ds Max進(jìn)行三維構(gòu)建,最后導(dǎo)出為VRML文件。
本文提出了一種基于面向?qū)ο蠛蚔RML的地理實體三維建模方法,該方法采用面向?qū)ο笏枷雽⑷S空間地理事物抽象為點、線、面、體等空間對象,利用VRML提供的基本造型和高級造型節(jié)點進(jìn)行三維建模,使得場景、模型的設(shè)計和編輯更加簡單、靈活。這很好地解決了針對于不同的應(yīng)用需要進(jìn)行大量重復(fù)建模工作的問題。經(jīng)實驗結(jié)果表明,此方法有效地提高了三維物體建模效率,但對于不規(guī)則復(fù)雜實體需借助其他建模軟件,最后導(dǎo)出為VRML文件。
[1] 萬劍華,朱長貴.3D-GIS中空間對象的幾何表示[J].礦山測量,2001(1):16~19.
[2] 徐則中,莊燕濱.三維建模系統(tǒng)的綜述[J].測繪通報,2008(2):16~19.
[3] 吳德華,毛先成,劉雨.三維空間數(shù)據(jù)模型綜述[J].測繪工程,2005,14(3):70~73.
[4] 李清泉,楊必勝,史文中等.三維空間數(shù)據(jù)的實時獲取、建模與可視化[M].武漢:武漢大學(xué)出版社,2003.
[5] 山海濤,郭建星,翟輝琴等.基于面向?qū)ο蟮目臻g目標(biāo)三維交互式建模的設(shè)計[J].測繪學(xué)院學(xué)報,2004,21(3): 205~207.
[6] 黃文麗,盧碧紅,楊志剛等.VRML語言入門與應(yīng)用[M].北京:中國鐵道出版社,2003.
[7] 王春香,朱軍,孟令奎.基于VRML的交互式虛擬教室建模[J].地理空間信息,2009,7(1):114~116.
[8] 陳啟祥,蘇艷,鄭慶花等.基于VRML的三維建模技術(shù)[J].計算機(jī)與數(shù)字工程,2007,38(5):161~163.
A Object-oriented and VRM L M ethod for Geographic Entity 3D M odeling
Chen Junren1,2,LiJingwen1,2,F(xiàn)u Yu1,2,Su Ziyong3
(1.College of Geomatics and Geoinformation,Guilin University of Technology,Guilin 541004,China;2.Guangxi Key Laboratory of Spatial Information and Geomatics,Guilin 541004,China;3.Armed Police Corps in Guangxi,Nanning 530022,China)
Based on analyzing the geometric representationmethod of the existing 3D spatial objects and object-oriented method,this paper aim to understand and express the objects,geographic phenomena and their spatial relationships in the realworld from the 3D space perspective,and presenta object-oriented-based and VRML 3Dmodelingmethod for geographical entity.By taking the 3D buildingmodeling as a example,the results suggests that themethod can complete the 3D reconstruction quickly,and provide a new method and new thinking to construct the 3Dmodel and realize the object-oriented 3D visualization for irregular and asymmetric geographic entity.
object-oriented;VRML;geographic entity;3D modeling
1672-8262(2013)04-25-04
P208.2
A
2012—12—02
陳俊任(1985—),男,碩士研究生,從事GIS理論和應(yīng)用方面的研究。
廣西自然科學(xué)基金重點項目(桂科自2011GXNSFD018003);廣西空間信息與測繪重點實驗室主任基金項目(桂科能1103108-03)