李恒凱,戴丹寧,魏聰
(1.贛南客家文化數(shù)字化研究院,江西 贛州 341000; 2.江西理工大學(xué)建筑與測繪工程學(xué)院,江西 贛州 341000)
《紅樓夢(mèng)》是中國文化歷史長河中一個(gè)時(shí)代的重要代表,文中大觀園山水合一的園林構(gòu)造與錯(cuò)落有致、構(gòu)造精巧的亭臺(tái)樓閣,包含著時(shí)代的社會(huì)風(fēng)貌和人文氣息,各具特色的建筑尤其成為一個(gè)時(shí)代社會(huì)經(jīng)濟(jì)發(fā)展水平和人民審美的展現(xiàn)[1]。伴隨三維技術(shù)的快速發(fā)展,利用數(shù)字化方法對(duì)歷史文化精粹和大觀園這類古典建筑結(jié)晶進(jìn)行記錄和保存成為研究熱點(diǎn),國內(nèi)外已有諸多探索[2~4]。如李春曉基于Unity3D平臺(tái),采用3ds Max建模工具,開發(fā)了虛擬農(nóng)耕場景智能展示平臺(tái)[2];劉箴利用3ds Max軟件與VRML語言構(gòu)建了河姆渡遺址博物館虛擬展示系統(tǒng)[3];Zhang等利用虛擬現(xiàn)實(shí)技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了北宋皇家園林的虛擬景觀[4]。傳統(tǒng)的基于幾何的建模與繪制方法,主是通過手工建立精細(xì)的三維模型,如3ds Max的建模技術(shù),雖然在精細(xì)度上已經(jīng)達(dá)到了非常好的效果,但其建模往往針對(duì)特定模型,不能進(jìn)行大批量重復(fù)、高效利用,并且需要較長的建模周期,由于是固定的靜態(tài)展示模型,后期的維護(hù)和調(diào)整修改也存在一定的局限性[5,6]。為解決大批量快速建模問題,基于CityEngine的CGA語言創(chuàng)建三維模型規(guī)則,實(shí)現(xiàn)批量模型構(gòu)建,成為當(dāng)前研究熱點(diǎn)[7~10],并已在文化保護(hù)和傳承方面得到初步應(yīng)用,顯示出一定應(yīng)用前景[11~13]。
興建于20世紀(jì)的大觀園主題公園,使大觀園從空中樓閣真正成為人間勝景[14]。但從忠實(shí)名著的角度,仍有遺憾,上海大觀園雖經(jīng)挖填,但它的水系還是不太符合原著意蘊(yùn),場景、建筑布局多與書中所述呈現(xiàn)較大偏離;北京大觀園周長雖然也有三里半,與書中大觀園面積相當(dāng),但山形水系遠(yuǎn)不如書中豐富,建筑分布也顯逼仄。本文在原著基礎(chǔ)上,融合CityEnging、3ds Max、CAD建模優(yōu)勢,構(gòu)建面向大觀園場景的快速、精細(xì)、可定制的建模方法。并采用GIS和Unity 3D技術(shù)進(jìn)行系統(tǒng)開發(fā),實(shí)現(xiàn)三維場景的虛擬展示,通過第一視角來展現(xiàn)人們心目中的大觀園。該研究對(duì)于《紅樓夢(mèng)》的數(shù)字化保護(hù)與文化推廣以及大觀園古典建筑的展示與傳承,具有重要實(shí)用價(jià)值及意義。
通過將多種建模方式融合,取其優(yōu)勢互補(bǔ),其中主要是City Engine的CGA建模技術(shù)以及3ds Max、CAD的三維建模技術(shù),針對(duì)大觀園進(jìn)行三維模型建立與展示,實(shí)現(xiàn)批量建模與精細(xì)建模的融合,在保證觀賞價(jià)值的前提下,縮短建模時(shí)間,提高建模效率,并達(dá)到模型可定制的目的。對(duì)書中特色建筑、山水地形、花草樹木、庭院、廊橋及楹聯(lián)匾額等精巧布設(shè),進(jìn)行更符合作品和人們心中“大觀園”的虛擬展現(xiàn)。
在一般的三維場景構(gòu)建中,需要通過各種實(shí)地測量或者影像數(shù)據(jù)的方式來獲取地圖數(shù)據(jù)和數(shù)字高程模型,并對(duì)其進(jìn)行矢量化操作,獲得shapefile文件作為導(dǎo)入CityEngine中建立三維模型的地形基礎(chǔ)。但因?yàn)楸疚乃芯繉?duì)象是文學(xué)名著的虛構(gòu)場景,所以無法通過測量、影像等常規(guī)方式獲取數(shù)據(jù),也無法直接獲取DEM地形數(shù)據(jù)進(jìn)行地形的建立。通過對(duì)其原著文本內(nèi)容的研究,結(jié)合其對(duì)大觀園園林建筑和精巧布局的描繪以及關(guān)于紅樓夢(mèng)建筑文化和園林文化的研究資料[1,15~17],最終確定參考布局底圖,如圖1所示,并以shapefile文件保存,作為整個(gè)大觀園的建立和后期虛擬展示模型位置依據(jù)。
圖1 參考布局底圖
另外,為了使模型更為逼真和具有觀賞價(jià)值,通過對(duì)其書中故事所處年代的古建筑外觀分析和總結(jié)搜集網(wǎng)絡(luò)的紋理素材,并且使用Photoshop進(jìn)行圖片處理,盡量保證貼圖的紋理有清晰、貼合實(shí)際的透視光照等效果。
2.2.1 建模流程
在地形構(gòu)建之后,將場景建模分為建筑構(gòu)造和細(xì)節(jié)構(gòu)造兩個(gè)部分,其中建筑構(gòu)造包括主要的合圍式院落和其他的水榭、亭橋、溪館等;細(xì)節(jié)構(gòu)造包括門、窗、屋頂、道路等補(bǔ)充方面,如圖2所示。
圖2三維建模流程圖
2.2.2 建模方式
(1)地形構(gòu)建與發(fā)布
將獲取的平面地圖作為參照,繪制等高線矢量圖,依據(jù)著作文本添加合適的高程屬性,并在生成地形三維模型的過程中對(duì)高程數(shù)據(jù)的安排和分布不斷調(diào)整,生成DEM模型,構(gòu)建出虛構(gòu)的大觀園地形。并通過ArcCatalog鏈接服務(wù)器,將地形數(shù)據(jù)上傳到后期將要與虛擬展示一同發(fā)布的平臺(tái)中。
(2)單獨(dú)院落構(gòu)架構(gòu)建建模
選擇從整體到局部對(duì)大觀園的建筑進(jìn)行剖析,雖然在書本的描寫中,各個(gè)建筑之間各有特色,而且樣式多變,但就總體框架來說,所有的建筑主體均可以憑借大致相同的構(gòu)架方式,也就是分面和分塊建模。其所有建筑均由地基、廊道、門前柱子、主體墻體、房頂?shù)炔糠謽?gòu)成,如圖3所示。因?yàn)橐?guī)則建模的方式是切分越多就越精細(xì)和復(fù)雜,一般情況下編碼規(guī)則也會(huì)越復(fù)雜,以一塊shapefile文件為基礎(chǔ),以同一方式切分拉伸,構(gòu)造出主體構(gòu)架的短代碼,在之后建模中針對(duì)典型的模型,可直接調(diào)用。而后再單獨(dú)依照各個(gè)院落的參考圖進(jìn)行其他比例調(diào)整,添加門窗代碼替代實(shí)體塊的細(xì)節(jié)等工作,從而實(shí)現(xiàn)模型定制。
圖3 院落構(gòu)架構(gòu)建建模示例
(3)室內(nèi)模型構(gòu)架構(gòu)建
為了保證室內(nèi)構(gòu)架的整體性,將整塊的shapefile作為放置規(guī)則的基礎(chǔ),結(jié)合各大觀園資料,將房間分為兩類,第一類整體劃分為五個(gè)部分,作為省親別墅的主要構(gòu)造,第二類分割成為三個(gè)部分,作為其他院落的主屋,并且用最簡單的split函數(shù),將房間地面參照物品擺設(shè)分塊,且分別以規(guī)則建模和3D模型外部替代兩種方式來制作,如圖4所示。
圖4室內(nèi)模型構(gòu)架構(gòu)建示例
(4)模型細(xì)節(jié)和外部模型部件添加
①細(xì)節(jié)添加實(shí)現(xiàn)多樣式可切換。為了能夠更好地達(dá)到重復(fù)利用,快速調(diào)整可視化效果,將整個(gè)院落的其他部件及場景內(nèi)零碎小模型分為另一塊建模內(nèi)容,進(jìn)行分批分組構(gòu)建。如多種類型的門窗、雕花、屋頂?shù)?,還包括花卉樹木等較為有個(gè)性化需求的3D外部模型,從而提高各個(gè)建筑物添加門窗屋頂?shù)炔考r(shí)的效率以及可根據(jù)需要選擇切換不同樣式的屋頂門窗,如表1所示,構(gòu)建的不同屋頂樣式如圖5所示。
細(xì)節(jié)構(gòu)造樣式表 表1
圖5歇山頂、四坡頂、雙坡頂、十字脊式屋頂
②外部輔助模型充實(shí)場景。盡可能完整還原虛擬場景也是本研究的重要目的之一,在整個(gè)的大觀園園林建筑中,植物、室內(nèi)擺件、床榻、牌坊、橋梁、雕花等極其具有特色,能夠展現(xiàn)出園林藝術(shù)和文化,但又非常難以以CityEngine代碼方式構(gòu)造模型,選擇使用3ds Max、CAD作為精細(xì)建模的工具,對(duì)于CityEngine的不足進(jìn)行補(bǔ)充和構(gòu)造模型更加細(xì)節(jié)化,使建筑更加古典和美觀。
(5)場景風(fēng)格統(tǒng)一調(diào)整
為了達(dá)到整個(gè)三維場景風(fēng)格樣式的統(tǒng)一,后期調(diào)整是必不可少的一部分,尤其是在貼圖、色彩等方面,通過利用Photoshop來處理貼圖素材,綜合各建筑的特色和必要的色調(diào)調(diào)整等方面,在前期預(yù)留的可切換代碼中,對(duì)一部分如墻面進(jìn)行統(tǒng)一的貼圖補(bǔ)充工作。如屋頂、墻面等以貼圖代替細(xì)節(jié)紋理的主要部分。
隨著三維建模、三維激光掃描等數(shù)字化手段的發(fā)展,催生了一個(gè)文化遺址數(shù)字化的研究熱潮[13]。國內(nèi)也已經(jīng)成功進(jìn)行了幾個(gè)文化遺址虛擬展示項(xiàng)目,如“敦煌藝術(shù)數(shù)字保護(hù)與虛擬旅游”、“虛擬三維紫禁城”等。但這些需要特定設(shè)備的大型展示項(xiàng)目,在一定的地點(diǎn)和條件下才能讓觀賞者切實(shí)地去欣賞和游覽。而且這些項(xiàng)目多著重于大型現(xiàn)存文化古跡的展現(xiàn),其中并未有一個(gè)針對(duì)中國古典園林,例如紅樓夢(mèng)中大觀園這樣蘊(yùn)含豐富文化的園林建筑的建模與虛擬平臺(tái)構(gòu)建方式。在本文的整個(gè)場景構(gòu)建與展示中,除了建模的任務(wù)之外,更重要的就是為這些模型搭建一個(gè)真正能實(shí)現(xiàn)其展示價(jià)值的平臺(tái)。
大觀園虛擬展示平臺(tái)選擇使用ArcGIS Online及Unity 3D平臺(tái),結(jié)合CityEngine、3ds Max等3D建模軟件,利用ArcGIS API for JavaScript、HTML進(jìn)行系統(tǒng)開發(fā),最終形成一個(gè)基于B/S架構(gòu)的大觀園虛擬展示平臺(tái)。
首先,利用收集到的數(shù)據(jù)結(jié)合CityEngine、3Ds Max、CAD進(jìn)行高精度三維場景建模,結(jié)合原著文本描述及文獻(xiàn)資料,構(gòu)建大觀園的DEM、DOM及shapefile數(shù)據(jù),并將構(gòu)建完成的三維場景打包成SPK格式包,以要素服務(wù)和場景服務(wù)形式一起發(fā)布到ArcGIS Online平臺(tái),然后使用IIS本地服務(wù)器作為系統(tǒng)服務(wù)器,利用Html、css和ArcGIS API for JavaScript進(jìn)行系統(tǒng)設(shè)計(jì)和功能實(shí)現(xiàn)。
在利用三維建模軟件構(gòu)造場景模型的基礎(chǔ)上,通過對(duì)多方面資料的收集和分析,對(duì)展示平臺(tái)設(shè)計(jì)了圖6所示功能,其中包括:三維場景的展示,如:大觀園之四季風(fēng)景,經(jīng)典場景虛擬再現(xiàn)、定制場景、系統(tǒng)全景場景展示等;三維場景的操作,如:模型定位查詢、模型信息查看、瀏覽路線定制、放大、縮小、定位、場景顯示與隱藏、鍵盤控制模型微動(dòng)以及添加落花、模擬一天日照效果的場景美化等;包括結(jié)合文學(xué)名著的導(dǎo)讀功能,在人機(jī)交互方面,如:以第一視角漫游大觀園、角色代入體驗(yàn)大觀園生活、趣味答題、語音講解、影音播放、用戶自定義界面等;在分析方面,如:人物活動(dòng)時(shí)空分析、模型剖析、大觀園變遷、路線分析等;還有圖片欄展示、大觀園店鋪的功能拓展。
圖6大觀園智能展示平臺(tái)功能結(jié)構(gòu)圖
虛擬展示平臺(tái)搭建流程包括:①場景的引入。使用Esri提供的在線引用,將3D地圖導(dǎo)入系統(tǒng)中,再通過ID調(diào)用ArcGIS Online中的場景,初步實(shí)現(xiàn)場景的引入。為之后的功能實(shí)現(xiàn)打下基石;②場景的操作。通過使用ArcGIS API for JavaScript,實(shí)現(xiàn)對(duì)場景中模型的操作,在dojo的require中引入相應(yīng)模塊或微件,完成各種需求功能。通過引入Search、LayerList、on等,可以對(duì)場景進(jìn)行地點(diǎn)查詢、模型的微動(dòng)和模型顯示與隱藏;③系統(tǒng)分析。利用css及JavaScript和第三方API實(shí)現(xiàn)系統(tǒng)的分析功能,通過編寫JavaScript、css文件完成模型剖析、大觀園變遷等功能,再結(jié)合第三方API,導(dǎo)入路線,實(shí)現(xiàn)人物時(shí)空分析、路線分析功能;④人機(jī)交互。在系統(tǒng)中,通過設(shè)置一些人機(jī)互動(dòng)功能,便于提高用戶使用舒適度、系統(tǒng)趣味性以及文化性,幫助用戶對(duì)大觀園有更多的了解,如以第一視角瀏覽大觀園,通過用戶親身經(jīng)歷可以更快了解大觀園;⑤功能拓展。通過一些功能拓展讓用戶更快了解場景,也能完善系統(tǒng)的一些不足。
對(duì)于在整個(gè)場景中作為主角的建筑物,首先是主體建模,基于CityEngine的CGA規(guī)則,采用把地塊拉伸至地基高度,通過comp分離函數(shù)對(duì)建筑物墻面進(jìn)行分離處理,再利用split分割函數(shù)對(duì)各個(gè)面進(jìn)行分塊。而后對(duì)于不同墻面分別對(duì)其進(jìn)行不同操作。對(duì)于分離出來的Top面,利用split函數(shù)對(duì)其進(jìn)行二次拉伸,形成建筑物面,再使用comp分離函數(shù)對(duì)建筑物進(jìn)行分面處理。結(jié)合多次split分割函數(shù)的使用,完成墻面窗花,門這些部件實(shí)體塊的構(gòu)建。CGA規(guī)則代碼的優(yōu)勢在于易于修改調(diào)整。利用這一特點(diǎn),實(shí)現(xiàn)墻面高度、屋頂坡度、樣式切換等基于參數(shù)的靈活修改。以下為地基拉伸規(guī)則:
Lot-->bottom
bottom-->
extrude(bottom_height)bottom_top
bottom_top-->
comp(f){top:Top|front:Front_1|all:wall_1}
Front_1-->
split(x){~1:wall_1|~0.8:stair_1|~1:wall_1}
此處關(guān)于門、窗、就如屋頂?shù)男巾?、四面斜坡頂、雙坡頂、十字脊式頂有這四種主要的屋頂,這類多種樣式需求的部件模型,采用多樣式可切換的形式來進(jìn)行建模,對(duì)于屋頂,采用CityEngine的roofGable屋頂樣式。提前為其批量構(gòu)造,在之后使用中提高建模速度。其中一種實(shí)現(xiàn)方法如下:
Roof_1-->
roofHip(roofAngleHip,overHang)
split(y){'0.5:comp(f){bottom:NIL| horizontal:RoofGable|all:FlatRoof_Tex} }
RoofGable-->
roofGable(roofAngleGable)
comp(f){bottom:NIL|aslant:wubian| side:RoofSide}
3ds Max作為傳統(tǒng)的建模方式,在如沁芳橋這一代表建筑建模過程中,為了凸顯某些細(xì)節(jié)處的特點(diǎn)或者CGA難以勝任的如球體、花紋細(xì)節(jié)等建模任務(wù),會(huì)結(jié)合資料尋找圖片在3ds Max、CAD中以直接描圖繪制拉伸出實(shí)體,或者以其現(xiàn)有的模型選擇拼接的方式完成,使其展現(xiàn)方式更為完善,建模效果如圖7所示。
圖7 大觀園三維鳥瞰圖
利用Esri提供的ArcGIS API for JavaScript庫,調(diào)用其中的"esri/layers/FeatureLayer"模塊,添加要素層。通過設(shè)置信息的表達(dá)方式,以彈窗的形式表達(dá)信息。設(shè)置彈窗的標(biāo)題(title)和內(nèi)容(content)。添加要素層,利用URL將arcgisonline的要素層引用到系統(tǒng)中,配置彈窗為設(shè)置定義彈窗。以下為彈窗實(shí)現(xiàn):
var featureLayer = new FeatureLayer({
url:"http://trail.arcgisonline.cn/arcgis/rest/services/Hosted/shsiliangtu/FeatureServer/0",
outFields:["*"],
popupTemplate:popupTemplate
});
scene.add(featureLayer);
使用whenLayerView()獲取要素層的圖層視圖,圖層視圖可用后,在層視圖的更新屬性上設(shè)置一個(gè)手表。在執(zhí)行查詢之前,必須等待所有功能在視圖中完成更新。訪問可用于圖層視圖的圖形,創(chuàng)建列表,創(chuàng)建列表后,監(jiān)聽每個(gè)列表節(jié)點(diǎn)上的點(diǎn)擊事件,并在點(diǎn)擊相應(yīng)節(jié)點(diǎn)時(shí)在該功能的位置打開彈出窗口。將產(chǎn)生的彈出窗口顯示多邊形的中心,內(nèi)容和標(biāo)題從features參數(shù)填充。最后在body中設(shè)置列表位置,使用css設(shè)置列表樣式。系統(tǒng)部分功能實(shí)現(xiàn)效果如圖8、圖9所示。
圖9 第一視角游覽界面
本研究綜合運(yùn)用多種軟件的特點(diǎn)及優(yōu)勢,構(gòu)建了面向文學(xué)作品場景與古典園林的建??蚣苷故酒脚_(tái)。在三維場景的構(gòu)建方面,針對(duì)大觀園特點(diǎn),利用CityEngine快速高效的規(guī)則建模方式大批量生成基礎(chǔ)模型,在此基礎(chǔ)上實(shí)現(xiàn)代碼和模型的重復(fù)利用,縮短建模時(shí)間,也可以實(shí)現(xiàn)模型的個(gè)性化快速定制。另外,傳統(tǒng)建模軟件3ds Max的精細(xì)建模技術(shù)是對(duì)CityEngine粗糙建模方式很好的補(bǔ)充與豐富,使構(gòu)建的三維場景更好地展現(xiàn)出書中所描寫的建筑特色和園林特色,提高了模型的觀賞價(jià)值;在虛擬展示方面,利用ArcGIS API for JavaScript、Html進(jìn)行開發(fā),最終形成一個(gè)基于B/S架構(gòu)的大觀園虛擬展示平臺(tái),較好地實(shí)現(xiàn)了文學(xué)作品與三維場景的結(jié)合,使文學(xué)作品嵌入到模型中,增強(qiáng)了文學(xué)作品的趣味性,促進(jìn)了文學(xué)作品的數(shù)字化保護(hù),對(duì)于文化的傳承和推廣,是一種有效的創(chuàng)新手段。