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