摘 要:本文利用三維技術(shù)對信陽市南灣湖風(fēng)景區(qū)的建筑、景點等地物生成直觀的地理圖形數(shù)據(jù),使人們能直觀地了解內(nèi)部景區(qū)情況。將CityEngine與Arcgis數(shù)據(jù)結(jié)合,并運用CGA規(guī)則進行批量化建模,運用SketchUp進行精細建模。但在建筑不規(guī)則且復(fù)雜的景區(qū),CityEngine并不適用,應(yīng)使用處理更精細的軟件。
關(guān)鍵詞:三維GIS;數(shù)字城市;三維建模
中圖分類號:P228;P208 文獻標(biāo)識碼:A 文章編號:1003-5168(2018)01-0030-04
3D Modeling of South Lake based on CityEngine
WANG Yi ZHANG Haoran MA Ruixue SHI Xincheng
(College of Geographical Sciences, Xinyang Normal University,Xinyang Henan 464000)
Abstract: In this paper, using 3D technology of Nanwan Lake Scenic Area in Xinyang city building, attractions, features such as generating geographic data directly, so that people can intuitively understand, see inside the scenic spots of CityEngine and Arcgis data. Using the CGA rules for batch modeling, and using Sketchup fine modeling. But in the irregular building and the scenic CityEngine complex is not suitable, should use more sophisticated software.
Keywords: 3D GIS;digital city;3D modeling
1 研究背景和研究意義
隨著計算機、遙感技術(shù)、GIS技術(shù)等的發(fā)展,三維建模技術(shù)開始逐步發(fā)展起來,并被廣泛地運用于城市設(shè)計與規(guī)劃、管網(wǎng)設(shè)計和數(shù)字城市等各種領(lǐng)域,可以讓人們更好地看到立體的現(xiàn)實世界。三維模型是建立現(xiàn)實世界虛擬化三維場景模型的基礎(chǔ),運用計算機圖像處理設(shè)計,將地理空間數(shù)據(jù)從傳統(tǒng)以二維平面圖的表達方式轉(zhuǎn)換為三維立體的方式顯示,可以更真實、形象地顯示現(xiàn)實世界[1]。
1.1 研究背景
智慧城市的目標(biāo)在于幫助社區(qū)解決棘手問題,例如,緩解交通擁堵、打擊違法犯罪、促進經(jīng)濟增長、控制氣候變化的影響及改善城市服務(wù)水平。從根本上講,智慧城市愿景是指引智慧城市建設(shè)的根本前提,其決定了智慧城市的戰(zhàn)略目標(biāo),進而影響智慧城市建設(shè)中的人力安排與資源配置[2]。提高旅游競爭力是智慧旅游城市的核心目標(biāo),我國有北京、武漢、成都等12個智慧旅游試點城市[3]。
1.2 研究意義
本文以信陽市南灣湖風(fēng)景區(qū)為例。南灣湖作為信陽市的著名景點,始建于南北朝年間,距今已有1 500多年的歷史。湖上有黑龍?zhí)?、白龍?zhí)?。南灣湖?nèi)島嶼眾多,形態(tài)各異,錯落有致地散布在碧青的湖中,鳥島處處見鳥影,每年有十萬只候鳥在此繁衍,但至今卻沒有三維技術(shù)方面的介紹和宣傳。針對南灣湖,可以利用三維建模技術(shù)對建筑、景點等進行直觀展示,把南灣湖內(nèi)部景點與島嶼位置的信息組織起來,形成直觀的地理圖形數(shù)據(jù),進行系統(tǒng)分析,讓人們能夠更直觀地了解南灣湖內(nèi)部景點情況,實現(xiàn)服務(wù)最優(yōu)化。
本文主要在CityEngine平臺下進行建模,通過調(diào)用GIS中的屬性數(shù)據(jù),進行快速批量的建模,這種方法不僅充分利用了GIS的已有數(shù)據(jù),提高了三維建模效率,而且可以將建筑物三維模型與ArcGIS進行無縫集成,有利于充分利用ArcGIS的三維空間分析功能。
2 三維建模的建立
2.1 三維建模流程
本文選取河南省信陽市浉河區(qū)南灣湖風(fēng)景區(qū)的茶島為研究區(qū)域,該區(qū)域位于東經(jīng)114°06',北緯32°125'的信陽市西南5km,該區(qū)域多以水體、樹木為主。應(yīng)用CityEngine實行三維建模的流程如圖1所示。
2.2 城市建模數(shù)據(jù)準(zhǔn)備與處理
本文所需的數(shù)據(jù)是包括信陽市南灣湖矢量化數(shù)據(jù)、遙感影像圖數(shù)據(jù)和實景拍攝數(shù)據(jù)。數(shù)據(jù)預(yù)處理主要包括對南灣湖進行矢量化處理、建筑物進行精細建模、CGA規(guī)則處理等。
2.2.1 遙感圖、矢量化處理。①下載南灣湖茶島的高清影像圖,在ArcGIS中對影像圖進行矢量化處理,主要分為建筑物、綠地、水體、道路等幾類;②為了在CityEngine中方便將模型數(shù)據(jù)導(dǎo)入,還需要在ArcGIS中對建筑物的屬性進行賦值,如shiyuange、fanggeting等;③將影像圖、矢量化數(shù)據(jù)放入assets文件夾中,將數(shù)據(jù)導(dǎo)入CityEngine中,將skp文件拖進CityEngine完成矢量化處理。
2.2.2 建筑物的精細建模。本文通過SketchUp對灣湖的大門、售票處、觀景臺等的模型進行更加細致的處理。CityEngine支持obj、dae兩種格式。dae格式的模型不能提供足夠的精度,因此以jpg、obj格式導(dǎo)出。模型數(shù)據(jù)如圖2所示。
2.2.3 DEM數(shù)據(jù)。基礎(chǔ)數(shù)據(jù)主要是指所研究區(qū)域的矢量化數(shù)據(jù)及構(gòu)建場景所需要的影像圖數(shù)據(jù)。此外,為了實現(xiàn)模型與數(shù)據(jù)的貼合,還需要準(zhǔn)備所研究區(qū)域的DEM數(shù)據(jù)。在該過程中,要注意矢量化數(shù)據(jù)和遙感影像圖坐標(biāo)的統(tǒng)一,本例使用WGS 1984 Web Mercator投影坐標(biāo)系統(tǒng)。
2.2.4 貼圖數(shù)據(jù)。貼圖是為了使模型看起來更加真實、美觀,且在CityEngine中調(diào)用方便。三維模型中獲取貼圖數(shù)據(jù)主要有兩種方法:一是可以通過影像圖片來獲取紋理,但此類方法可能因為影像圖更新不及時導(dǎo)致模型貼圖不真實[4];二是實地拍攝取材。這種方法使模型更加真實、貼合實際。本文的貼圖數(shù)據(jù)均是通過第二種方法得到的。道路貼圖如圖3所示。
2.3 場景構(gòu)建與數(shù)據(jù)導(dǎo)入
CityEngine支持兩種場景導(dǎo)入的方法,本文采用導(dǎo)入工程文件夾的方法導(dǎo)入,該方法導(dǎo)入的過程如下。①創(chuàng)建場景:File-->new-->cityengine scene-->Finish;②導(dǎo)入影像圖、DEM:Layer-->New Map Layer-->Finish-->Frame Layer。導(dǎo)入之后檢查DEM與遙感圖是否重合,若沒有,檢查對應(yīng)坐標(biāo)系選擇是否正確。③導(dǎo)入矢量化數(shù)據(jù):assets-->data-->.skp。將完成的矢量化skp文件拖拽到scence場景中,若沒有在場景中顯示,點擊Aligns shapes to height maps.進行設(shè)置。④完成以上步驟后,檢查所有數(shù)據(jù)是否重合,若重合,完成場景的建立,若出現(xiàn)偏差,查看坐標(biāo)系、矢量化屬性等是否對應(yīng)正確。
2.4 編寫規(guī)則
CityEngine建筑生成思想全部集中在CGA的編寫上,通過CGA規(guī)則可以對建筑物進行拆分、添加紋理等處理。CGA語法規(guī)則可以實現(xiàn)快速建模,提高效率,還可以對模型進行空間分析[5]。
2.4.1 標(biāo)志性建筑的引入。標(biāo)志性建筑是南灣湖建模的重點和亮點。先使用SketchUp對風(fēng)格各異的標(biāo)志性建筑進行精細建模,將制作好的模型導(dǎo)出.obj格式,其貼圖文件在對應(yīng)的.mtl文件中。導(dǎo)出后的模型再通過編寫CGA規(guī)則引入CityEngine中,其規(guī)則如下:
attr name=\"shanzi\"http://對應(yīng)矢量化的建筑物name字段名稱
modelPath=\"assets/obj/shanzi.obj\"http://設(shè)置標(biāo)志性建筑路徑
Lot-->
i(modelPath) //替換函數(shù)
center(x) //居中函數(shù)
r(scopeCenter,0,30,0) //旋轉(zhuǎn)函數(shù)
translate(rel,scope,5,0,0) //平移函數(shù)
需要注意的是,標(biāo)志性建筑引入后可能跟預(yù)期效果存在偏差,可以使用縮放函數(shù)、平移函數(shù)、居中函數(shù)和旋轉(zhuǎn)函數(shù)來進行調(diào)整。
2.4.2 一般建筑物的創(chuàng)建。復(fù)雜的建筑物需要做一定的建筑分割,分別運用CGA規(guī)則編寫使用,可以使模型更加真實、美觀。以其中一個標(biāo)志性建筑為例,首先運用extrude函數(shù)將模型進行拉伸;spilt函數(shù)和comp函數(shù)結(jié)合使用進行模型分割,將模型的面分割成小塊,為下一步貼圖作準(zhǔn)備;texture函數(shù)對模型各個部分進行紋理貼圖,使模型更加真實。
核心代碼如下:
extrude(height) //拉伸函數(shù)
split(y){~3.8:firstfloor9|~6:upperfloor9} // 延Y軸切割寬度3.8
firstfloor9-->
comp(f){front:frontface9|left:leftface9|back:backface9|right:rightface9|bottom:diji9} //分割成不同的面,并設(shè)置背景顏色等
frontface9-->
split(x){~0.8:tile9|~1.5:mass9|~1:tile9|~2.2:door9|~1:tile9|~1.5: mass9|~0.8:tile9} //size(float)表示切割的寬度;~表示取近似值
tile9-->
setupProjection(0, scope.xy, 1, 2) // 對texture導(dǎo)入圖片進行約束
texture(\"obj/matou1/Roofing_Shingles_Multi.jpg\") //貼圖處理
projectUV(0) //設(shè)置貼圖紋理坐標(biāo)
2.4.3 綠化建模。針對南灣湖茶島部分,主要對草地、林地進行建模,以代替實際林地。
核心代碼如下:
attr courtTex = fileRandom(\"assets/courtyard/court*.jpg\")
attr greenTex = \"park/grass.png\" //草地貼圖
const dirt_tex =\"tex1/courtyard_floor_2.jpg\"
randomTree =50%: //設(shè)置兩種樣式的樹各占一半
\"assets/treemodel/tree/Tree.obj\"
else:
\"/ESRI.lib/assets/Plants/Banana_Tree/Banana_Tree_Model_0.obj\"
Trees -->
offset(-.5)
comp(f){inside : scatter(surface,geometry.area / 150,uniform) { PutTrees } | border : NIL}//設(shè)置150平方米面積上有一棵樹
PutTrees -->
set(trim.vertical,1)
s(0,rand(5,8),0) //設(shè)置樹的隨機高度是5到8米
r(0,0,rand(360))
i(randomTree)
Tree.
效果如圖4所示。
2.4.4 道路建模。道路是三維建模的重要組成部分。研究區(qū)域道路相差不大,因此做了統(tǒng)一的處理,在對應(yīng)CGA規(guī)則中的設(shè)置為“steets”。
核心代碼為:
Sidewalk --> //對道路進行建模
set(trim.vertical,1) set(trim.horizontal,1)
comp(f){ all: SidewalkPart }
SidewalkPart -->
SidewalkWithCurbs
alignScopeToAxes(y) t(0,sidewalkHeight,0) //定義道路的坐標(biāo)系
SidewalkLamps
SidewalkTrees
SidewalkWithCurbs -->
case sidewalkHeight > 0:
extrude(world.y,sidewalkHeight)
comp(f)
{ top : split(y){ sidewalkHeight : Curbs | ~1 : Pavement }
| front : Curbs }
else: Pavement //利用條件函數(shù)對道路進行建模
效果如圖5所示。
2.4.5 水體建模。本文的研究區(qū)域有大面積的水體,通過 CGA規(guī)則編寫水體不能馬上在CityEngine中顯示出來,需要場景發(fā)布之后才可以看到動態(tài)的水。
核心代碼如下:
Water -->
// __waterparams_scale_speed
case Water_Type == \"River\" : //水體的類型
set(material.name,\"river__water__waterparams_5_10\")
color(.44,.55,.44)° //設(shè)置水體的顏色
效果如圖6所示。
3 場景發(fā)布
所有數(shù)據(jù)完成之后,發(fā)布場景,進行場景共享。場景發(fā)布有兩種方式:一種是本地發(fā)布Web Scene Viewer打開,另一種是ArcGIS Online云端進行共享[6]。本文使用第二種方法:①部署webviewer到IIS上;②3ws場景包部署和調(diào)用。完成之后直接連接網(wǎng)頁即可。
4 問題及解決辦法
4.1 CityEngine方面
由于對CGA規(guī)則不了解,在寫規(guī)則時出現(xiàn)了很多問題,主要是關(guān)鍵詞的應(yīng)用,如comp函數(shù)、split函數(shù)等和語句之間的邏輯關(guān)系,以及在一開始導(dǎo)入底圖和數(shù)據(jù)時,總是出現(xiàn)影像圖和shp數(shù)據(jù)不重合的現(xiàn)象。除此之外,由于南灣湖風(fēng)景區(qū)中有許多不規(guī)則建筑、標(biāo)志性建筑,用CityEngine很難對復(fù)雜建筑貼圖,或者CGA規(guī)則無法處理。因此,若對城市進行建模,運用CityEngine十分快速、簡潔,若對不規(guī)則、復(fù)雜的景觀或者建筑物進行建模,建議運用UNITY3D,或者是UE CE ogr,其在處理三維虛擬漫游、三維場景仿真上具有良好的效果[7]。
4.2 范圍選擇
本文研究范圍是南灣湖風(fēng)景區(qū),但由于此區(qū)域面積較大,且水域范圍廣,因此前期矢量、遙感圖、DEM數(shù)據(jù)不能重合,且運行速度較慢,所以退而求其次,選擇南灣湖風(fēng)景區(qū)內(nèi)最有代表性的茶島進行建模。
4.3 其他方面
在建筑方面,分為精細建模和批量建模。其中,精細建模依靠的是第三方軟件SketchUp,在導(dǎo)出的三維模型導(dǎo)入CityEngine中會出現(xiàn)模型紋理丟失的情況,這時需要檢查jpg、obj文件路徑是否一致。在批量建模時,由于規(guī)則代碼要與ArcGIS數(shù)據(jù)相掛接,在分類時由于類型眾多及掛接不當(dāng),導(dǎo)致與實際結(jié)果大相徑庭。因此,要注意在矢量化時數(shù)據(jù)類型和CGA代碼導(dǎo)入規(guī)則編寫名稱保持一致。
5 結(jié)論
CityEngine在三維建模方面已經(jīng)得到了廣泛應(yīng)用,其直接支持GIS數(shù)據(jù),不需要轉(zhuǎn)化已有的GIS數(shù)據(jù)就可以直接實現(xiàn)三維建模,減少了投資[8]。本文采用CityEngine軟件實現(xiàn)快速建模,通過研究發(fā)現(xiàn),CityEngine在城市建模中快速且高效,并且能結(jié)合GIS數(shù)據(jù)直接轉(zhuǎn)化成三維模型,與傳統(tǒng)方法相比大大提高了效率,為大批量建模提供了便利。但在建筑不規(guī)則且復(fù)雜的景區(qū)建議使用處理更加細致的軟件。
參考文獻:
[1]謝年,向煜,徐艇偉.基于規(guī)則的快速三維建模技術(shù)研究[J].城市勘測,2013(4):5-8.
[2]許慶瑞,吳志巖,陳力田.智慧城市的愿景與架構(gòu)[J].管理工程學(xué)報,2012(4):1-7.
[3]黃松,李燕林,戴平娟.智慧旅游城市旅游競爭力評價[J].地理學(xué)報,2017(2):242-255.
[4]錢佳琪.智慧城市的愿景與架構(gòu)問題研究[J].黑龍江科技信息,2014(12):41.
[5]呂永來,李曉莉.基于CityEngine CGA的三維建筑建模研究[J].測繪,2013(2):91-94.
[6]劉強,林孝松.基于CityEngine的三維場景快速建模研究[J].綠色科技,2017(4):115-117.
[7]王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應(yīng)用[J].計算機技術(shù)與發(fā)展,2013(4):241-244.
[8]朱以洲.基于CityEngine的城市快速三維建模技術(shù)研究[C]//江蘇省測繪地理信息學(xué)會.江蘇省測繪地理信息學(xué)會2014年學(xué)術(shù)年會論文集.江蘇省測繪地理信息學(xué)會,2014.