陳建輝,李朝奎,2,3,方 軍,2,3,卜 璞,周青藍(lán)
( 1. 湖南科技大學(xué) 地理空間信息技術(shù)國家地方聯(lián)合工程實(shí)驗(yàn)室,湖南 湘潭 411201;2. 湖南科技大學(xué) 地理空間信息湖南省工程實(shí)驗(yàn)室,湖 南湘潭 411201;3. 湘潭市地理空間信息應(yīng)用工程技術(shù)中心,湖南 湘潭 411201)
三維GIS以其逼真的場(chǎng)景、直觀的視覺效果彌補(bǔ)了二維GIS在空間表現(xiàn)及空間分析功能方面的不足.近年來三維GIS在三維場(chǎng)景的構(gòu)建、二三維一體化等領(lǐng)域取得了長足進(jìn)展.其中,三維場(chǎng)景(模型)的構(gòu)建問題是三維GIS要解決的首要問題,綜合眾多三維場(chǎng)景的構(gòu)建技術(shù)來看,目前主流的三維場(chǎng)景構(gòu)建方法有以下幾種:
1)三維軟件建模(即單純的幾何建模):這種方法構(gòu)建的模型和場(chǎng)景簡潔、美觀,能極其精細(xì)地表現(xiàn)地物特征和細(xì)節(jié),但建模周期長,人力消耗多,模型占用內(nèi)存大,對(duì)計(jì)算機(jī)軟硬件要求高;
2)基于傾斜攝影的建模:這種方法精度高,對(duì)真實(shí)地物的還原性好,但可視化結(jié)果不如幾何建模美觀且設(shè)備及技術(shù)成本高;
3)基于規(guī)則驅(qū)動(dòng)建模:適用于大面積相似建筑物的模型構(gòu)建,代表軟件為City Engine,采用特定規(guī)則建模,建模效率高、成品可擴(kuò)展性好,但規(guī)則復(fù)雜,不利于初學(xué)者掌握;
4)基于虛擬現(xiàn)實(shí)軟件或開發(fā)圖像庫OpenGL等高質(zhì)量3D圖形開發(fā)平臺(tái)的建模:使用VC++、VB、C#等編程語言實(shí)現(xiàn)三維建模、紋理、三維地形以及場(chǎng)景漫游[1],但工程量大,對(duì)建模人員在計(jì)算機(jī)領(lǐng)域的綜合素質(zhì)有極高的要求.
綜上所述,本文提出一種基于3Ds Max與Sketch Up的聯(lián)合三維建模方法,并以三維校園建設(shè)為例進(jìn)行實(shí)驗(yàn),將構(gòu)建的三維模型嵌入所開發(fā)的系統(tǒng),實(shí)現(xiàn)了系統(tǒng)的基本功能.這種方法避免了單一軟件建模的局限性,充分發(fā)揮了多種軟件的優(yōu)勢(shì),三維模型的可視化效果良好.
校園三維場(chǎng)景的構(gòu)建包括兩方面內(nèi)容:地圖方面,利用已知的地圖進(jìn)行數(shù)字化或直接應(yīng)用CAD校園規(guī)劃圖,并在ArcGIS中保存為矢量化文件;模型方面,應(yīng)用三維建模軟件3Ds Max和Sketch Up,配合PhotoShop進(jìn)行美化、貼圖.將兩方面的結(jié)果統(tǒng)一導(dǎo)入到ArcScene中,對(duì)各個(gè)地物的大小、方向、位置進(jìn)行調(diào)整,形成完整的三維場(chǎng)景.具體實(shí)現(xiàn)流程如圖1所示.
圖1 三維場(chǎng)景構(gòu)建流程Fig.1 Flow chart of 3D scene construction
實(shí)際校園中各種設(shè)施、樓宇、道路、湖泊及綠化帶紛繁復(fù)雜,不可能在模型中面面俱到.本著"關(guān)注重點(diǎn)、模仿特征、追求視覺、少占內(nèi)存"的原則,對(duì)建模區(qū)域的地物景觀進(jìn)行不同程度的取舍,最終確定建模內(nèi)容[3]如圖2所示.
圖2 三維場(chǎng)景中模型內(nèi)容Fig.2 Content of 3D scene model
目前三維建模軟件很多,且各有所長.主流三維建模軟件的特點(diǎn)及應(yīng)用見表1.
表1 常見三維建模軟件的對(duì)比Tab.1 Comparison of common 3D modeling softwares
表1中3Ds Max軟件的建模優(yōu)勢(shì)比較明顯.其構(gòu)建的三維模型精細(xì)化程度高,細(xì)節(jié)表現(xiàn)性好,但正因如此,使得每一個(gè)模型的數(shù)據(jù)存儲(chǔ)量大幅上升,對(duì)計(jì)算機(jī)的處理能力提出了比較高的要求;Maya常用于動(dòng)畫的制作,其素材大多由3Ds Max進(jìn)行創(chuàng)建;Sketch Up建模迅速,模型存儲(chǔ)空間小,渲染快速,光照設(shè)定比較智能,但對(duì)曲線、曲面的表現(xiàn)較弱,模型效果不如3Ds Max精細(xì),對(duì)實(shí)體的表現(xiàn)不夠逼真,高質(zhì)量的模型效果依靠眾多插件支撐;Lumion軟件本身對(duì)計(jì)算機(jī)配置要求比較高,并且建模方法單一,缺乏靈活性;City Engine雖建模迅速,但其基于規(guī)則的建模特性使得眾多建模人員難以上手.
基于以上對(duì)比,本系統(tǒng)以3Ds Max為主,構(gòu)建重點(diǎn)地物的精細(xì)模型,以Sketch Up為輔構(gòu)建次要地物的簡模,并運(yùn)用Sketch Up快速的貼圖及渲染能力對(duì)模型進(jìn)行渲染輸出[2].
1.4.1 基礎(chǔ)數(shù)據(jù)的獲取
構(gòu)建三維場(chǎng)景所需的數(shù)據(jù)主要有地圖數(shù)據(jù)(校園規(guī)劃矢量圖)、建筑物設(shè)計(jì)圖紙、建筑物高度數(shù)據(jù)、紋理數(shù)據(jù)等.
1)地圖數(shù)據(jù):從學(xué)?;ㄌ帿@得1:1 000的校園規(guī)劃CAD平面圖,對(duì)其中的樓宇、道路等所需要素圖層分別進(jìn)行提取;也可以根據(jù)遙感圖像或其他校園規(guī)劃圖片自行矢量化;
2)建筑物設(shè)計(jì)圖紙:通常指樓宇的CAD設(shè)計(jì)圖紙,用于后期在3Ds Max和Sketch Up里的快速建模.
3)建筑物高度數(shù)據(jù):CAD圖紙中會(huì)包含相應(yīng)的樓宇高度數(shù)據(jù),其他設(shè)施如路燈等小品的數(shù)據(jù),在無須太精細(xì)的情況下依據(jù)經(jīng)驗(yàn)?zāi)繙y(cè)定義即可.
4)紋理數(shù)據(jù):紋理數(shù)據(jù)通常來自于單反相機(jī)的實(shí)際拍攝與后期處理,部分紋理可以PhotoShop制作或由網(wǎng)絡(luò)下載.
1.4.2 聯(lián)合建模
后續(xù)的開發(fā)系統(tǒng)中以點(diǎn)、線、多邊形3種要素來表現(xiàn)地物:點(diǎn)狀要素如建筑、樹木、路燈;線狀要素如道路中心線;多邊形要素如湖泊、地面等.對(duì)于主要建筑模型,運(yùn)用3Ds Max進(jìn)行建模的具體步驟如下:
1)清理CAD圖層
無論是校園規(guī)劃CAD平面圖還是樓宇平面圖,都會(huì)涉及大量的與建模無關(guān)的信息(如校園規(guī)劃圖里的車庫圖層、綠化圖層,樓宇CAD平面圖里的洗手池圖層等),將無關(guān)信息進(jìn)行清理,保留所需信息是建模的首要步驟.以樓宇為例,圖層清理前后的效果如圖3所示.
圖3 圖層清理前后對(duì)比Fig.3 Comparison of Layers before and after cleaning
2)3Ds Max建模
3Ds Max提供了多種建模方式,室外建模設(shè)計(jì)中最常用的有以下7種:基礎(chǔ)形體建模、編輯器建模、二維形建模、多邊形建模、放樣建模、組合建模及NURBS曲線建模[4-6].使用二維圖形建模中的"擠出"修改器建模是最常用的方法,并配合其他功能,最終實(shí)現(xiàn)單體模型的構(gòu)建.
3)Sketch Up建模
Sketch Up相對(duì)3Ds Max建模效果較為粗糙,但建模效率高,并且其對(duì)模型的貼圖及渲染比較迅速,因此對(duì)于次要的地物模型均可采用該軟件進(jìn)行建模.對(duì)于形體規(guī)則的建筑物,如居民家屬樓等,在Sketch Up 中按相應(yīng)尺寸直接進(jìn)行拉伸即可.Sketch Up與Auto CAD、3Ds Max之間格式的相互兼容,使三維建模的方法愈加多樣與快捷.
4)紋理貼圖
所有模型的紋理制作與導(dǎo)出均在Sketch Up中進(jìn)行,這就避免了在3Ds Max 中創(chuàng)建燈光、烘焙等煩瑣的操作.紋理圖片格式為.jpg格式,Sketch Up材質(zhì)庫中提供了如屋頂、植物、瀝青等可供選擇的多種常用材質(zhì).
為了保證紋理的正常顯示,避免瀏覽時(shí)紋理丟失,紋理數(shù)據(jù)的長度和寬度必須是2的整次冪大小,如16X16,8X32等.相機(jī)拍攝的照片,還要進(jìn)行裁剪、校正、調(diào)色等處理,同時(shí)運(yùn)用圖像處理軟件,對(duì)紋理數(shù)據(jù)進(jìn)行壓縮、減小數(shù)據(jù)量[1].對(duì)于面狀要素,直接運(yùn)用具有三維效果的紋理進(jìn)行貼附,也能達(dá)到比較好的效果.
1.4.3 模型的存取
為了能夠在ArcGIS Engine 的Scene Control控件中識(shí)別并顯示模型,需要將模型導(dǎo)出為.3ds格式.Sketch Up導(dǎo)出模型時(shí)的一個(gè)人性化設(shè)計(jì)是:系統(tǒng)會(huì)自動(dòng)將所附材質(zhì)復(fù)制并添加到保存文件的文件夾中,同時(shí)對(duì)圖片進(jìn)行系統(tǒng)默認(rèn)的命名.
1.4.4 三維場(chǎng)景的集成
將所建模型分別加載到ArcScene 場(chǎng)景中,對(duì)原場(chǎng)景中的點(diǎn)、線、多邊形要素以三維模型進(jìn)行替換,并分組管理,最終建立起三維虛擬校園圖,如圖4所示.需要注意的是,校園平面圖中的建筑圖層是面狀圖層,而三維場(chǎng)景中的建筑需要以點(diǎn)符號(hào)進(jìn)行表現(xiàn),所以要提前將面狀圖層運(yùn)用ArcMap中的分析工具轉(zhuǎn)換為點(diǎn)圖層.
圖4 校園三維集成全景Fig.4 Campus 3D integrated panorama
本文以某高校為例,運(yùn)用上述聯(lián)合建模方法構(gòu)建了校園的部分三維場(chǎng)景,并將其運(yùn)用到三維虛擬校園系統(tǒng)的建設(shè)中.本虛擬校園系統(tǒng)的總體架構(gòu)如圖5所示.系統(tǒng)以ArcGIS10.0為平臺(tái),以VS2010為開發(fā)環(huán)境,采用C#.NET語言基于Arc Engine組件進(jìn)行開發(fā),實(shí)現(xiàn)了場(chǎng)景加載、三維瀏覽、地物屬性查詢及動(dòng)畫制作與輸出等基本功能,如圖6所示.
圖5 系統(tǒng)總體架構(gòu)Fig.5 System Architecture
圖6 系統(tǒng)功能設(shè)計(jì)Fig.6 System function design
1)文件加載
該功能可以直接采用ArcGIS Engine已經(jīng)封裝好的方法,通過拖動(dòng)控件的方法進(jìn)行加載.首先在VS中建立新窗體,并加載Toolbar Control、TOC Control、Scene Control、License Control及Map Control這5個(gè)基本控件.再對(duì)各個(gè)控件進(jìn)行屬性編輯,實(shí)現(xiàn)控件之間功能的內(nèi)在鏈接與相互操作.
2)場(chǎng)景瀏覽
該功能包括視圖的放縮、整體顯示及場(chǎng)景的漫游.放大和縮小通過改變MapControl中當(dāng)前視圖的Extent屬性實(shí)現(xiàn).場(chǎng)景的漫游直接調(diào)用ArcGIS Engine中的漫游工具來實(shí)現(xiàn).表2列出了實(shí)現(xiàn)視圖瀏覽功能的類及作用.
表2 常見視圖瀏覽功能的類參照表Tab.2 Reference table for "Class" of common view-browsing function
3)自定義動(dòng)畫
自定義動(dòng)畫能夠根據(jù)開發(fā)者的興趣點(diǎn)、目標(biāo)點(diǎn)對(duì)既有場(chǎng)景進(jìn)行編輯,以達(dá)到美觀、實(shí)用的展示效果.
①添加場(chǎng)景書簽及關(guān)鍵幀
BookMark3DClass類用于添加場(chǎng)景的書簽,IKeyframe接口的CaptureProperties()方法用于創(chuàng)建關(guān)鍵幀.關(guān)鍵幀所記錄的位置實(shí)際上是攝像機(jī)展現(xiàn)的一個(gè)靜幀,不同關(guān)鍵幀的創(chuàng)建實(shí)際是更改攝像機(jī)不同的視點(diǎn)及視域.
②播放動(dòng)畫
通過調(diào)用AddTrack()方法及ApplyTracks()方法即可讀取關(guān)鍵幀播放動(dòng)畫.
③輸出動(dòng)畫
將動(dòng)畫輸出為視頻后,場(chǎng)景瀏覽就可以脫離固定平臺(tái)而實(shí)現(xiàn),一般輸出的視頻為*.avi格式,主要應(yīng)用ISceneExporter3d接口和IAVIExporter接口實(shí)現(xiàn).
4)屬性編輯與查詢
要素屬性的查詢是ArcGIS中最基本的功能,通過屬性查詢,用戶能夠清晰地了解圖層或具體地物的詳細(xì)信息.屬性的編輯是指對(duì)未添加的屬性或已有的屬性值做適當(dāng)?shù)奶砑踊蛐薷?以使圖層的信息符合當(dāng)前實(shí)際.屬性的編輯需用到IFeature接口的set_Value()方法給指定字段賦值.
①新建Windows應(yīng)用窗體,并在窗體中放入樹形控件和表格控件.樹形控件用來獲取當(dāng)前圖層,表格控件以顯示圖層的屬性信息.
②導(dǎo)入選中要素的屬性到屬性表.當(dāng)單擊樹中某一要素時(shí),需要將其屬性信息導(dǎo)入到屬性表.
③屬性信息的修改與保存.新信息錄入后,調(diào)用Store()方法將其保存.
本文針對(duì)現(xiàn)有三維建模方法存在的不足,提出了一種能將軟件缺陷相互彌補(bǔ)的聯(lián)合建模方法.將此聯(lián)合建模方法應(yīng)用于某校園三維系統(tǒng)建設(shè).研究及實(shí)驗(yàn)表明:
1)將3Ds Max軟件精細(xì)建模的優(yōu)點(diǎn)和Sketch Up快速建模及渲染的優(yōu)點(diǎn)相結(jié)合,實(shí)現(xiàn)了三維模型重建,既避免了單一軟件建模的不足,同時(shí)也避免了因應(yīng)用諸多軟件建模而造成的格式不匹配問題,同時(shí)縮短了建模周期,降低了場(chǎng)景建模的難度.
2)校園范圍內(nèi)的三維場(chǎng)景能夠比較流暢地顯示,產(chǎn)生了很好的視覺效果與實(shí)用效果.
3)大范圍三維場(chǎng)景的顯示對(duì)計(jì)算機(jī)硬件提出更高的要求,因此,在大范圍三維的精模創(chuàng)建過程中,更應(yīng)注重模型的構(gòu)建方法與技巧,盡可能減少三角形面片的數(shù)量,才能有效地降低模型存儲(chǔ)數(shù)據(jù)量.
4)本文提出的聯(lián)合建模方法為大范圍三維場(chǎng)景的快速構(gòu)建提供了一種便捷的解決方案.