邵澤鳳,鄒青青,張榮華,任義蘭
(蚌埠學院計算機工程學院,蚌埠233030)
三維城市模型是數字地球向動態化、多維化、網絡化、智能化發展的底層基礎軟件之一,城市虛擬場景憑借其良好的直觀性與沉浸感已成為數字地球信息系統中常用的現實表達形式,對城市建設的決策與調控有重要的指導作用。隨著三維場景建模技術不斷改進與革新,三維建模軟件(如3D MAX、Maya、3Dimage、CAD等)能夠完成精細模型的設計與實現,仿真程度高,適用于規則模型與非規則模型的構造[1]-[2]。虛擬城市模型構建中,樓宇建筑、道路等模型具有幾何特征,共性較大,針對城市模型大批量生成的場合,上述軟件的效率優勢不明顯。激光點云掃描是近年來的新興技術,掃描系統通過對現實環境的掃描、分析處理及三維重建,可提供精度達0.4m 的現實要素密集場景[3-4]。掃描大規模城市區域時,獲取的點云數據量巨大,數據中存在大量立面,對數據分類、直接抽取建筑物邊界難度較大,為獲得準確三維場景,需要借助大量相關算法完成三維重建。近年,在三維建模技術領域,語言描述定義三維模型的方法,如VRML(Virtual Reality Modeling Language)/Web3D、GML(Geography Markup Language)等,均從語義層次定義三維模型的外型及模型直接拓撲關聯,由于具有良好場景沉浸感及動態可交互性,該類方法被廣泛研究與關注[5-9]。本文研究一種基于符號形式文法的CGA(Computer Generated Architecture)腳本語言,分析CGA 的原理依據、建模流程以及在文法規則定義下虛擬場景模型的構建方法,并從大規模批量城市模型生成的應用角度,討論該方法的生產效率。
語言學家Chomsky 闡述了語言遵循的文法,該文法以形式的語法為特征,不受語境影響,并帶有轉換生成規則[10]。Chomsky 關于語言學的文法結構理論被廣泛應用在語言翻譯、高級程序語言編譯、機器人命令識別等領域。將定義文法的四元組(終結符號集,非終結符號集,生成規則集,文法開始符號)的終結符號集合更換為圖形樣本,轉換生成規則用于描述圖形樣本向三維空間的生成模式,基于描述語言的形式文法構建三維模型的符號形式文法,拓展Chomsky 形式文法理論在三維建模領域的應用[11]。生成規則的定義是該方法三維建模的關鍵部分,實現鑒于城市建筑物特點,以四邊形圖形樣本為例,三維模型文法的轉換生成規則描述如表1 所示。
表1 中三維模型轉換規則上下文無關,用于推導模型生成。模型構造過程中,生成式規則決定三維模型中一個部分(或者整體)的重新構建,即用表中的生成式右部模型替代表中相應左部,完成模型細節重構。生成式集合定義是符號形式文法三維建模的關鍵因素,集合中的生成規則推演樣本圖形的變換過程,通過程序描述并實現每個產生式規則的含義,從樣本形狀符號開始,迭代計算出最終模型并優化設計內容。
傳統三維建模方法先使用標準基本體(平面、圓柱、長方體等)等進行搭建,接著按實體目標對模型造型加以修改,然后賦予紋理,最后對場景完善[7]。與傳統方法不同,基于文法規則的過程式建模方法利用生成式規則描述模型的產生過程:根據現實世界中建筑模型特征,設計模型生成CGA 腳本;將現實地圖數據置于坐標原點垂直場景Z 軸平面,網格范圍內循環生成相鄰多邊形,形狀域大小向量受閾值限制,生成基礎形狀集合;每個網格內選定一組規則集腳本,復用于片區內坐標隨機選定的形狀域,批量生成模型;根據設計要求定義立面風格的程序化腳本,細化模型;繪制模型三維視圖,渲染效果圖和交互。
CGA(Computer Generated Architecture)文 法 是Wonka 等人[12]引入的集合語法的擴展,作為一種順序語法與Chomsky 語法類似,適合捕捉隨模型變換的信息,規則的順序應用適用于描述結構,即特征和成分的空間分布。幾何樣本集合是生成模型的起點,給幾何樣本賦予一定的規則,生成器依據腳本規則迭代運算進行建模。借鑒L-System 系統[13],CGA 擴展了組件拆分、語法符號添加、縮放、平移和旋轉形狀的一般規則。根據表1 與CGA 文法擴展,編輯單個建筑模型規則腳本(程序清單1)內容如下。


表1 生成式規則與腳本語言描述

圖1 模型產生過程
以上程序清單作用于圖1(a)中的二維圖形lot,按照height 的高度值生成模型的三維主體圖1(b)。該形體又拆分為六個面,其中,頂面bld_top 替換生成雙坡屋頂圖1(e),四個側面分割成樓層再進行紋理貼圖。傳統紋理貼圖處理三維模型的完整表面,通過UV 坐標映射于現實坐標,調整圖片的覆蓋方向與次數,CGA分割規則將完整模型立面按樓層水平或垂直方向分割,分割后的小單元按需求生成形態各異的三維模型(如程序中分割成的X、Y、Z),并在各自紋理坐標中分別賦予不同外觀設計(諸如向陽性、光照面、立面漫反射、與鄰近建筑物距離等),建筑物性質即能在CGA 文法規則中得到細化。
通過開源地圖協作計劃OSM(Open Street Map)獲取建筑、街道矢量數據,基于OSM 地形數據地圖底層創建三維場景,還原城市原貌,三維城市場景即能為地理信息系統應用提供支持[14]。現實地圖相符道路區塊內部的二維幾何圖形是每個建筑類型底面的基本形狀要素,樹狀型的底面拉伸為柱狀,并且適應不同的地形地貌,通過距離的定義和方位限制來確定圖形的鄰近關系和模型坐標域主軸。
OSM 區域塊內的二維圖形存在多樣性(包含三角、多邊形、樹狀、多米諾或小方形等),模型生成器按照CGA 腳本中規則約束,根據不同的初始形狀自適應生成造型不同的建筑體(如圖2),建筑立面依據相交線重新建立邊界,快速完成模型整體構建。

圖2 CGA腳本作用于不同的圖形
設計五種不同建筑風格的CGA 腳本,將OSM 地圖二維幾何圖形地塊作為五種CGA 腳本的輸入,在CGA 腳本描述規則作用下,即可輸出一個大規模以及詳細模型的場景并寫入磁盤,批量模型生成效果如圖3所示。以主頻2.0GHz 的CPU、2G 內存的運算環境為例,一個包含5 萬個多邊形的模型(圖3a)需要0.98秒,寫模型入磁盤約0.55 秒。

圖3 批量建模渲染效果
VRML 引擎采用復用技術應對模型重構,從而降低設計過程中存儲消耗。一個三維模型創建完成后,可以嵌入復用到其他的需要的三維場景中,而無需重新編制代碼。模型重用時,可保持模型原有參數不變,也可進行坐標或比例的變換,目標需求改變的情況下,不能根據需求自適應改變模型本身的形狀特征,只能重新設計。GML 高細節層次LOD(Levels Of Detail)模型時,存在時間和存儲的大量消耗,隨著模型數量的增加,GML 消耗成本與模型數量成正比。當場景模型需求數量大幅上升,基于上述兩種語言的研發周期隨之增加,時空消耗問題變得更加明顯。
CGA 規則集合模塊化的前提下,渲染一個更大的城市,如幾十億個多邊形,需要一個層級可靠的手動模擬不同細節級別的LOD 解決方案,通過將高分辨率終端與低分辨率終端互換,以及調整產生建筑模型的CGA 腳本,節省內存開支。通過CGA 腳本復用,快速進行大規模城市批量建模,較短的工作周期即可實現10 平方公里的城區虛擬規劃,并完成整個規劃項目的虛擬模型場景開發工作。

表2 三維建模語言功能與應用對比
在三維建筑模型構造過程中,CGA 腳本描述了二維圖形演算成三維模型的過程,其建模原理與現有的三維描述語言不同,是基于規則運算迭代完成模型的推演。CGA 建模方法具有較強的適應性,根據給出的初始圖形符號的不同,完成相適應建筑模型構造,依賴于三維建模引擎在模型構造過程中對初始圖形三維域的演算以及模型立面的運算與重組。三維建筑模型先分割后映射紋理,有利于生成更細致的渲染效果,同時分割體可獨立運行不同規則,再次迭代后,有助于生成需求的目標模型。基于OSM 矢量地圖數據進行大規模三維城市模型構建,對比于VRML、GML 語言建模方法,CGA 腳本描述的文法規則建模方法能夠在較短周期內快速生成不同風格的三維建筑模型;且當模型數量激增時,CGA 方法從建模原理本質上體現出較高的生成效率。