肖永東,顧晉瑜
(云南能源職業(yè)技術(shù)學(xué)院,云南 曲靖655001)
近年來,由于三維建模及VR 技術(shù)能夠?qū)崿F(xiàn)對(duì)周圍環(huán)境的極致逼近,會(huì)讓使用者有一種身臨其境的感覺,受到了廣大群眾的歡迎。三維建模技術(shù)也隨著市場的需求得到了快速發(fā)展。三維建模技術(shù)是建立現(xiàn)實(shí)世界虛擬化三維場景的基礎(chǔ),它能夠?qū)?duì)地理空間的表示從傳統(tǒng)的二維表達(dá)方式轉(zhuǎn)換為以三維立體的方式來展示,使之能夠更加真實(shí)、形象地展示現(xiàn)實(shí)世界[1]。目前,能夠進(jìn)行三維建模的相關(guān)技術(shù)和軟件很多,如3DMax,SketchUp、Lumion 等,這些軟件的核心思想都是把現(xiàn)實(shí)研究對(duì)象拆分成若干的基本幾何形體,然后對(duì)其進(jìn)行基本模型的建立及組合處理,是一種靜態(tài)的模型[2]。本文介紹一種基于不同工作原理的建模工具:CityEngine,該建模軟件主要是基于規(guī)則進(jìn)行,通過對(duì)表示對(duì)象的拆解,組織其規(guī)則結(jié)構(gòu),然后編寫規(guī)則文件,即可實(shí)現(xiàn)相應(yīng)模型的創(chuàng)建,它的主要優(yōu)勢(shì)在于能夠?qū)σ?guī)則文件的重復(fù)使用,并且通過對(duì)規(guī)則文件的簡單修改,就可實(shí)現(xiàn)模型的更改,相對(duì)于3DMax 等建模工具,它具備了動(dòng)態(tài)、快速、批量建模的特點(diǎn),為三維建模領(lǐng)域提供了一種新的思維與手段。
CityEngine 是一款城市快速建模的軟件,其主要思想是一種基于規(guī)則的“程序化”的建模手段,通過編寫規(guī)則程序命令,即可實(shí)現(xiàn)相應(yīng)的模型建立。
CityEngine 廣泛支持常見的三維模型數(shù)據(jù)格式,比如,OBJ,DAE,DXF,KML,3DS 等,并且與ArcGIS 等GIS 平臺(tái)無縫集成,具備地圖投影功能,可以直接使用ArcGIS 提供的二維GIS數(shù)據(jù),其成果也可以直接以MULTIPATCH 的文件格式存儲(chǔ),可作為ArcGIS 的直接數(shù)據(jù)源。
CGA(computer generated architecture)是一種基于語義的建模語言,它是整個(gè)CityEngine 的核心部分[3]。我們通過分析模型對(duì)象的組成結(jié)構(gòu),創(chuàng)建相應(yīng)規(guī)則文件,就能夠定義這種模型,并能夠?qū)Χ鄠€(gè)對(duì)象賦予這些規(guī)則,從而實(shí)現(xiàn)模型的快速及批量創(chuàng)建。通過CGA 創(chuàng)建諸如建筑模型的過程主要如下:①通過外部GIS 數(shù)據(jù)導(dǎo)入或直接繪制的方法在CityEngine 中得到要素的二維數(shù)據(jù)(在CityEngine 中,這種數(shù)據(jù)表現(xiàn)為shape或street);②根據(jù)模型對(duì)象的結(jié)構(gòu)特征編寫相應(yīng)的CGA 規(guī)則文件;③選擇相應(yīng)的二維面數(shù)據(jù),賦予CGA 文件,并對(duì)其指定一個(gè)入口規(guī)則(start rule);④使用CityEngine 的模型生成工具命令,生成相應(yīng)模型;⑤對(duì)生成的模型進(jìn)行使用或?qū)С觥?/p>
在進(jìn)行對(duì)象的建模時(shí),有些線性對(duì)象,如圍墻、柵欄、道路等,不同于一般的房屋等獨(dú)立對(duì)象,其具備線性、走向隨意、重復(fù)性明顯、規(guī)律性強(qiáng)等特點(diǎn)。對(duì)線性地物的三維建模,如果使用傳統(tǒng)的靜態(tài)建模工具,主要做法就是創(chuàng)建其基本組件,然后對(duì)組件進(jìn)行大量的復(fù)制、旋轉(zhuǎn)、移動(dòng)等操作,效率低下,如果使用CityEngine 工具,只要在基本組件的基礎(chǔ)上,編寫少量的幾行代碼,即能夠快速實(shí)現(xiàn)其模型的創(chuàng)建,體現(xiàn)了CityEngine 的優(yōu)勢(shì)。下面就對(duì)2 種常見的線性地物:柵欄和道路,根據(jù)其復(fù)雜程度,分別給予介紹。
柵欄是一種很常見的建筑模型,這種模型的特點(diǎn)是結(jié)構(gòu)單一,且連續(xù)分布,一般在轉(zhuǎn)彎位置是折線,在模型的創(chuàng)建上,方法是:
①分析柵欄的結(jié)構(gòu),并分解出其基本組成部件,根據(jù)部件的難易程度,使用SKETCHUP 等軟件根據(jù)其尺寸做出基礎(chǔ)部件,并導(dǎo)出為OBJ 或DAE 等數(shù)據(jù)格式。例如,常見的帶立柱的鐵柵欄,其基礎(chǔ)部件可分解為一個(gè)立柱和一個(gè)帶基礎(chǔ)的鐵格網(wǎng),如圖1所示。
②把已有GIS 數(shù)據(jù)導(dǎo)入CityEngine 或直接在CityEngine環(huán)境下繪制柵欄的線路數(shù)據(jù),由于CityEngine 下沒有單純的線數(shù)據(jù),導(dǎo)入的或繪制的線默認(rèn)情況下會(huì)轉(zhuǎn)換成街道數(shù)據(jù)(street),街道包含了街道(street)和人行道(sidewalk)兩部分,并且,在轉(zhuǎn)彎部分會(huì)默認(rèn)生成弧形結(jié)構(gòu)。通過CityEngine 的屬性面板,設(shè)置相關(guān)參數(shù),使之只包含街道部分,寬度設(shè)置為柵欄的寬度,且在轉(zhuǎn)彎的地方更改成折線。
③為柵欄實(shí)現(xiàn)設(shè)置屬性,編寫規(guī)則,其大致規(guī)則主要如下:
thebarrier-->extrude(barrierheight)
split(x){{~postwidth:br1|~fencelength:br2}*|~postwidth:br1}
br1-->i("ynny/assets/post.obj")
br2-->i("ynny/assets/fence.obj")
④規(guī)則文件編寫完之后,將文件賦給柵欄的街道數(shù)據(jù),直接運(yùn)行,即可得到結(jié)果,如圖2所示。
圖2 柵欄效果
相比于柵欄、管線等設(shè)施,道路在結(jié)構(gòu)上要相對(duì)復(fù)雜,單幅、雙幅、多幅路等不同的道路形式各異,結(jié)構(gòu)差異很大,但如果是同一類型的道路,卻有其共性部分,下面以城市道路的一般形式來說明其建模的基本過程。
3.2.1 基本思路
對(duì)于城市道路,要在進(jìn)行建模之前把它拆分成不同的基本組成部分,然后在CityEngine 下對(duì)各個(gè)部分分別進(jìn)行建模,從而最終實(shí)現(xiàn)城市道路模型的建立[4]。大致步驟如下:首先,將道路按照功能可拆分成CityEngine 下支持的街道(street)、人行道(sidewalk)、十字路口(crossing)、交界(junction)以及交界入口(junctionentry)五部分,不同的部分各有不同的內(nèi)容,如街道主要包括來往車行道,有時(shí)還包括隔離帶,人行道則包括人行道路面、路燈以及行道樹等內(nèi)容。有時(shí)為了簡化處理,可以把交界與交界入口歸并到十字路口中去。
3.2.2 基本過程
①對(duì)道路模型進(jìn)行分解,得到其基本組成部分,對(duì)組成道路的一些基本組件,如路燈、行道樹、牌匾等,利用SKETCHUP等軟件工具進(jìn)行制作,并導(dǎo)入到CityEngine;對(duì)于路面、車行道等要素主要使用到的貼圖,可通過PHOTOSHOP 等圖像處理軟件對(duì)采集到的圖片進(jìn)行處理,得到模型需要的貼圖數(shù)據(jù)以備用;
②導(dǎo)入或直接繪制道路網(wǎng)數(shù)據(jù),并根據(jù)道路各組成部分的寬度和長度信息,使用CityEngine 的屬性面板進(jìn)行相應(yīng)設(shè)置;
③為各個(gè)組成部件編寫規(guī)則,下面為一般城市道路建模規(guī)則程序的部分主要內(nèi)容:
④規(guī)則完成后,賦給道路數(shù)據(jù),即可生成一般城市道路,如圖3所示。
圖3 道路模型效果
在CityEngine 的平臺(tái)下,對(duì)于規(guī)則比較清晰、重復(fù)性、規(guī)律性較強(qiáng)對(duì)象的建模,充分體現(xiàn)了其快速、批量建模的思想,但這并不意味著其適應(yīng)于所有情況的三維建模。對(duì)于那些結(jié)構(gòu)復(fù)雜、模塊重復(fù)性較低的建筑模型或部件,使用CityEngine 就無法在效率和性能上得到體現(xiàn),相反,使用圖像建模工具可能還會(huì)顯得更加高效一些。不管是要進(jìn)行大規(guī)模的數(shù)字城市的三維建模還是小區(qū)域,如三維校園的創(chuàng)建,總是會(huì)遇到情況多變的自然或人工模型,為了體現(xiàn)更高的效率和質(zhì)量,建議將幾種主流三維建模軟件結(jié)合起來共同使用,充分發(fā)揮各個(gè)軟件自身的應(yīng)用優(yōu)勢(shì),以達(dá)到模型建立的最終目標(biāo)。