馮雅欣 陳 麗 劉如飛 王仕林 李文輝
(1. 山東科技大學 測繪與空間信息學院, 山東 青島 266590;2. 山東省地質測繪院, 山東 濟南 250000)
隨著“數字城市”和“智慧城市”的發展,城市三維模型已經成為導航、城市規劃與管理、仿真和虛擬現實等許多應用的核心內容,各種應用都要求城市模型具有高保真度和低復雜度,這些都離不開建筑物單體化三維建模這一關鍵技術[1-2]。而建筑物立面作為建筑物的重要組成部分,能否快速準確地進行幾何重建至關重要[3]。
目前,三維激光掃描技術作為一種新興的掃描技術,利用激光測距原理,通過記錄建筑物表面大量密集點的三維坐標、反射率和紋理等信息,大面積快速獲取被測對象表面的三維點云數據[4-6],并且能完整覆蓋建筑物局部細節特征[7-9],具有效率高、精度高的特點,被廣泛應用于建筑物三維重建。現有研究中,賈雪等[10]根據建筑物的結構特征,設計了合理的鑲嵌模型,利用3ds MAX進行分塊建模,再將屋頂、屋身、臺基和門窗等塊狀模型進行組合,構造出完整的三維立體模型。楊雪姣等[11]將建筑物主體點云導入3ds MAX,進行建模及紋理貼圖,三維模型成果根據需求進行三維漫游展示及功能二次開發。索俊鋒等[12]利用Trimeble Realworks軟件提取建筑物的基座、門、窗、柱體等平面位置在不同視角、不同高度的剖切面輪廓線,將其導入SketchUp軟件中,創建三維模型。上述方法實現了建筑物三維模型的精細化重建,但具有勞動密集程度高、工作量大、成本大等缺點[13]。
因此,本文通過分析建筑物立面中各部件的幾何特征、空間分布特征及拓撲關系,基于三維激光掃描儀獲得的海量高保真點云數據[14],獲取所需關鍵參數,自動生成多細節層次(levels of detail,LOD)建筑物墻體及窗戶模型,構建建筑物立面多層次三維模型。
建筑物立面包含有豐富、直觀的細節特征(如窗戶、門、陽臺等),所具有的逼真紋理和復雜的幾何結構需要大容量的數據存儲以及強大的計算能力來滿足模型可視化渲染與分析要求[15]。由于大多數計算機的性能有限,因此有必要以不同的LOD來表達3D城市模型,以降低模型的復雜性和存儲要求[16]。
目前常見的三維數據標準中,城市地理標記語言(city geography markup language,CityGML)對LOD具有最完備的定義。在CityGML中,CityGML標準根據建筑物語義信息將建筑物模型定義為5個層次細節(LOD0-LOD4),隨著細節層次的提升可以獲得更多細節信息,其潛在的應用也會不同[17]。現有建筑物LOD研究中,利用通用的LOD模型滿足不同應用需求是比較困難的,因此需要根據具體應用需求建立不同精度的模型。故本文通過分析建筑物的幾何特征、拓撲關系及空間分布特征,首先制作墻體及窗戶不同層級的離散LOD,然后根據具體應用需求,選擇不同層次細節的各建筑部件,生成所需的建筑物立面LOD。
建筑物立面包含眾多的顯著細節特征,如墻面、窗戶、門洞、地面、頂面、陽臺、突起細節等,它們都具有不同的幾何特征、空間分布特征以及拓撲關系。幾何特征主要指各部件的表面幾何形狀,如尺寸、結構等,是實現建筑物各部件精準幾何重建的重點。空間分布特征是指各細節要素的分布形態、地理位置及方位,是實現快速三維重建的基礎。拓撲關系是指相鄰立面及各面片之間的相互關系,如何重建立面與立面之間的拓撲關系是建筑物立面模型建立的關鍵[18]。建筑物立面中顯著細節特征描述,如表1所示,其中窗戶及墻體是本文研究的重點。

表1 建筑物立面細節特征描述表
窗戶目標作為建筑物立面中的主要細節特征,分布范圍廣且占據面積較大,因此構建窗戶目標的LOD模型,可有效減少建筑物立面幾何模型和紋理圖像數大小,高效輸出三維可視化場景。
本文根據CityGML中建筑物分級的紋理、分類、精度和功能等方面的模型特征,分析窗戶的結構特征,設計了一種窗戶目標的LOD模型,采用的劃分方式及各層級所需獲取關鍵參數如圖1所示。①LOD1:借鑒已有的建筑信息模型(building information modeling,BIM)架構反映窗戶模型的體量信息,由窗戶外部輪廓拉伸而成;②LOD2:反映窗戶主要結構,是在LOD1的基礎上再進行細分,忽略建筑物由特殊造型所造成的結構變化,可滿足基本結構分析,該層級模型由窗框和窗戶內部輪廓拉伸而成的體塊模型構成,并分別賦予紋理;③LOD3:此層級為精細模型,能夠反映窗戶部件的詳細尺寸信息。

圖1 窗戶LOD模型及所需特征參數示意圖
墻體作為建筑物立面的重要內容,能反映建筑物的輪廓特征,是其他立面信息的依附。墻體具有復雜的結構,表面包含著很多外部細節,除了建筑物主墻體和側墻面,還含有突起結構,故本文設計了LOD1-3層級墻體概念模型,如圖2所示。采用的劃分方式如下:①LOD1:體塊模型,可看作由二維平面縱向拉伸為三維的塊狀模型;②LOD2:基礎模型,在體塊模型的基礎上增加窗洞,形成墻體鏤空模型;③LOD3:細節模型,在基礎模型的基礎上進一步豐富墻體外部的細節結構(窗檐、突起)。

圖2 墻體LOD模型
MAXscript是Autodesk公司為3ds MAX軟件開發的腳本語言,具有語法簡單、功能強大的特點,可用于開發相應的程序實現建模、動畫、渲染及場景動態控制等操作。針對結構上具有規律性的建筑物立面建模,運用 MAXscript編程比傳統的交互式操作效率更高[19]。
本文主要運用MAXscript腳本語言提供的Rollout功能,通過用戶界面Button、Edittext、Dropdownlist等,制作參數的輸入界面,通過Message Driven機制,用鼠標單機來執行各部件三維建模代碼,實現LOD1-3層級窗戶及墻體模型的自動三維重建,從而能更加方便、快速地實現建筑物多層級立面三維重建。
本文提出一種面向窗戶對象自動建模方法,該方法首先將幾何特征相同的窗戶部件分為一類,并根據各層級特征參數,分別自動重建三個層級窗戶部件的單體模型;然后分析空間分布特征,研究分布規律,可快速生成各立面中LOD1-3層級窗戶部件的三維模型,如圖3所示,具有相同幾何特征的窗戶,一般其相鄰窗戶之間的橫向距離和縱向距離是相同的,即d(A,D)與d(D,E),d(A,B)與d(B,C)的數值是相等的,只需計算出其橫向個數n及縱向個數m,以左下角窗戶點A為基準,即可自動生成整個立面中的窗戶模型。最后,由1.2節的介紹可知,窗戶包含于墻體內,且兩者法向量方向及方位角相同,故獲取A點的三維坐標以及依附在墻體的方位角α,即可自動實現該立面中窗戶三維模型的真實位置坐標及姿態的準確還原。

圖3 窗戶目標快速生成示意圖
LOD1-3層級窗戶三維模型重建具體步驟為:
(1)創建函數box(),通過提取的關鍵參數t1、b1、h1,設置參數length、width、height、pos等參數,自動生成具有不同幾何特征的LOD1層級窗戶單體模型。
(2)創建函數box(),具體參數大小設置同LOD1層級一樣,通過獲取的關鍵參數t2、b2、h2、t4,利用腳本調用addModifier中的Edit_Poly接口,通過設置其中Inset、ExtrudeFace等參數,自動生成LOD2層級窗戶單體模型。
(3)通過獲取的關鍵參數b2、t3、b3、h3、h4、t5,在LOD2層級模型基礎上,利用腳本增加Bevel、BridgeBorder等接口中的參數,自動生成LOD3層級窗戶單體模型。
(4)以LOD1-3層級單體窗戶模型為基準,通過調用copy函數,以A點位置為基準,通過兩次for循環,批量自動生成各墻體立面中的LOD1-3層級窗戶三維模型。
(5)初始化數組array1,將A點的三維坐標(x,y,z)及α加入array1,調用move函數及rote函數,通過for循環自動實現窗戶位置及姿態的準確還原。
同一建筑物墻體具有不同的結構特征(高度、寬度)和紋理特征,且相鄰墻面多為正交關系,為實現墻體自動建模,提出基于建筑物墻體分類、分層表面建模方案,將墻體結構和紋理特征相同的墻體分為一類,實現分層次快速建模。如圖4所示,可將該建筑物墻體分為三類,并分別獲取各類別的關鍵參數,如圖5所示,通過MAXscript腳本語言分別重建墻體A、B、C的三維模型。

圖4 建筑物墻體模型示意圖

圖5 墻體模型各個組成部分示意圖
LOD1層級墻體模型根據墻體外角點信息A1,A2,…,A16及墻體厚度T1自動生成墻體二維平面圖,如圖6所示。并根據高度參數H1、H2、H3,分層次構建墻體。LOD2層級墻體模型是在LOD1層級墻體模型的基礎上形成墻體的鏤空模型,本文通過布爾差集運算(A-B)實現三維重建,該方法原理是從基礎(最初選定)對象移除相交的體積,即需從LOD1墻體模型(A)中移除窗戶與墻體相交的體積(B),其中運算對象B的長度及高度與窗戶模型的數值相同,厚度的數值要大于T1,此時進行差集運算,實現墻體鏤空模型重建。在LOD2層級墻體模型的基礎上,將墻體鏤空模型與墻面突起細節特征進行自動組裝,實現LOD3層級墻體三維模型重建。

圖6 墻體二維平面圖
2.2.1 LOD1層級墻體三維模型重建步驟
(1)將角點A1,A2,…,A16的三維坐標依次賦予點號,并依次存儲在數組B中,初始化數組array2,將B中的三維坐標加入array2中。
(2)fori=1 to 點號pdo,i=i+1,生成建筑物外輪廓。
(3)調用EditablePoly中的Inset接口,將insetAmount數值大小設置為T1,自動生成具有建筑物內輪廓信息的墻體平面模型。
(4)調用Extrude接口,根據參數H1,將墻體A的平面模型自動生成墻體三維模型。
(5)調用copy、move等函數,將墻體A平面模型沿Z軸方向移動H1,根據參數H2自動重建墻體B三維模型。
(6)根據參數H3在墻體B的基礎上進行Extrude操作,生成墻體C。
2.2.2 LOD2層級墻體三維模型重建步驟
(1)調用box()函數,更改函數中的length參數,使其數值大于T1,自動生成運算對象B。
(2)利用Subtraction運算工具,將之前生成LOD1層級墻體與對象B做三維差積布爾運算,生成LOD2層級墻體三維模型。
2.2.3 LOD3層級墻體三維模型重建步驟
(1)調用Select接口,自動選中LOD3層級墻體模型及突起模型。
(2)利用EditablePoly中的attach工具接口將LOD2層級墻體模型與突起細節進行組裝。
本文基于3ds MAX軟件,采用MAXscript腳本語言,根據上文所述方法,編寫了自動生成建筑物墻體和窗戶三維模型的插件。為驗證該方法和相應插件的實用性及可靠性,使用FAROFocus3DX130三維激光掃描儀獲取了單個建筑物的點云數據,如圖7所示。

圖7 建筑物點云
傳統手工建模需要通過連接墻體線生成窗戶面,在生成具有相同幾何特征窗戶模型時,需要多次選擇窗戶線,通過捕捉命令進行對齊操作,具有操作繁雜,工作量大等問題。本文面向窗戶單體對象,獲取關鍵參數,即可自動重建具有不同幾何特征的窗戶三維模型,且自動實現位置及姿態的準確還原。為更直觀地顯示各層級模型的幾何特征,本文選用建筑物單個立面中的LOD1-3層級窗戶線框模型進行展示,如圖8所示。

圖8 LOD1-3窗戶線框模型
傳統手工建模需要多次連接墻體線,分割出具有不同材質、高度的墻體,在操作過程中會出現選錯墻體線,出現拓撲等錯誤,本文通過分析墻體幾何及紋理特征,獲取關鍵參數,自動實現墻體分層次建模,利用布爾運算構建墻體鏤空模型,避免出現因操作失誤引起的拓撲錯誤。按照第2.2節所述方法,利用各層級墻體模型所需特征參數,快速重建LOD1-3層級墻體模型,如圖9所示。

圖9 LOD1-3墻體模型
建模精度是衡量建筑物立面三維重建的重要指標,為了分析所構建的建筑物立面精度,從LOD3層級建筑物立面中隨機選取根據本文方法得到的8個特征點坐標,并通過高精度三維信息采集軟件采集點云數據中與之對應特征點的三維坐標,進行距離差計算,結果如表2所示,并對這8組數據進行統計分析,經計算距離偏差的中誤差為0.126 m,建筑物立面三維重建精度較好。

表2 建筑物立面特征點坐標對比 單位:m
滿足拓撲關系及精度的情況下,為測試各層級墻體模型和窗戶模型的建模效率及多邊形面片數量,本文統計了單個立面中LOD1-3層級窗戶模型和墻體模型的頂點數、多邊形數以及自動建模時間,統計情況如表3、表4所示。可以看出,模型精細度越高,數據量越大,所需建模時間越多,與傳統手工建模相比較,本文構建多層級窗戶模型和墻體模型所需時間明顯縮短。

表3 建筑物單個立面中多LOD層級窗戶模型特征及建模時間統計表

表4 多LOD層級墻體模型特征及建模時間統計表
最后將LOD3層級建筑物墻體、窗戶及其他部件進行組裝,形成LOD3層級建筑物單體模型,如圖10所示。

圖10 LOD3層級建筑物三維模型
綜上所述,針對傳統手工建模的缺點,本文以三維激光點云數據為基礎,分析各部件的幾何特征、空間分布特征及拓撲關系,設計一種新的窗戶LOD概念模型和墻體LOD概念模型,定義了各細節層次精細度及所需的結構化特征數據,并基于MAXscript腳本語言,通過獲取所需關鍵參數,實現了多層級窗戶和墻體的自動重建。并對某建筑物點云數據進行實驗,選取LOD3層級建筑物立面特征點與原始點云相對應的特征點距離中誤差作為精度評價標準,經計算距離偏差的中誤差為0.126 m,證明該建筑物立面模型構建精度較好,可滿足城市信息模型中LOD1-4中的精度要求,滿足城市規劃管理和數字城市建設的需要,可結合建筑物地理坐標,進行地理信息系統(geographic information system,GIS)分析,實現建筑物信息查詢和共享。在空間占位、功能分區等方面需求,建筑物三維模型幾何精度還有待提高。
在解決精細度及數據量的問題上,統計了各層級墻體及窗戶模型面片數量,實驗結果表明,精細度越高,模型的面片數量越多,因此構建多層級窗戶和墻體三維模型可有效減少建筑物立面幾何模型的數據量。在建模效率問題上,將各層級建筑物建模時間與傳統手工建模時間進行對比,實驗結果表明,本文方法自動化程度較高,效率明顯提高。針對立面為平面、相鄰立面間為正交關系及窗戶為規則形狀的建筑物,本文方法能夠較好地對其進行立面建模,但對于立面結構復雜、呈曲面構造的個別建筑物的幾何模型尚不能有效構建,曲面墻體及曲面窗戶是本文下一步重點研究內容,計劃利用相應算法自動提取出曲面墻體和窗戶的輪廓線,獲取關鍵參數,利用MAXscript腳本實現復雜建筑物三維模型重建。