張 暉,劉 超,李 妍,汪友結(jié)
(1.深圳市房地產(chǎn)評估發(fā)展中心,廣東 深圳 518040;2.武漢大學(xué)遙感信息工程學(xué)院,湖北 武漢 430079)
ZHANG Hui,LIU Chao,LI Yan,WANG Youjie
基于CityEngine的建筑物三維建模技術(shù)研究
張 暉1,劉 超2,李 妍1,汪友結(jié)1
(1.深圳市房地產(chǎn)評估發(fā)展中心,廣東 深圳 518040;2.武漢大學(xué)遙感信息工程學(xué)院,湖北 武漢 430079)
Research on 3D Building Modeling Technology Based on CityEngine
ZHANG Hui,LIU Chao,LI Yan,WANG Youjie
傳統(tǒng)手工建模的方式雖然能夠建立精細(xì)的建筑物三維模型,但是建模周期長,成本高。本文介紹了基于規(guī)則進(jìn)行三維建模的方法,在CityEngine平臺(tái)下,充分利用現(xiàn)有的建筑物基底投影分布數(shù)據(jù)及內(nèi)部各樓層的房間分布矢量化數(shù)據(jù),通過規(guī)則文件驅(qū)動(dòng)生成了大場景建筑物外立面三維模型,并進(jìn)一步建立了建筑物內(nèi)部的三維模型。因此,CityEngine基于規(guī)則的建筑物建模技術(shù),能夠充分利用現(xiàn)有GIS數(shù)據(jù),快速、批量地對建筑物內(nèi)外部進(jìn)行三維的立體建模,提高了三維建模效率,為建筑物三維建模領(lǐng)域提供了一種全新的手段。
CityEngine;建筑物三維建模;GIS;建筑物內(nèi)部建模;ArcGIS
隨著計(jì)算機(jī)技術(shù)、遙感技術(shù)、GIS技術(shù)、影像處理技術(shù)的發(fā)展,三維建模技術(shù)也開始逐步興起并廣泛應(yīng)用于城市規(guī)劃、舊城改造、數(shù)字城市、建筑設(shè)計(jì)等領(lǐng)域,擁有良好的發(fā)展前景。三維建模技術(shù)是建立現(xiàn)實(shí)世界虛擬化三維場景模型的基礎(chǔ),其運(yùn)用計(jì)算機(jī)圖形圖像處理技術(shù),將地理空間數(shù)據(jù)從傳統(tǒng)以二維平面圖的表達(dá)方式轉(zhuǎn)換為以三維立體的方式顯示,能更真實(shí)、形象地展示現(xiàn)實(shí)世界[1]。
三維建模技術(shù)的核心是根據(jù)研究對象的三維空間信息構(gòu)造其立體模型,并利用相關(guān)建模軟件或編程語言生成該模型的圖形表達(dá),然后對其進(jìn)行各種操作和處理。目前常用的三維建模技術(shù)主要利用三維圖形庫OpenGL或虛擬現(xiàn)實(shí)建模語言VRML等構(gòu)建三維模型,以及使用模型軟件AutoCAD、3DStudio Max建立模型,前者可根據(jù)用戶的需要方便地實(shí)現(xiàn)各種功能,但對建模者的操作能力要求高,后者則操作簡單,易于掌握,建模效率高,但在功能實(shí)現(xiàn)和效果方面有所不足[2]。其中,張凱選等應(yīng)用AutoCAD對校園內(nèi)建筑物進(jìn)行了三維建模,能夠快速進(jìn)行模型生成和編輯,精確計(jì)算容積率、建筑密度、建筑間距,但不支持紋理編輯,不具備建筑物屬性數(shù)據(jù)[3];彭芳媛等利用3DStudio Max對航測數(shù)據(jù)進(jìn)行了三維建模方法的研究,可以建立較復(fù)雜的三維模型,三維場景細(xì)膩、光影渲染逼真、支持紋理貼附、能夠快速生成簡單模型,但不能精確輸入模型參數(shù),不具備建筑物屬性數(shù)據(jù)的編輯和查詢功能,且只適用于單棟或小范圍區(qū)域建筑物的三維重建[4]。
傳統(tǒng)的三維建模技術(shù)采用手工建立精細(xì)的三維模型,雖然展示效果好,但其結(jié)果往往是靜態(tài)、固化的模型,忽略了語義和拓?fù)?,僅僅能夠用于立體視覺表達(dá),并不能滿足屬性查詢、三維空間分析等深層次的應(yīng)用,并且目前的三維建模技術(shù)主要集中于建筑物外立面三維模型的生成,而對于建筑物內(nèi)部模型建立的研究還比較少,同時(shí)不具備快速、批量地生成建筑物內(nèi)外部模型的特點(diǎn),缺乏可重用性,導(dǎo)致資源的極大浪費(fèi),而且建模周期長。本文主要介紹一種在CityEngine平臺(tái)下基于規(guī)則的建筑物三維建模方法,能夠通過規(guī)則調(diào)用GIS數(shù)據(jù)中的屬性數(shù)據(jù),快速、自動(dòng)、批量地生成建筑物的外立面三維模型,并且可以進(jìn)一步建立建筑物的三維內(nèi)部模型,不僅充分利用了現(xiàn)有GIS數(shù)據(jù),提高了三維建模效率,在大場景建筑物三維快速建模領(lǐng)域提供了一種新的手段,而且可以將建筑物三維模型與ArcGIS進(jìn)行無縫集成,有利于充分利用ArcGIS的三維空間分析功能。
CGA形狀語法是一門建筑設(shè)計(jì)編程語言,可以生成高視覺質(zhì)量及幾何細(xì)節(jié)的建筑物模型,適用于各種形狀的構(gòu)造,它被定義為4個(gè)組件:形狀、屬性、操作及語法規(guī)則。其中,形狀由符號、幾何和數(shù)值屬性組成,通常由符號識別。幾何屬性對應(yīng)于范圍,它是空間中的一個(gè)方向包圍盒,最重要的幾何屬性是位置P、描述坐標(biāo)系統(tǒng)的3個(gè)正交矢量及尺寸矢量S。形狀操作是形狀語法中一個(gè)非常重要的組件,主要包括4種類型:首先,范圍操作可以修改給定形狀的范圍,包括拉伸、平移、旋轉(zhuǎn)和縮放;其次,分割操作以分割尺寸為屬性并沿著給定的軸分割范圍;再次,重復(fù)操作在一個(gè)給定的方向上重復(fù)幾何形狀,在CGA形狀語法中它們都被編寫為分割規(guī)則的一部分;最后,組件的分割操作可以將三維范圍分割為更小尺寸的形狀,如面、邊界、頂點(diǎn)。形狀語法規(guī)則可以修改和替換形狀,通過添加更多的細(xì)節(jié)(墻、地板、窗、門)進(jìn)行迭代進(jìn)化和發(fā)展設(shè)計(jì),模型生成通常從建筑物底面形狀開始,隨著規(guī)則的依次應(yīng)用,形狀被逐步細(xì)化[5]。
綜上所述,CGA形狀語法是一個(gè)樹形結(jié)構(gòu),其節(jié)點(diǎn)表示形狀、形狀分割及重復(fù)操作、組件的分割操作,以此捕捉建筑物的結(jié)構(gòu)(如圖1所示)。
圖1 CGA規(guī)則結(jié)構(gòu)
在建筑設(shè)計(jì)中,由形狀語法所生成的三維模型表示建筑物結(jié)構(gòu),使用語法生成建筑物模型的優(yōu)點(diǎn)是建筑物的各個(gè)方面可以在構(gòu)建過程中被開發(fā)和多次重復(fù)使用。例如,可以創(chuàng)建一組規(guī)則集用于描述建筑物內(nèi)部各樓層的結(jié)構(gòu),這組規(guī)則集可以被多次調(diào)用來創(chuàng)建相同或相似設(shè)計(jì)的多個(gè)樓層,保存后可以不必顯示地創(chuàng)建每一樓層[6]。
CityEngine是一個(gè)用于創(chuàng)建城市模型的商業(yè)系統(tǒng),它使用形狀語法來創(chuàng)建道路系統(tǒng)及三維建筑物模型,同時(shí)能夠產(chǎn)生大范圍的城市模型及多種建筑物樣式。建筑物需要通過手動(dòng)編碼語法來生成,而且可以通過試錯(cuò)過程來檢查結(jié)果和改進(jìn)語法。同其他編程任務(wù)一樣,為了獲得合適的結(jié)果也需要不斷提高精確度。
1.三維建模流程
本文選取深圳市居住環(huán)境比較成熟、建筑物較為密集的福田區(qū)景田街道為研究區(qū)域,該區(qū)域地處東經(jīng)113°46′—114°37′,北緯22°27′—22°52′,建筑物多以高層住宅建筑為主。應(yīng)用CityEngine實(shí)現(xiàn)三維模型建立的流程圖如圖2所示。
2.數(shù)據(jù)準(zhǔn)備及預(yù)處理
構(gòu)建建筑物三維模型由建筑物外立面三維模型和三維內(nèi)部模型的建立兩部分組成,其中外立面三維模型部分一般需要準(zhǔn)備建筑物基底投影分布圖、數(shù)字高程模型(DEM)等數(shù)據(jù),三維內(nèi)部模型部分需要準(zhǔn)備建筑物每層的房間分布圖等數(shù)據(jù)。此外,紋理貼圖部分需要準(zhǔn)備數(shù)字正射影像(DOM)、紋理圖片等數(shù)據(jù)[7]。
圖2 CityEngine三維建模流程圖
數(shù)據(jù)在導(dǎo)入CityEngine平臺(tái)之前需要進(jìn)行預(yù)處理,以滿足快速、批量建模的要求。首先將建筑物基礎(chǔ)底面數(shù)據(jù)轉(zhuǎn)換成ArcGIS的Shapefile或File Geodatabase格式,由于CityEngine中只能設(shè)置投影坐標(biāo)系,因此需要對建模的數(shù)據(jù)進(jìn)行投影轉(zhuǎn)換。本文選擇WGS-84 UTM Zone 49N坐標(biāo)系統(tǒng),同時(shí)還需要豐富對象的屬性信息,根據(jù)建模的要求來設(shè)定建筑物的屬性結(jié)構(gòu),如建筑物高度、樓層數(shù)、樓層高度等,屬性信息越豐富,后期通過規(guī)則建立的三維模型就能越精細(xì)。為了更好地體現(xiàn)三維建模的真實(shí)性,還需要將建筑物基礎(chǔ)底面數(shù)據(jù)與DEM疊加計(jì)算,來創(chuàng)建貼附地形表面的三維多邊形要素,使對象帶有高程信息,這樣生成的建筑物三維模型與地形的貼合會(huì)更加準(zhǔn)確。紋理貼圖圖片主要通過數(shù)碼相機(jī)攝取建筑物外圍表面獲得,利用Photoshop軟件準(zhǔn)確矯正圖片的透視關(guān)系,所有貼圖的門窗、建筑立面等必須保持橫平豎直,清晰可見[1]。
3.建筑物外立面三維模型的建立
建筑物模型規(guī)則建模的思想首先是對建模區(qū)域內(nèi)的建筑物進(jìn)行分類,根據(jù)外形可分為四面形建筑物、圓形建筑物、異形建筑物等,相同類型的建筑物只需調(diào)用一個(gè)通用規(guī)則復(fù)用即可,同類型建筑物模型的表達(dá)則按每個(gè)建筑物自帶的屬性進(jìn)行建立,因此對于普通區(qū)域只需編寫幾個(gè)常見建筑物類型的規(guī)則就可以快速、批量地進(jìn)行大范圍建筑物的三維建模,而復(fù)雜建筑物之間由于存在很少的共性,通常每個(gè)建筑物都需單獨(dú)編寫一個(gè)規(guī)則,可復(fù)用的概率很小,也可以直接導(dǎo)入已建好的三維模型[1]。
建筑物三維建模規(guī)則的編寫實(shí)際上是對三維模型的逆向分解,即對建筑物進(jìn)行拆分,然后各個(gè)拆分對象通過規(guī)則中三維模型的建立函數(shù)調(diào)用屬性信息作為參數(shù)進(jìn)行模型建立。拆分的程度越高,則建立的建筑物三維模型就越精細(xì),但同時(shí)需要提供更多的屬性信息,規(guī)則的編寫也就越復(fù)雜[1]。
建筑物紋理建模規(guī)則是在各個(gè)拆分對象上,通過規(guī)則中紋理函數(shù)調(diào)用紋理圖片對建筑物各個(gè)面進(jìn)行紋理貼片[8]。
建筑物各個(gè)拆分對象的參數(shù)信息可以存儲(chǔ)在建筑物數(shù)據(jù)的屬性表中,也可以通過CityEngine的屬性面板進(jìn)行輸入調(diào)整,這樣同一個(gè)規(guī)則對不同屬性的建筑物的建模表達(dá)也就不同。為了便于管理,通常將對象的各種參數(shù)信息存儲(chǔ)在建筑物數(shù)據(jù)的屬性表中,本文需要定義的規(guī)則屬性結(jié)構(gòu)見表1。
表1 建筑物規(guī)則屬性結(jié)構(gòu)
建筑物建模部分規(guī)則代碼如下:
本文充分利用建筑物基底投影分布數(shù)據(jù),通過編寫建筑物外立面三維模型規(guī)則文件,在City-Engine平臺(tái)下實(shí)現(xiàn)了大場景三維建筑物批量建模,提高了三維建模效率,建模效果如圖3、圖4所示。
圖3 建筑物批量三維建模
圖4 建筑物外立面三維模型
4.建筑物三維內(nèi)部模型的建立
在CityEngine中沒有用來生成建筑物三維內(nèi)部模型的通用程序,本文描述了用來為建筑物創(chuàng)建內(nèi)部模型的一般流程,并可以從外部到內(nèi)部對建筑物進(jìn)行觀察。
需要準(zhǔn)備兩個(gè)要素?cái)?shù)據(jù)集,分別是buildinginterior和buildingexterior(如圖5所示),它們代表目標(biāo)建筑物詳細(xì)的樓層平面圖,各樓層用字段FLOOR進(jìn)行分類。其中,數(shù)據(jù)集buildinginterior是用來創(chuàng)建建筑物內(nèi)部模型的主要數(shù)據(jù)集,由代表建筑物內(nèi)部各樓層房間分布的多邊形所組成,而數(shù)據(jù)集buildingexterior是用來創(chuàng)建建筑物外殼的主要數(shù)據(jù)集,由建筑物的外部輪廓線所組成,可以使用它來創(chuàng)建一個(gè)包含內(nèi)部空間多邊形的建筑物外殼。
圖5
對于數(shù)據(jù)集buildingexterior,在導(dǎo)入到City-Engine之后,可以通過規(guī)則驅(qū)動(dòng)生成建筑物的外殼。首先識別每一層樓,拉伸它們,然后使用平移函數(shù)在各個(gè)樓層的頂部將它們堆積起來。其中,用于識別樓層的屬性是FLOOR對象屬性,用來控制樓層高度的規(guī)則屬性是floorHeight。循環(huán)的基本結(jié)構(gòu)如下:
接下來為建筑物外殼添加紋理,通過識別建筑面的朝向信息來對各個(gè)樓層進(jìn)行分割,然后為相應(yīng)的建筑墻面分配exteriorWall紋理文件即可。具體代碼如下:
建筑物內(nèi)部空間的生成遵循與外殼相同的原則,對于數(shù)據(jù)集buildinginterior,在導(dǎo)入到CityEngine之后,也可以通過循環(huán)識別不同的樓層,控制拉伸,并將各個(gè)樓層形狀分割為多個(gè)墻面,代碼如下:
而室內(nèi)空間是利用人體模型來進(jìn)行修飾的,同時(shí)也可以設(shè)置建筑物內(nèi)部墻體的厚度,使其真實(shí)感更強(qiáng)。具體代碼如下:
本文充分利用建筑物內(nèi)部各樓層的房間分布矢量化數(shù)據(jù),規(guī)則驅(qū)動(dòng)建立了建筑物的三維內(nèi)部模型,建模效果如圖6所示。
圖6 建筑物三維內(nèi)部模型
三維建筑物模型的幾何數(shù)據(jù)可以從二維的數(shù)字地圖或GIS數(shù)據(jù)庫獲得,建筑物紋理圖片可采用數(shù)碼相機(jī)拍攝照片,再經(jīng)一系列處理后得到。本文對基于規(guī)則的建筑物批量三維建模技術(shù)進(jìn)行了研究,在CityEngine平臺(tái)下通過規(guī)則驅(qū)動(dòng)生成了建筑物的外立面三維模型,并進(jìn)一步對建筑物內(nèi)部進(jìn)行了三維的立體建模。因此,CityEngine基于規(guī)則的建模方法,能夠充分利用現(xiàn)有GIS數(shù)據(jù),將大場景的二維數(shù)據(jù)快速、批量地構(gòu)建成三維模型,減少人工干預(yù),縮短建模周期,對建模效果可以快速有效地調(diào)整,且可以充分利用ArcGIS的三維分析功能對生成的模型進(jìn)行量化分析。在未來的工作中,將逐步構(gòu)建所有建筑物的精細(xì)模型,進(jìn)一步完善和提高建筑物三維建模的技術(shù)應(yīng)用。
[1] 謝年,向煜,徐艇偉.基于規(guī)則的快速三維建模技術(shù)研究[J].城市勘測,2013(4):5-8.
[2] 王超,井浩淼,朱靜.基于ArcGIS與SketchUp耦合的三維景觀建模技術(shù)研究[J].綠色科技,2013(1):258-260.
[3] 張凱選,閆野,魏來.CAD下三維建模研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(2):192-195.
[4] 彭芳媛,周齊生,向常淦.基于航測數(shù)據(jù)的三維建模方法研究[J].測繪,2011,34(2):63-65.
[5] MULLER P,VEREE NOO GHE T,WONKA P,et al. Procedural 3D Reconstruction of Puuc Buildings in Xkipché[J].The Eurographics Association,2006.
[6] COIA C,ROSS B J.Automatic Evolution of Conceptual Building Architectures[C]∥Proceedings of IEEE Congress on Evolutionary Computation.New Orleans:IEEE,2011:1190-1147.
[7] 孫敏,陳軍.3維城市模型的數(shù)據(jù)獲取方法評述[J].測繪通報(bào),2000(11):4-6.
[8] 吳軍.3維城市建模中的建筑墻面紋理快速重建研究[J].測繪學(xué)報(bào),2005,34(4):317-323.
[9] 路春燕,衛(wèi)海燕,李吉英.IMAGIS在城市三維建模中的應(yīng)用[J].測繪科學(xué),2011,36(6):270-272.
[10] 許捍衛(wèi),范小虎,任家勇,等.基于SketchUp和ArcGIS的城市三維可視化研究[J].測繪通報(bào),2010(3):52-54.
P208
B
0494-0911(2014)11-0108-05
2014-01-23
張 暉(1984—),男,山東淄博人,碩士,高級工程師,主要研究方向?yàn)镚IS應(yīng)用工程。
劉 超
張暉,劉超,李妍,等.基于CityEngine的建筑物三維建模技術(shù)研究[J].測繪通報(bào),2014(11):108-112.
10.13474/j.cnki.11-2246. 2014.0376