范明華,杜甘霖,任家勇
(1.江蘇省基礎地理信息中心,江蘇南京210013;2.河海大學地理信息科學系,江蘇南京210098;3.南京市國土資源局浦口分局,江蘇南京210045)
SketchUp大區域三維建模技術研究
范明華1,杜甘霖2,任家勇3
(1.江蘇省基礎地理信息中心,江蘇南京210013;2.河海大學地理信息科學系,江蘇南京210098;3.南京市國土資源局浦口分局,江蘇南京210045)
利用SketchUp軟件能高效建模的特質,進行大區域的三維建模。對建模過程中涉及的思路進行探討,針對其存在的一些問題和可以優化的方法進行介紹。利用SketchUp和Skyline的組合,實現了大范圍三維建模和成果應用。
SketchUp;Skyline;三維建模;GIS
通過SketchUp軟件,能夠制作出精細美觀的三維建筑模型,從而實現效果逼真的三維景觀,但這種美觀的效果只能在SketchUp中進行瀏覽。這樣就存在兩個主要問題:①顯示城市級別的數據量幾乎不可能;② SketchUp沒有坐標系統。本文通過在SketchUp中制作精細、數據量小的三維模型,并將數據導出為一種通用的數據格式(如3ds數據),在Skyline中進行展示,保證了三維模型美觀、數據量小的優勢,同時又通過Skyline很好地彌補了空間信息的不足,可以說是充分利用了二者的優勢,取得了良好的效果。
SketchUp作為一種方便易用的三維建模軟件,一經推出就在建筑設計領域得到了廣泛應用。其在處理建筑物數目巨大的三維建模工程時,能夠有效地提高建模速度和建模質量。Google SketchUp三維建模軟件避免了同類設計軟件如3ds Max、Auto-CAD等的復雜性[1],具有易操作的貼圖系統,提高了建模工作的效率,而且能夠真實地表現建筑模型的質感,使模型更加美觀。Google SketchUp能夠根據不同需求提供相應的數據格式,支持如3ds、obj、kmz等多種數據格式的導出。SketchUp具有如下特點:① 界面簡潔,易學易用,命令極少;② 精確高效,兼容性好;③功能強大,應用廣泛。
1.幾何信息獲取
二維GIS系統發展相對成熟很多,現有的二維GIS數據精度高、數據全。在進行三維建模時,應用這些現有的數據,對提供工作效率是十分可觀的。現有的數據比如ArcGIS中的SHP數據,AutoCAD中的DWG數據都可以通過SketchUp提供的功能或者一些小的插件導入到SketchUp中。利用這些數據進行建模,將保持建筑物底圖的精度。在沒有二維矢量數據的情況下,導入經過幾何糾正的影像或正射影像,通過影像進行三維建模,其平面精度一般也能滿足要求。
2.高度信息獲取
高度信息是三維模型的一個重要參數。由于在二維GIS中僅把建筑物層數作為高度信息,這只是一個概略的描述,沒有較高的精度,所以需要專門研究獲取建筑物的高度信息。
當前主要通過以下幾種方式獲得建筑物的高度:①運用機載激光掃描儀與遙感影像相結合來提取建筑物高度,該方法獲取速度快,但后續處理工作量大,費用可觀;②簡單提取,通過矢量二維空間數據其建筑物層數的屬性乘以樓層高(如3 m)來提取其高度,這種方法獲取的建筑物高度只是一個估算值,且所有建筑物只能用平頂來表達,或者人為地增加一個修飾性屋頂;③通過算法從遙感影像的陰影來直接提取建筑物高度以及其他信息。
在一般的非精細三維建模中,通常可利用遙感影像的陰影來提取建筑物的高度,與二維GIS的層數數據以及現場量測的一些特殊高度的建筑物數據相結合來推算建筑物的實際高度。
3.紋理信息獲取
紋理信息主要包括實地拍攝的建筑物的相片和影像中的建筑物頂部信息。在采集建筑物側面紋理的過程中要盡量采集非傾斜、明亮的照片。如果某些地方不易獲取,則通過獲取局部,再通過圖像處理軟件(如Photoshop等)進行拼接。所采集的圖像需要經過處理,如糾正、亮度調整、數據量壓縮等,目的在于得到端正、美觀、數據量小的紋理材質。對于屋頂紋理則可從正射影像或高分辨率航片中獲取。
通過插件將二維幾何數據導入到SketchUp中,或者將影像數據導入到SketchUp中。利用面線工具對建筑物輪廓進行構建,并通過材質工具進行貼紋理,最后導出。具體流程如圖1所示。

圖1 SketchUp建模流程
使用SketchUp建模,導出為3ds通用格式時,主要存在批量導出的速度與坐標不一致性的問題。
1.批量導出問題
城市建模一般數據量都十分龐大,如圖2所示,簡單的幾個街區就有上千個模型。如果人工導出,耗費大量時間,且效率低下。SketchUp是目前在三維圖形界使用Ruby為插件接口的軟件,Ruby腳本編寫擴展SketchUp功能的Ruby應用程序編程接口(API)。此接口使用戶可以創建要包含在SketchUp菜單中的宏,如自動化組件生成器和其他工具。通過SketchUp中的Ruby腳本進行批量導出,可極大地提高工作效率。導出的過程給定單個模型命名規則,導出格式為3ds。其Ruby編寫程序思路為



圖2 SketchUp場景圖
2.坐標問題
通過SketchUp導出的3ds格式文件,采用的是相對坐標,缺少空間信息。這使得建好的模型與真實的地理位置不一致,需要通過算法來批量修改3ds文件的空間坐標信息。為此,必須先分析清楚3ds格式文件的內部結構。
3ds文件內部的結構是由“塊”構成,這些“塊”主要由兩部分組成,即ID與下一數據塊的位置[4]。其中,ID號為oxBO20的塊,即POSITION TRACK塊含有坐標信息,對3ds格式文件坐標的批量修改思路為

通過運行上面簡單的代碼給3ds文件的坐標加上一個50 000的大數,就可以從相對坐標回到絕對坐標。由此在處理大量3ds文件時可自動實現坐標的批量處理。
目前在城市三維系統的建設中,很多用戶采用Skyline平臺來解決,但Skyline對復雜模型的建設有點力不從心。而SketchUp建模軟件雖然建模簡單,但不支持海量數據顯示,因此選用能夠支持海量數據的Skyline軟件進行三維場景的展示[2],發揮了各個軟件各自的長處。在Skyline中三維場景展示的思路如圖3所示,效果如圖4所示。
1)初始化模型坐標。該步驟把單體模型的坐標設為零,Skyline 5.1.2以上的版本支持批量模型坐標歸零,也可在3ds Max軟件中使用平移方式來實現。
2)轉換模型格式。把3ds格式的模型轉換成Skyline支持的*.X格式。可以通過以下兩種方式實現:① 使用DeepExploration軟件,用批量轉換工具將3ds格式的模型轉換成*.X格式;② 在3ds Max中通過PandaDXExport插件導出*.X文件,并進行相關屬性設置。
3)模型中心點提取。使用ArcGIS中的Add XY Data工具,生成SHP點文件,每個點文件中點格式限制在1000個以內,若模型數量較多則生成多個點文件。設置屬性表上的路徑為模型的絕對路徑。
4)地形模擬。在Terrabuilder中,地形采用正射影像進行模擬,采用金字塔的方式組織。
5)場景組合。利用步驟2)~步驟4)的準備工作進行場景組合。基本思路是以正射影像模擬地形,以模型中心點來定位,然后進行相關設置實現場景的組合。

圖3 Skyline中三維場景展示的思路

圖4 Skyline中進行三維場景的展示效果
本文針對利用SketchUp高效高質建模的特質進行三維建模,對建模的思路進行了探討,解決了大區域建模中存在的問題。結合SketchUp和Skyline的優點,成功地實現了三維場景,取得了良好的效果。
[1] 童滋雨.SketchUp建筑建模詳解教程[M].北京:中國建筑工業出版社,2007.
[2] 許捍衛,房曉亮,任家勇,等.基于SketchUp的城市三維建模技術[J].測繪科學,2011,36(1):213-214.
[3] 葉松.集成GIS與VR的城市規劃研究[D].武漢:武漢大學,2006.
[4] 馮偉,周云才.基于VC++和OPENGL的3ds文件的讀取與控制[J].科技信息,2009(1):479,450.
[5] 侯妙樂,劉忠貞,孫維先.基于Skyline的三維數字校園[J].北京建筑工程學院學報,2008(4):18-21.
[6] 許捍衛,范小虎,任家勇,等.基于SketchUp和ArcGIS的城市三維可視化研究[J].測繪通報,2010(3):52-54.
[7] 鄧潔,夏春林,王潤芳.基于Skyline Terrasuite的城市三維景觀的建立[J].遙感技術與應用,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—),女,江蘇常熟人,高級工程師,主要從事測繪生產、科研課題等方面的管理工作。