劉葉偉
(江西理工大學(xué) 江西 贛州 341000)
歷史文化名城是指由國務(wù)院批準(zhǔn)公布的具有重大歷史價(jià)值或革命紀(jì)念意義、保存文物特別豐富的城市[1]。經(jīng)過多年的探索,對于歷史文化名城的保護(hù)意識(shí)也在不斷提高,隨著現(xiàn)代技術(shù)手段的發(fā)展,傳統(tǒng)的CAD技術(shù)難以實(shí)現(xiàn)對大量的時(shí)空數(shù)據(jù)進(jìn)行管理和分析[2]。歷史文化名城的文化遺產(chǎn)體系量大面廣,數(shù)字化信息保護(hù)極其復(fù)雜多樣,想要完整地保存所有建筑遺產(chǎn)的二維圖紙、三維模型、歷史規(guī)劃等信息是極其困難的,缺少一個(gè)完善的、能夠整合所有信息的平臺(tái)。
王茹等[3]比較早地基于BIM平臺(tái)針對明清古建筑進(jìn)行數(shù)字化建模研究,設(shè)計(jì)了明清古建筑構(gòu)件信息模型系統(tǒng),但該系統(tǒng)只針對建筑的構(gòu)件,無法完整還原古建的原本面貌;也有學(xué)者針對歷史建筑三維模型的建立和CAD圖紙的繪制做出了系統(tǒng)化研究[4-5],2021年,楊開等[6]分析中國的歷史文化名村名鎮(zhèn),提出了構(gòu)建全國名城鎮(zhèn)村保護(hù)管理信息化“一張圖”概念。
國內(nèi)對古建筑的精細(xì)化建模和信息管理平臺(tái)的構(gòu)建開展了大量的研究,但是針對歷史文化名城進(jìn)行Web端的可視與數(shù)據(jù)管理一體化的研究較少,主要原因在于:歷史文化名城內(nèi)建筑遺產(chǎn)的分布不集中,每一個(gè)區(qū)域的建筑和文化遺產(chǎn)特點(diǎn)也不相同,傳統(tǒng)對地理空間進(jìn)行劃分常用的是網(wǎng)格索引,建筑遺產(chǎn)不集中分布會(huì)導(dǎo)致很多網(wǎng)格內(nèi)沒有任何空間數(shù)據(jù),造成查詢效率降低[7-8]。
本文以國家歷史文化名城桐城作為研究對象,針對上述出現(xiàn)的問題,提出了針對歷史文化名城多維數(shù)據(jù)的通用搜索樹(Generalized Search Trees,GiST)索引方法,實(shí)現(xiàn)了海量數(shù)據(jù)的快速檢索;在此基礎(chǔ)之上,研究了古建筑三維模型的格式標(biāo)準(zhǔn)化轉(zhuǎn)換方法,然后改進(jìn)傾斜攝影單體化技術(shù),實(shí)現(xiàn)了Web端的三維實(shí)景模型與數(shù)據(jù)信息的集成交互,從時(shí)空層次完成歷史文化名城三維模型的可視化與渲染。
本文以桐城市為例進(jìn)行研究,桐城是安徽省著名的歷史文化名城之一,也是中國文學(xué)史上最大的散文流派“桐城派”的故鄉(xiāng)[9]。通過對桐城市文物保護(hù)單位和住房與城鄉(xiāng)建設(shè)局等部門的走訪調(diào)研,該地區(qū)歷史遺產(chǎn)的數(shù)字化信息主要包括三維激光點(diǎn)云數(shù)據(jù)、圖像數(shù)據(jù)、工程圖紙與屬性信息。
三維激光點(diǎn)云數(shù)據(jù)是無序且海量的,需要通過一定的方法進(jìn)行精簡并建立高精度的建筑模型,然后轉(zhuǎn)換為標(biāo)準(zhǔn)格式存儲(chǔ);圖像數(shù)據(jù)同樣作為建筑遺產(chǎn)的重要資料,以二進(jìn)制的形式存儲(chǔ)在數(shù)據(jù)庫中并展示,提高視覺效果,無人機(jī)用傾斜攝影方法拍攝的像片將建立傾斜模型,作為Web端的底層數(shù)據(jù);工程圖紙包括平立剖圖、施工圖等,一般為dug、dxf格式存儲(chǔ);屬性信息是對建筑遺產(chǎn)的信息的描述,包含建筑現(xiàn)狀、建筑類型、建筑功能等,與單體建筑進(jìn)行關(guān)聯(lián)然后存儲(chǔ)在不同的數(shù)據(jù)表中,便于對建筑遺產(chǎn)的全方位認(rèn)識(shí)和保護(hù)。
歷史文化名城多層次的數(shù)據(jù)索引的快速構(gòu)建不僅要能夠解決海量數(shù)據(jù)的查詢問題,還要針對三維模型來提升模型的定位、訪問和存儲(chǔ)效率。本文從時(shí)間、空間和單體建筑3個(gè)層次上進(jìn)行歷史文化名城數(shù)據(jù)索引的構(gòu)建,將單體建筑關(guān)聯(lián)到空間分布特征和時(shí)間特征關(guān)系中,實(shí)現(xiàn)了面向時(shí)空的數(shù)據(jù)查詢和分析需求。多層次數(shù)據(jù)索引構(gòu)建內(nèi)容見圖1。
(1)基于R樹構(gòu)建多維度空間數(shù)據(jù)索引。本文基于GIST框架應(yīng)用R樹算法構(gòu)建空間索引,以每一棟建筑遺產(chǎn)的位置作為R樹的數(shù)據(jù)單元構(gòu)建R樹,整個(gè)中國的版圖作為根節(jié)點(diǎn),查詢時(shí)以“縮小范圍”的查詢思想,從上往下按照國家-城市-行政區(qū)-建筑遺產(chǎn)單體,一層一層查找。R樹索引有利于提高對維空間數(shù)據(jù)的實(shí)時(shí)流暢渲染,從而保證了快速的空間查詢和分析。
(2)基于建筑屬性的時(shí)空數(shù)據(jù)關(guān)聯(lián)。以單棟建筑為基礎(chǔ)構(gòu)建的時(shí)間索引,既能與空間索引的最小數(shù)據(jù)單元相對應(yīng),又能實(shí)現(xiàn)通過時(shí)間查詢建筑和通過建筑查找年代信息的雙向查詢。
本文從兩方面開展基于WebGL的歷史文化名城三維可視化研究:(1)研究高效的建筑三維模型格式轉(zhuǎn)換方法,能夠快速轉(zhuǎn)換為3D Tiles格式;(2)基于WebGL實(shí)現(xiàn)歷史文化名城多源數(shù)據(jù)的可視化。
本文基于三維激光點(diǎn)云通過Sketchup軟件建立了SU格式的高精度三維模型。無論是SU格式的模型還是通過3dmax建立的mx模型,均無法直接通過GPU渲染顯示在瀏覽器上,因此需要對模型進(jìn)行格式轉(zhuǎn)換,為保證轉(zhuǎn)換后模型屬性的完整性,避免紋理丟失(圖2),并且符合建筑的實(shí)際組成,應(yīng)根據(jù)既定規(guī)則進(jìn)行模型拆分。
SU格式的模型包含大量的建筑語義信息,而OBJ文件僅包含幾何信息和材料屬性,因此,OBJ文件是最佳的轉(zhuǎn)換媒介。具體來說,在轉(zhuǎn)換過程中,將遍歷SU文件中的所有對象,并根據(jù)模型分割的原則將模型的幾何信息和材料屬性導(dǎo)出到較小的OBJ文件中,有關(guān)對象語義屬性的信息由JSON文件保留,再將由OBJ文件轉(zhuǎn)換得到的二進(jìn)制gltf(glb)嵌入到B3dm數(shù)據(jù)中。最終,3D Tiles數(shù)據(jù)由B3dm數(shù)據(jù)和tileset.json文件組成。這種轉(zhuǎn)換過程見圖3。
將三維模型從SU轉(zhuǎn)換到3D Tiles的過程不僅包含幾何信息、語義信息、材料屬性的轉(zhuǎn)換,還包括坐標(biāo)系轉(zhuǎn)換,SU模型中的構(gòu)件是局部坐標(biāo)系,而3D Tiles顯示的數(shù)據(jù)是全局坐標(biāo)系,3D Tiles中的所有對象都有精確的位置坐標(biāo)世界坐標(biāo)系,所以必須轉(zhuǎn)換坐標(biāo)系。在本文使用的可視化引擎Cesium中使用的3D數(shù)字地球框架對應(yīng)于全局笛卡爾坐標(biāo)系,其中地心是坐標(biāo)的原點(diǎn)[10],使用Cesium Ion完成兩種坐標(biāo)的轉(zhuǎn)換。
針對傾斜三維模型的單體化方法,主要根據(jù)是否對模型進(jìn)行切割來進(jìn)行分類,將單體化方法主要分為切割單體化、ID單體化、動(dòng)態(tài)單體化[11-12]。本文改進(jìn)動(dòng)態(tài)單體化方法,針對建筑密集、結(jié)構(gòu)復(fù)雜的建筑,基于Cesium結(jié)合數(shù)據(jù)庫研究出一種能夠快速建立單體化矢量面然后錄入建筑信息,與數(shù)據(jù)庫實(shí)時(shí)交互的方法。
本文基于Cesium的動(dòng)態(tài)單體化方法根據(jù)點(diǎn)、線、面、體之間的關(guān)系,主要依靠Cesium API中ClassificationPrimitive對象實(shí)現(xiàn)的。主要的流程思想見圖4。
本文通過建筑物輪廓點(diǎn)在ClassificationPrimitive對象中創(chuàng)建PolygonGeometry多邊形,該多邊形可自定義凸出面與橢球面之間的距離,本文定義為30 m,由于ClassificationPrimitive對象是創(chuàng)建在地形或者三維模型上的,本文設(shè)置其ClassificationType屬性為3D-Tiles,即對象貼著模型,則對象中的多邊形跟隨ClassificationType屬性,使得原本高出建筑物的凸出面貼在建筑物上,完成單體化矢量面的創(chuàng)建,再定義鼠標(biāo)移動(dòng)事件,判斷鼠標(biāo)位置是否有對應(yīng)的建筑并高亮顯示。圖5為通過本方法進(jìn)行數(shù)據(jù)錄入時(shí)的界面,圖6為鼠標(biāo)移動(dòng)事件觸發(fā)時(shí)建筑高亮顯示。
本文選擇Cesium作為歷史文化名城三維可視化的渲染引擎,Cesium是一個(gè)用于三維虛擬地球儀和地圖的開放源代碼庫,它支持跨平臺(tái)使用,而且不需要任何插件即可實(shí)現(xiàn)跨設(shè)備的動(dòng)態(tài)可視化,該引擎使用LOD多細(xì)節(jié)層次渲染技術(shù),減少了加載時(shí)間和內(nèi)存占用,在大范圍三維場景渲染中有很好的利用。圖7為桐城市孔城老街的實(shí)景三維模型渲染圖,該地區(qū)建筑合計(jì)400余棟,加載速度不足2 s,完全滿足歷史文化名城三維可視化的需求。
本文首先研究了針對歷史文化名城數(shù)據(jù)需求,提出了基于通用搜索樹多維度數(shù)據(jù)索引方法,然后研究了三維模型的格式轉(zhuǎn)換方法,實(shí)現(xiàn)了建筑模型到3D Tiles的快速轉(zhuǎn)換,最后改進(jìn)單體化技術(shù)用于建筑信息錄入數(shù)據(jù)庫,在Cesium引擎下實(shí)現(xiàn)了可視化渲染。
本文的研究在多個(gè)歷史文化名城獲得了成功應(yīng)用,能夠滿足現(xiàn)階段相關(guān)文保部門對歷史遺產(chǎn)可視化的需求。未來將從對象和數(shù)據(jù)類型進(jìn)行兼容實(shí)驗(yàn)等方面開展研究,提升普適性。