范明華,杜甘霖,任家勇
(1.江蘇省基礎(chǔ)地理信息中心,江蘇南京210013;2.河海大學(xué)地理信息科學(xué)系,江蘇南京210098;3.南京市國(guó)土資源局浦口分局,江蘇南京210045)
SketchUp大區(qū)域三維建模技術(shù)研究
范明華1,杜甘霖2,任家勇3
(1.江蘇省基礎(chǔ)地理信息中心,江蘇南京210013;2.河海大學(xué)地理信息科學(xué)系,江蘇南京210098;3.南京市國(guó)土資源局浦口分局,江蘇南京210045)
利用SketchUp軟件能高效建模的特質(zhì),進(jìn)行大區(qū)域的三維建模。對(duì)建模過(guò)程中涉及的思路進(jìn)行探討,針對(duì)其存在的一些問(wèn)題和可以優(yōu)化的方法進(jìn)行介紹。利用SketchUp和Skyline的組合,實(shí)現(xiàn)了大范圍三維建模和成果應(yīng)用。
SketchUp;Skyline;三維建模;GIS
通過(guò)SketchUp軟件,能夠制作出精細(xì)美觀的三維建筑模型,從而實(shí)現(xiàn)效果逼真的三維景觀,但這種美觀的效果只能在SketchUp中進(jìn)行瀏覽。這樣就存在兩個(gè)主要問(wèn)題:①顯示城市級(jí)別的數(shù)據(jù)量幾乎不可能;② SketchUp沒(méi)有坐標(biāo)系統(tǒng)。本文通過(guò)在SketchUp中制作精細(xì)、數(shù)據(jù)量小的三維模型,并將數(shù)據(jù)導(dǎo)出為一種通用的數(shù)據(jù)格式(如3ds數(shù)據(jù)),在Skyline中進(jìn)行展示,保證了三維模型美觀、數(shù)據(jù)量小的優(yōu)勢(shì),同時(shí)又通過(guò)Skyline很好地彌補(bǔ)了空間信息的不足,可以說(shuō)是充分利用了二者的優(yōu)勢(shì),取得了良好的效果。
SketchUp作為一種方便易用的三維建模軟件,一經(jīng)推出就在建筑設(shè)計(jì)領(lǐng)域得到了廣泛應(yīng)用。其在處理建筑物數(shù)目巨大的三維建模工程時(shí),能夠有效地提高建模速度和建模質(zhì)量。Google SketchUp三維建模軟件避免了同類設(shè)計(jì)軟件如3ds Max、Auto-CAD等的復(fù)雜性[1],具有易操作的貼圖系統(tǒng),提高了建模工作的效率,而且能夠真實(shí)地表現(xiàn)建筑模型的質(zhì)感,使模型更加美觀。Google SketchUp能夠根據(jù)不同需求提供相應(yīng)的數(shù)據(jù)格式,支持如3ds、obj、kmz等多種數(shù)據(jù)格式的導(dǎo)出。SketchUp具有如下特點(diǎn):① 界面簡(jiǎn)潔,易學(xué)易用,命令極少;② 精確高效,兼容性好;③功能強(qiáng)大,應(yīng)用廣泛。
1.幾何信息獲取
二維GIS系統(tǒng)發(fā)展相對(duì)成熟很多,現(xiàn)有的二維GIS數(shù)據(jù)精度高、數(shù)據(jù)全。在進(jìn)行三維建模時(shí),應(yīng)用這些現(xiàn)有的數(shù)據(jù),對(duì)提供工作效率是十分可觀的?,F(xiàn)有的數(shù)據(jù)比如ArcGIS中的SHP數(shù)據(jù),AutoCAD中的DWG數(shù)據(jù)都可以通過(guò)SketchUp提供的功能或者一些小的插件導(dǎo)入到SketchUp中。利用這些數(shù)據(jù)進(jìn)行建模,將保持建筑物底圖的精度。在沒(méi)有二維矢量數(shù)據(jù)的情況下,導(dǎo)入經(jīng)過(guò)幾何糾正的影像或正射影像,通過(guò)影像進(jìn)行三維建模,其平面精度一般也能滿足要求。
2.高度信息獲取
高度信息是三維模型的一個(gè)重要參數(shù)。由于在二維GIS中僅把建筑物層數(shù)作為高度信息,這只是一個(gè)概略的描述,沒(méi)有較高的精度,所以需要專門研究獲取建筑物的高度信息。
當(dāng)前主要通過(guò)以下幾種方式獲得建筑物的高度:①運(yùn)用機(jī)載激光掃描儀與遙感影像相結(jié)合來(lái)提取建筑物高度,該方法獲取速度快,但后續(xù)處理工作量大,費(fèi)用可觀;②簡(jiǎn)單提取,通過(guò)矢量二維空間數(shù)據(jù)其建筑物層數(shù)的屬性乘以樓層高(如3 m)來(lái)提取其高度,這種方法獲取的建筑物高度只是一個(gè)估算值,且所有建筑物只能用平頂來(lái)表達(dá),或者人為地增加一個(gè)修飾性屋頂;③通過(guò)算法從遙感影像的陰影來(lái)直接提取建筑物高度以及其他信息。
在一般的非精細(xì)三維建模中,通??衫眠b感影像的陰影來(lái)提取建筑物的高度,與二維GIS的層數(shù)數(shù)據(jù)以及現(xiàn)場(chǎng)量測(cè)的一些特殊高度的建筑物數(shù)據(jù)相結(jié)合來(lái)推算建筑物的實(shí)際高度。
3.紋理信息獲取
紋理信息主要包括實(shí)地拍攝的建筑物的相片和影像中的建筑物頂部信息。在采集建筑物側(cè)面紋理的過(guò)程中要盡量采集非傾斜、明亮的照片。如果某些地方不易獲取,則通過(guò)獲取局部,再通過(guò)圖像處理軟件(如Photoshop等)進(jìn)行拼接。所采集的圖像需要經(jīng)過(guò)處理,如糾正、亮度調(diào)整、數(shù)據(jù)量壓縮等,目的在于得到端正、美觀、數(shù)據(jù)量小的紋理材質(zhì)。對(duì)于屋頂紋理則可從正射影像或高分辨率航片中獲取。
通過(guò)插件將二維幾何數(shù)據(jù)導(dǎo)入到SketchUp中,或者將影像數(shù)據(jù)導(dǎo)入到SketchUp中。利用面線工具對(duì)建筑物輪廓進(jìn)行構(gòu)建,并通過(guò)材質(zhì)工具進(jìn)行貼紋理,最后導(dǎo)出。具體流程如圖1所示。
圖1 SketchUp建模流程
使用SketchUp建模,導(dǎo)出為3ds通用格式時(shí),主要存在批量導(dǎo)出的速度與坐標(biāo)不一致性的問(wèn)題。
1.批量導(dǎo)出問(wèn)題
城市建模一般數(shù)據(jù)量都十分龐大,如圖2所示,簡(jiǎn)單的幾個(gè)街區(qū)就有上千個(gè)模型。如果人工導(dǎo)出,耗費(fèi)大量時(shí)間,且效率低下。SketchUp是目前在三維圖形界使用Ruby為插件接口的軟件,Ruby腳本編寫擴(kuò)展SketchUp功能的Ruby應(yīng)用程序編程接口(API)。此接口使用戶可以創(chuàng)建要包含在SketchUp菜單中的宏,如自動(dòng)化組件生成器和其他工具。通過(guò)SketchUp中的Ruby腳本進(jìn)行批量導(dǎo)出,可極大地提高工作效率。導(dǎo)出的過(guò)程給定單個(gè)模型命名規(guī)則,導(dǎo)出格式為3ds。其Ruby編寫程序思路為
圖2 SketchUp場(chǎng)景圖
2.坐標(biāo)問(wèn)題
通過(guò)SketchUp導(dǎo)出的3ds格式文件,采用的是相對(duì)坐標(biāo),缺少空間信息。這使得建好的模型與真實(shí)的地理位置不一致,需要通過(guò)算法來(lái)批量修改3ds文件的空間坐標(biāo)信息。為此,必須先分析清楚3ds格式文件的內(nèi)部結(jié)構(gòu)。
3ds文件內(nèi)部的結(jié)構(gòu)是由“塊”構(gòu)成,這些“塊”主要由兩部分組成,即ID與下一數(shù)據(jù)塊的位置[4]。其中,ID號(hào)為oxBO20的塊,即POSITION TRACK塊含有坐標(biāo)信息,對(duì)3ds格式文件坐標(biāo)的批量修改思路為
通過(guò)運(yùn)行上面簡(jiǎn)單的代碼給3ds文件的坐標(biāo)加上一個(gè)50 000的大數(shù),就可以從相對(duì)坐標(biāo)回到絕對(duì)坐標(biāo)。由此在處理大量3ds文件時(shí)可自動(dòng)實(shí)現(xiàn)坐標(biāo)的批量處理。
目前在城市三維系統(tǒng)的建設(shè)中,很多用戶采用Skyline平臺(tái)來(lái)解決,但Skyline對(duì)復(fù)雜模型的建設(shè)有點(diǎn)力不從心。而SketchUp建模軟件雖然建模簡(jiǎn)單,但不支持海量數(shù)據(jù)顯示,因此選用能夠支持海量數(shù)據(jù)的Skyline軟件進(jìn)行三維場(chǎng)景的展示[2],發(fā)揮了各個(gè)軟件各自的長(zhǎng)處。在Skyline中三維場(chǎng)景展示的思路如圖3所示,效果如圖4所示。
1)初始化模型坐標(biāo)。該步驟把單體模型的坐標(biāo)設(shè)為零,Skyline 5.1.2以上的版本支持批量模型坐標(biāo)歸零,也可在3ds Max軟件中使用平移方式來(lái)實(shí)現(xiàn)。
2)轉(zhuǎn)換模型格式。把3ds格式的模型轉(zhuǎn)換成Skyline支持的*.X格式??梢酝ㄟ^(guò)以下兩種方式實(shí)現(xiàn):① 使用DeepExploration軟件,用批量轉(zhuǎn)換工具將3ds格式的模型轉(zhuǎn)換成*.X格式;② 在3ds Max中通過(guò)PandaDXExport插件導(dǎo)出*.X文件,并進(jìn)行相關(guān)屬性設(shè)置。
3)模型中心點(diǎn)提取。使用ArcGIS中的Add XY Data工具,生成SHP點(diǎn)文件,每個(gè)點(diǎn)文件中點(diǎn)格式限制在1000個(gè)以內(nèi),若模型數(shù)量較多則生成多個(gè)點(diǎn)文件。設(shè)置屬性表上的路徑為模型的絕對(duì)路徑。
4)地形模擬。在Terrabuilder中,地形采用正射影像進(jìn)行模擬,采用金字塔的方式組織。
5)場(chǎng)景組合。利用步驟2)~步驟4)的準(zhǔn)備工作進(jìn)行場(chǎng)景組合。基本思路是以正射影像模擬地形,以模型中心點(diǎn)來(lái)定位,然后進(jìn)行相關(guān)設(shè)置實(shí)現(xiàn)場(chǎng)景的組合。
圖3 Skyline中三維場(chǎng)景展示的思路
圖4 Skyline中進(jìn)行三維場(chǎng)景的展示效果
本文針對(duì)利用SketchUp高效高質(zhì)建模的特質(zhì)進(jìn)行三維建模,對(duì)建模的思路進(jìn)行了探討,解決了大區(qū)域建模中存在的問(wèn)題。結(jié)合SketchUp和Skyline的優(yōu)點(diǎn),成功地實(shí)現(xiàn)了三維場(chǎng)景,取得了良好的效果。
[1] 童滋雨.SketchUp建筑建模詳解教程[M].北京:中國(guó)建筑工業(yè)出版社,2007.
[2] 許捍衛(wèi),房曉亮,任家勇,等.基于SketchUp的城市三維建模技術(shù)[J].測(cè)繪科學(xué),2011,36(1):213-214.
[3] 葉松.集成GIS與VR的城市規(guī)劃研究[D].武漢:武漢大學(xué),2006.
[4] 馮偉,周云才.基于VC++和OPENGL的3ds文件的讀取與控制[J].科技信息,2009(1):479,450.
[5] 侯妙樂(lè),劉忠貞,孫維先.基于Skyline的三維數(shù)字校園[J].北京建筑工程學(xué)院學(xué)報(bào),2008(4):18-21.
[6] 許捍衛(wèi),范小虎,任家勇,等.基于SketchUp和ArcGIS的城市三維可視化研究[J].測(cè)繪通報(bào),2010(3):52-54.
[7] 鄧潔,夏春林,王潤(rùn)芳.基于Skyline Terrasuite的城市三維景觀的建立[J].遙感技術(shù)與應(yīng)用,2008,23(5): 529-532.
Research on Technology of Three-dimensional Modeling in Large Area Based on SketchUp
FAN Minghua,DU Ganlin,REN Jiayong
0494-0911(2012)05-0056-03
P231.5
B
2011-08-26
范明華(1963—),女,江蘇常熟人,高級(jí)工程師,主要從事測(cè)繪生產(chǎn)、科研課題等方面的管理工作。