李想 ,李海亭,劉揚,張春奎
(1.中國人民解放軍61363部隊,陜西西安 710054;2.武漢市測繪研究院,湖北武漢 430022;
3.西安市勘察測繪院,陜西西安 710054)
隨著地理信息技術(shù)的發(fā)展,GIS研究的重點已由二維向三維轉(zhuǎn)變,城市三維GIS建設日益受到重視,目前很多城市都在建設本區(qū)域的三維GIS系統(tǒng)。三維景觀數(shù)據(jù)制作是三維GIS建設的基礎性工作,它包括區(qū)域內(nèi)的三維建筑模型、道路及附屬設施模型、植被模型、水系模型和地形模型等,通過其坐標位置和相互關(guān)系在三維GIS平臺下整合成城市三維景觀。
目前,比較流行的制作三維景觀數(shù)據(jù)的軟件有3ds Max、Goole Sketchup、Maya、MultiGen Creator等,采用的方法有基于高分辨率影像的、基于大比例尺二維地形圖數(shù)據(jù)的、基于實測數(shù)據(jù)的。對于構(gòu)建一個形象逼真的大規(guī)模虛擬城市模型遇到的問題是真實地形紋理獲取困難、成本高及建模工作量巨大等。而Sketchup作為一款方便易用的三維建模軟,在處理建筑物數(shù)目巨大的三維建模工程時,能夠有效提高建模速度和建模質(zhì)量,避免同類設計制作軟件的復雜性,提高建模工作效率。大比例尺的二維地形圖數(shù)據(jù)具有精度高、要素全等特點,能夠完全滿足模型平面精度要求。下面就以Sketchup為三維建模工具,以大比例尺地形圖為數(shù)據(jù)來源,介紹城市建筑三維模型制作過程中的關(guān)鍵技術(shù)環(huán)節(jié)及方法。
Sketchup軟件是美國Google公司推出的一套三維建筑物建模的工具。它以獨特簡潔的界面、簡便快捷的點、線、平/曲面構(gòu)建工具、強大豐富的資源等特點深受建筑物建模者的喜愛。其在處理建筑物數(shù)目巨大的三維建模工程時,能夠有效地提高建模速度和建模質(zhì)量。同時,Sketchup避免了同類軟件(如:3ds Max)的復雜性,具有易操作的貼圖系統(tǒng),能夠提高建模工作的效率,而且能夠真實地表現(xiàn)建筑模型的質(zhì)感,使模型更加美觀。Shetchup支持DXF、DWG、JPG、TIF、3DS 等格式文件的輸入,3DS(三維交換模型文件格式)、Collada dae、Google Earth kmz、DXF等格式文件的輸出,能夠方便與其他三維軟件格式交換,提高模型的共享效率。
基于SketchUp,利用大比例尺地形圖數(shù)據(jù)制作大區(qū)域三維建筑模型可分為數(shù)據(jù)準備和模型制作兩部分,每一部分又包括若干關(guān)鍵步驟。其總體技術(shù)路線如圖1所示。
本文探討的是利用大比例尺地形圖數(shù)據(jù)作為源數(shù)據(jù)來制作建筑模型方法,因此地形圖數(shù)據(jù)的處理是制作建筑模型的前提性工作。地形圖數(shù)據(jù)處理包括建筑要素提取、建筑物圖形構(gòu)面和格式轉(zhuǎn)換三個方面。
要素提取:通常情況下,大比例尺地形圖數(shù)據(jù)是以分幅形式存在的電子文件數(shù)據(jù),一幅地形圖數(shù)據(jù)除了包含有建筑物要素外,還包括地貌、植被、道路及附屬設施、水系、圍墻、管線等要素,為了獲取獨立建筑物要素,需要對建模區(qū)域內(nèi)的地形圖進行預處理,即:刪除其他要素,保留建筑要素。而對于存在于基礎地理信息數(shù)據(jù)庫中的地形圖數(shù)據(jù),可通過分層提取的方式單獨提取建筑物要素層,獲得建模區(qū)域內(nèi)的建筑物數(shù)據(jù)。
圖1 總體技術(shù)路線
圖形構(gòu)面:二維建筑物圖形理論上應是面狀要素,但在實際成圖過程中往往會出現(xiàn)縫隙或斷點現(xiàn)象。為了減少Sketchup環(huán)境下建筑物底部構(gòu)面的工作量和手工構(gòu)面引起的誤差,應對提取的建筑物要素在圖形軟件平臺下重新自動批量構(gòu)面,保證建筑物底部的面狀特征。
格式轉(zhuǎn)換:Sketchup軟件支持dwg、dxf格式數(shù)據(jù)的導入。對于提供的建筑物數(shù)據(jù)由于平臺不同其數(shù)據(jù)格式不同,為了保證數(shù)據(jù)的通用性,將提取并構(gòu)面好的建筑物數(shù)據(jù)轉(zhuǎn)換為通用的DXF格式數(shù)據(jù)。
高度信息是建筑物三維模型建模的一個重要參數(shù)。建筑物高度可通過以下5種方式獲取:
(1)通過二維矢量圖上建筑物的層數(shù)乘以樓層高(如 3 m)來提取,該種獲取方法簡單、速度快,但精度低,屋頂結(jié)構(gòu)難以獲取,特別對于以商鋪為主的建筑誤差很大。該種方法適合住宅建筑的高度獲取。
(2)通過算法利用高分辨率影像的陰影來獲取建筑物的高度。
(3)運用機載激光掃描儀與遙感影像相結(jié)合來提取建筑的高度。該方法獲取速度快,但后續(xù)處理工作量大,所需費用大。
(4)對于有條件的城市測繪院來說,可利用竣工資料來獲取建筑物的高度。該種方法獲取的高度信息精度高,屋頂結(jié)構(gòu)能夠如實表現(xiàn),但對于一般的用戶來說資料獲取困難,難以大面積應用。
(5)通過算法利用大比例尺航測三維地圖數(shù)據(jù)批量生成建筑物的高度信息。采用該種方法獲取的高度值精度高、獲取速度快,省時、省力,適合利用航空影像更新城市大比例尺地形圖的城市測繪單位。
建筑物的紋理數(shù)據(jù)主要包括樓頂紋理和側(cè)面紋理。樓頂紋理可利用影像截圖獲取;側(cè)面紋理則需要用數(shù)碼相機來拍攝獲取,拍攝的相片往往還要在相應的圖形編輯軟件(如photoshop)中進行幾何糾正處理及色彩調(diào)整等。為了減少三維模型數(shù)據(jù)存儲量及拍攝工作量,對于不需要表達真實紋理的建筑物或景觀,可選用Shetchup中的紋理與材質(zhì)進行渲染,或用顏色進行表達,還可以自己創(chuàng)建材質(zhì)。
以Sketchup 7為例,在Sketchup下制作三維建筑模型的步驟主要包括:DXF導入前Sketchup參數(shù)設置、DXF數(shù)據(jù)導入、建筑物分層、建筑物模型制作、紋理制作與貼圖、模型導出等幾個步驟。
為了保證制作模型的尺寸與導入的DXF數(shù)據(jù)尺寸一致,在導入DXF之前需要對Sketchup的模板單位進行設置。本實驗中使用的DXF數(shù)據(jù)的單位為m,因此模板的單位也設置為m。
在Sketchup模版參數(shù)設置完畢后,即可將轉(zhuǎn)換好的DXF格式的建筑數(shù)據(jù)通過Sketchup本身的導入功能,導入到模版環(huán)境中。在導入的同時,需要對導入選項單位進行設置,以保證導入的數(shù)據(jù)尺寸單位與模版環(huán)境的單位一致。
在DXF數(shù)據(jù)導入之后,如果DXF數(shù)據(jù)本身帶有多余的空層名稱,則在圖層列表中將空層名稱刪除,并將DXF數(shù)據(jù)移到默認的Layer0層中。對于只包含一個建筑物圖形的DXF文件,不需要分層;如果DXF數(shù)據(jù)文件中包含多個建筑物圖形,則最好針對每一個建筑圖形建立一個圖層,并將其移到該圖層下,其目的是為了建模時避免其他建筑模型的影響,方便建模。建筑物分層步驟如下:
(1)建立新圖層,根據(jù)建筑物編號命名圖層名;
(2)選取相應獨立建筑物的邊線,將其移動到該圖層下。
經(jīng)過分層后的數(shù)據(jù),每一層中包含一棟完整的建筑底面邊線,且該底面邊線應是閉合的多邊形。如果該多邊形在顯示上沒有形成一個面,則可以用“線”工具連接任意相鄰的兩點,則該多邊形會自動形成一個面,并填充默認顏色(一般為白色)。在自動形成一個面后,通常情況下上面顯示為灰色,表明上面為反面,在做模型前應利用“將面翻轉(zhuǎn)”命令將該面翻轉(zhuǎn),使正面朝上。其目的是保證建筑模型的外面都為正面,防止模型導入其他三維軟件后,出現(xiàn)鏤空現(xiàn)象。
在建筑底面構(gòu)面成功并進行翻轉(zhuǎn)處理后,選中底面,利用“推/拉”工具,向上拉伸一定高度(拉伸的精確高度值可通過在界面右下側(cè)的數(shù)據(jù)框中輸入),形成裸模(即:沒有貼圖的模型)。這時建筑的主體裸模就搭建好了。對于建筑物的其他主要結(jié)構(gòu)如:窗戶、陽臺、女兒墻等,利用“矩形”或“線”工具在裸模的外表面劃定相應的范圍,選中該范圍,同樣利用“推/拉”工具,可做出相應的結(jié)構(gòu)。這種制作建筑主要結(jié)構(gòu)的方法主要用于規(guī)劃設計中的建筑物的精細建模,對于三維GIS中的三維建模,因精度要求相對較低,模型的數(shù)據(jù)量盡量小,因此一般不采用上述的結(jié)構(gòu)構(gòu)建方法。
用于三維GIS的三維建筑模型主要結(jié)構(gòu)的制作因結(jié)構(gòu)不同,方法也不同。
①窗戶:建筑物的窗戶一般是有規(guī)律的排列,而且窗戶的凹陷深度一般在 0.2 m左右,完全在建模的精度要求內(nèi)。因此,窗戶的結(jié)構(gòu)表現(xiàn)一般采用窗戶紋理循環(huán)貼圖來表示,不再重新做窗戶結(jié)構(gòu)。
②陽臺:對于落地陽臺,其包含在主體裸模內(nèi);對于懸空陽臺,根據(jù)尺寸在相應的外墻面位置,畫定范圍,利用“推/拉”工具做出。
③女兒墻:選中模型上表面,點擊“偏移復制”工具,向表面內(nèi)部偏移,偏移距離可在界面右下角的文本框中輸入。然后選中內(nèi)部面,利用“推/拉”工具,向下推出女兒墻的高度;或者選中外部面,利用“推/拉”工具,向上拉出女兒墻的高度;最終形成具有一定高度的女兒墻。
墻面紋理制作主要是對拍攝的建筑物外立面照片,在Photoshop下進行加工處理,獲得色調(diào)一致、結(jié)構(gòu)完整、干凈整潔的墻面紋理圖片。紋理圖片長寬的像素數(shù)要求為2的n次方,一般最大不超過1 024。墻面紋理的制作與貼圖方法是緊密相關(guān)的。在滿足紋理清晰度的情況下,貼圖的方法應盡量遵循模型數(shù)據(jù)量最小原則。因此,在墻面貼圖時盡量選用重復的圖片,以減小模型的大小。這就要求在制作紋理前,首先分析墻面的紋理結(jié)構(gòu),將紋理結(jié)構(gòu)分類;然后針對于每一類,按照尺寸大小制作相應分辨率的圖片。在貼圖時對于上下結(jié)構(gòu)及紋理一致的墻面,用一張圖片重復貼圖。如果貼圖墻面的寬度不同,紋理一致,則可通過貼圖面的“位置→指針“工具來調(diào)整圖片的寬度和高度。
對于紋理的命名,為保證命名的規(guī)范性,命名方式應按照紋理名稱與建筑編號相關(guān)聯(lián),同時保證命名不重復的原則進行。如建筑編號為10001,則紋理的名稱可為 10001001、10001002、…。
Sketchup下的貼圖流程如下:
①選擇要貼圖的面;
②創(chuàng)建材質(zhì)并給材質(zhì)命名,選擇圖像文件并設置圖像文件的長寬尺寸;
③選中貼圖面,通過貼圖紋理的“拖曳指針”將紋理移動到合適位置,完成該面的紋理貼圖。
Sketchup支持多種導出模型格式,如3ds、kmz、dae、obj等格式。其中,3ds為通用的三維模型中間轉(zhuǎn)換格式,應用最廣。在導出3ds模型時需要進行相關(guān)的設置:
(1)導出貼圖:使導出的模型都具有紋理信息,在以后的編輯與展示過程中,都需要將3ds文件和它對應的貼圖文件放在統(tǒng)一目錄下,這樣才能避免紋理的丟失。
(2)相機導出設置:在Sketchup環(huán)境下制作模型,軟件本身默認有一相機作為參照,但在其他軟件下不需要該相機。因此,在導出模型時不需要導出相機。
(3)導出比例:如果在模型制作前,已設置了模型單位,則按照默認單位導出;如果沒有設置,則導出時可設置合適的模型單位。
(4)導出模式:如果一個Sketchup模型文件包含多個模型,導出時分建筑分別導出或按選擇建筑導出,則需要在導出選項設置中,選擇single object和Export only current selection選項。
以西安市某一建成小區(qū)為例,基于二維大比例尺地形圖數(shù)據(jù)和建筑物高度數(shù)據(jù),在Sketchup環(huán)境下制作了該小區(qū)內(nèi)的三維建筑模型,如圖2所示。
圖2 某小區(qū)的三維建筑模型
Sketchup作為一款易學易用的三維建模軟件,有著其他建模軟件無法比擬的優(yōu)點,特別在城市建筑三維建模中能夠大大提高工作效率,縮短城市三維GIS數(shù)據(jù)的生產(chǎn)周期。而采用城市大比例尺地形圖作為三維建模的數(shù)據(jù)來源,能夠保證模型的平面精度要求,滿足城市管理和規(guī)劃部門對城市三維GIS應用需求。通過實驗證明,采用Skethcup建模工具和大比例尺地形圖數(shù)據(jù)快速生產(chǎn)三維模型數(shù)據(jù)的技術(shù)方法具有很強的可行性。
[1]范明華,杜甘霖,任家勇.Sketchup大區(qū)域三維建模技術(shù)研究[J].測繪通報,2012(5):56~58.
[2]許捍衛(wèi),房曉亮,任家勇等.基于Sketchup的城市三維建模技術(shù)[J].測繪科學,2011,36(1):213~214,P189.
[3]黃銘,肖明虹.基于Sketchup和ArcGIS的城市3維建模技術(shù)研究[J].測繪與空間地理信息,2012,35(8):151~154.
[4]張春奎,李想,許由田等.利用3維DLG數(shù)據(jù)獲取建筑高度的方法[J].測繪與空間地理信息,2012,35(18):115~117,P121.
[5]武萍.Sketchup建筑模型制作[N].中華建筑報,2008,3(011).