鄒青青, 姚保峰,夏 偉,陳 晨
(蚌埠學(xué)院計(jì)算機(jī)工程學(xué)院,安徽 蚌埠 233030)
三維場景建模的技術(shù)核心是根據(jù)研究對象的三維空間信息構(gòu)造其立體模型,尤其是幾何模型,并利用相關(guān)建模軟件或編程語言生成該模型的圖形顯示,然后對其進(jìn)行各種操作和處理[1]。目前,國內(nèi)外對現(xiàn)實(shí)世界的三維虛擬場景構(gòu)建方法做了很多重要的研究工作,主要方法有:直接利用一組圖片作為輸入,通過合成新視點(diǎn)全景圖像來建立三維模型,以達(dá)到在三維場景中虛擬漫游的效果[2];另一類方法是使用激光掃描設(shè)備獲取物體表面大量點(diǎn)云數(shù)據(jù),采用數(shù)學(xué)方法對數(shù)據(jù)去噪、配準(zhǔn),最終完成被掃描對象的精確表面模型[3];還有一類屬傳統(tǒng)三維建模方法,即基于幾何的建模與繪制通過人機(jī)交互手段來輔助三維建模[4]。
上述建模方法各有特點(diǎn),構(gòu)建的虛擬場景仿真效果良好,且沉浸度高。實(shí)際應(yīng)用中,當(dāng)需建模型數(shù)量大幅增加時(shí),采用上述方法所需的工作量也顯著增加,即在模型批量構(gòu)建問題上,這些方法的優(yōu)勢不明顯。以刻畫符號集的形式理論為基礎(chǔ),研究一種類比符號形式文法的三維模型文法,探究在該文法定義下虛擬場景模型的構(gòu)建方法,并通過實(shí)驗(yàn)驗(yàn)證該方法的可行與效用。
與傳統(tǒng)三維建模系統(tǒng)采用的方法不同,基于符號形式文法的過程式建模方法利用文法規(guī)則描述模型的產(chǎn)生過程,其三維場景建模流程如圖1所示。首先,獲取現(xiàn)實(shí)世界物體的內(nèi)外部信息,根據(jù)物體的幾何特征抽象出物體的組織構(gòu)造;其次,在物體概念模型的基礎(chǔ)上,將形狀組織方式轉(zhuǎn)化為若干規(guī)則描述,執(zhí)行規(guī)則的模型生成器輸出現(xiàn)實(shí)物體的初步虛擬模型,隨之完成紋理映射;為實(shí)現(xiàn)高質(zhì)量仿真模型,第三個(gè)階段根據(jù)需要對模型細(xì)化,修改規(guī)則,并補(bǔ)充紋理;最后,導(dǎo)出三維模型,實(shí)現(xiàn)場景交互功能,提供應(yīng)用服務(wù)。
圖1 基于符號形式文法的建模流程
符號形式文法是抽象化的語言通論文法,基于符號形式文法理論研究三維模型的構(gòu)建方法,是研發(fā)三維模型生成器的理論基礎(chǔ)。與喬姆斯基語言譜系文法定義相似,定義三維模型的符號形式文法為四元組(Vt,Vn,P,S),記作:模型文法(Modeling Grammar),文法四元素說明如下:
(1)Vt:終結(jié)符的非空有窮集,亦作基礎(chǔ)形狀集合,是模型演算的基礎(chǔ)。
(2)Vn:非終結(jié)符的非空有窮集,由文法定義使用的標(biāo)記符號組成,表示模型構(gòu)造過程中的形體概念。
(3)P:形如α→β的產(chǎn)生式集,其中,α∈(Vt∪Vn)+,產(chǎn)生式左部不為空,即α≠ε,β∈(Vt∪Vn)*,定義模型的生成規(guī)則。
(4)S:開始符號,表示產(chǎn)生式推演從幾何形狀S開始,S∈(Vt∪Vn)集。
有別于語言的終結(jié)符號,基礎(chǔ)形狀符號設(shè)計(jì)為一個(gè)形狀域結(jié)構(gòu)體Scope,作為三維模型構(gòu)建的最小單位,該域體屬性由四部分組成:標(biāo)識符、域原點(diǎn)坐標(biāo)、描述大小的向量以及幾何屬性(如圖2所示),這些屬性描述場景中跟隨模型的定向包圍域,模型的任何變換在域范圍內(nèi)發(fā)生。
struct Scope{ID_Type id;Coordinate O;SizeVector C;Geometry g; };//基礎(chǔ)形狀標(biāo)識號//域原點(diǎn)位置信息//大小向量//幾何體
圖2Vt集元素的形狀域與域結(jié)構(gòu)說明
產(chǎn)生式集P的定義是形式文法建模決定因素,集合中的規(guī)則決定開始形狀的變換過程,操作由幾何面組成的形狀,通過計(jì)算機(jī)描述并實(shí)現(xiàn)每個(gè)產(chǎn)生式規(guī)則的含義,迭代計(jì)算出最終模型并優(yōu)化設(shè)計(jì)內(nèi)容。在符號形式文法定義的基礎(chǔ)上,建模程序變作一種利用新模型替換特定模型的過程,即:從文法的開始形狀符號S開始,依據(jù)產(chǎn)生式的定義不斷衍生新模型替換原有模型,直到生成模型目標(biāo)。
根據(jù)三維模型基本特征,空間約束產(chǎn)生式集合主要包含的規(guī)則有:(1)縮放規(guī)則,改變模型比例;(2)位移規(guī)則,變換模型的形狀域原點(diǎn)O坐標(biāo);(3)拆分規(guī)則,把模型從整體分成不同的組件;(4)拉伸規(guī)則,擠出高度,使模型從面變?yōu)轶w;(5)切割規(guī)則,將模型分層或分塊;(6)補(bǔ)全規(guī)則,補(bǔ)全立面空缺部分;(7)替換規(guī)則,實(shí)現(xiàn)模型替換。模型文法各產(chǎn)生式的推演過程如表1所示。
表1 產(chǎn)生式的推演描述(以Vt={}為例)
文獻(xiàn)[5-7]提出了CGA(Computer Generated Architecture)語言,該語言的語法由一組預(yù)定義語句以及帶參函數(shù)構(gòu)成,其程序腳本用于實(shí)現(xiàn)過程式建模。擴(kuò)展CGA程序腳本描述模型文法產(chǎn)生式,采用C++語言實(shí)現(xiàn)三維模型生成器框架,CGA腳本作為生成器的輸入,生成器依據(jù)腳本規(guī)則迭代運(yùn)算,目標(biāo)模型則是生成器的輸出。以三維建筑模型的生成為例,CGA規(guī)則腳本包括:形狀塊擠壓拉伸、分割立面、門窗處理以及生成屋頂坡面,圖3展示了模型生成器的中間過程與輸出結(jié)果。
圖3 生成器的建模流程
紋理映射是將紋理圖像的像素映射到屏幕像素空間的過程,其作用在于對景物表面紋理細(xì)節(jié)的模擬[8-9]。紋理的實(shí)現(xiàn)一定程度上簡化模型的設(shè)計(jì),同時(shí)又提高模型的真實(shí)感。應(yīng)用語言集合正則表達(dá)式的描述方法構(gòu)造紋理生成器,先描述模型表面紋理的組織規(guī)則,生成器翻譯之,并于紋理空間計(jì)算紋理坐標(biāo),最后映射紋理至模型表面。符號形式文法與正則式形式不相同,但均能用于刻畫符號集合,紋理組織表達(dá)式采用閉包運(yùn)算表示模型表面的紋理復(fù)用過程,紋理集合的分析處理器采用遞歸下降法實(shí)現(xiàn),流程如下:
Step 1. 將待填紋理記錄成紋理空間的基礎(chǔ)元素集合;
Step 2. 計(jì)算模型對象待處理面的UVW坐標(biāo),計(jì)算紋理的UV坐標(biāo);
Step 3. 紋理表達(dá)式轉(zhuǎn)換成產(chǎn)生式形式,計(jì)算產(chǎn)生式各非終結(jié)符的開始紋理元素集;
Step 4. 依據(jù)開始紋理元素集,構(gòu)造非終結(jié)符的概念函數(shù)P(),遇到產(chǎn)生式的遞歸部分則調(diào)用函數(shù)自身;
Step 5. 從矢量方向,依據(jù)開始紋理元素(若有)進(jìn)行模型表面映射,遇非終結(jié)符號則直接調(diào)用非終結(jié)符函數(shù)P(),由函數(shù)遞歸完成紋理復(fù)用。
根據(jù)表2的紋理表達(dá)式映射紋理,效果如圖4所示,待處理面域大小幅值不同,概念函數(shù)p()的遞歸次數(shù)不同,隨之產(chǎn)生不同的紋理填充次數(shù),如圖4(b)和圖4(c)所示,體現(xiàn)紋理分析器處理過程的自動化。
表2 紋理組織規(guī)則
(a) “c(ab) *c”組織 (b) “ba*b”組織7次遞歸 (c) “ba*b”組織2次遞歸圖4 紋理映射效果
圖5(a)顯示了帶躍層樓房的建模效果。圖5(a)中模型由兩部分構(gòu)成:植物和建筑,兩者均為模型生成器的輸出,生成器的輸入根據(jù)模型現(xiàn)實(shí)特征進(jìn)行不同規(guī)則設(shè)計(jì)。
1) 植物模型。植物形態(tài)各異,造型多變,通過產(chǎn)生式推演生成植物模型的過程是:拆分規(guī)則作用于長方體,取前后左右四面經(jīng)旋轉(zhuǎn)規(guī)則與平移規(guī)則使之相交于面的平分線,成立體造型,面的透明屬性置真值,并為其賦予植物紋理,保持模型域原點(diǎn)坐標(biāo)Z軸繞垂直視點(diǎn)坐標(biāo),如圖5(b)所示。采用分形法可以將植物的逼真度達(dá)到葉片級[10],基于模型文法規(guī)則生成的植物對三維場景的貢獻(xiàn)在于沉浸感,從實(shí)驗(yàn)中能觀察出植物模型能達(dá)到較好仿真效果,相比而言,后者的計(jì)算時(shí)間更少。
2) 建筑模型。圖5(a)中建筑體包含墻體、屋頂及煙囪三部分,使用的規(guī)則有拉伸、縮放、旋轉(zhuǎn)及平移,作用于大小不同的幾何面生成模型整體結(jié)構(gòu);拆分規(guī)則作用于墻體立面,按域原點(diǎn)坐標(biāo)Y軸分出層,按域原點(diǎn)坐標(biāo)X軸分出窗,拆分依據(jù)如圖5(c)所示,轉(zhuǎn)換成紋理表達(dá)式為:Y((X(c(ba)*c)e)*d);沿Z軸拉伸層間墻沿,為模型的各部件賦予紋理,如圖5(d),調(diào)試紋理的UV坐標(biāo)值,細(xì)化規(guī)則,修改參數(shù),最終生成目標(biāo)模型。
(a) 單個(gè)模型 (b) 植物模型 (c) 立面拆分 (d) 墻沿與屋頂紋理圖5 模型效果與構(gòu)造細(xì)節(jié)
過原點(diǎn)垂直場景Z軸平面,循環(huán)生成相鄰多邊形,形狀域大小向量(Scope.C(Cx,Cy,Cz=0))賦隨機(jī)數(shù),生成基礎(chǔ)形狀集合,如圖6(a);依據(jù)單個(gè)物體模型的建模方法,采用CGA語言編輯風(fēng)格不同的模型規(guī)則腳本文件若干,圖6(a)分成22個(gè)區(qū)域片,每個(gè)片區(qū)內(nèi)選定一組規(guī)則集,作用于片區(qū)內(nèi)坐標(biāo)隨機(jī)選定的形狀域,批量生成模型,如圖6(b)所示,模塊與背景渲染效果如圖6(c)所示。由計(jì)數(shù)結(jié)果得出,圖6(c)場景中包含6 061個(gè)Scope域?qū)ο螅?05 264個(gè)形狀塊。在模型規(guī)則腳本設(shè)計(jì)完成的基礎(chǔ)上,模型生成器輸出圖6中模型只需少量時(shí)間成本。
(a) 垂直Z軸面上的形狀集 (b) 由五組不同風(fēng)格的規(guī)則腳本生成的模型 (c) 場景渲染效果(視點(diǎn)為圖b繞Z軸逆時(shí)針旋轉(zhuǎn)90°)圖6 三維場景批量建模
程序運(yùn)行環(huán)境一致為前提,基于虛擬現(xiàn)實(shí)建模語言VRML(Virtual Reality Modeling Language)的場景構(gòu)建與基于模型文法產(chǎn)生式的場景構(gòu)建相比較:①生產(chǎn)效率對比。隨著模型數(shù)量的增加,前者的消耗成本與模型數(shù)量成正比[11],后者的工作量在于模型生產(chǎn)規(guī)則設(shè)計(jì),描述規(guī)則被確定后,其建模成本受模型數(shù)量的影響較低;②優(yōu)化方式對比。VRML對三維場景具有全局優(yōu)化作用,模型的逐個(gè)優(yōu)化過程代價(jià)較高,CGA腳本控制下的場景,無論規(guī)模大小,都由模型文法的產(chǎn)生式演算出,構(gòu)造規(guī)則被優(yōu)化,則全局被優(yōu)化,后者方法本質(zhì)上具有高效性?;谖姆óa(chǎn)生式的建模方法適用于模型批量生成,其模型生成器效率較高的原因是:模型點(diǎn)線面體的細(xì)節(jié)構(gòu)造過程被模板化,目標(biāo)模型則是模板實(shí)例,模板重用有利于模型的批量創(chuàng)建,同時(shí),模板累積有利于模型重構(gòu)。
虛擬現(xiàn)實(shí)場景良好的交互功能促進(jìn)良好的沉浸感,模型生成器輸出的三維場景支持模型控制操作。更改形狀域坐標(biāo)支持模型平移與模型旋轉(zhuǎn),更改場景坐標(biāo)與視角支持場景平移與場景旋轉(zhuǎn)。與此同時(shí),支持全視視點(diǎn)與正視視點(diǎn)查看場景,提供場景任意視點(diǎn)值的存儲功能,各視點(diǎn)位置間插值實(shí)現(xiàn)場景動態(tài)漫游。支持位置查詢功能:為基礎(chǔ)形狀塊編號,增加名稱字段,連同形狀域原點(diǎn)位置屬性一并錄入數(shù)據(jù)庫,根據(jù)基礎(chǔ)塊名稱查詢模型,并將當(dāng)前視點(diǎn)切換為查詢結(jié)果模型的正視視點(diǎn),實(shí)現(xiàn)位置查詢。
符號形式文法是符號串集句法邏輯與結(jié)構(gòu)規(guī)律的抽象表述,拓展符號形式文法的作用域,本文研究了三維模型文法的空間演化規(guī)則描述,基于模型文法產(chǎn)生式規(guī)則的迭代與復(fù)用以及正則表達(dá)式的遞歸分析給出了三維模型生成器的構(gòu)造方法。
建模方法的可行性。由實(shí)驗(yàn)結(jié)果得出:在單個(gè)模型構(gòu)造時(shí),基于文法產(chǎn)生式建模能夠生成仿真效果較好的細(xì)節(jié)模型;在多個(gè)模型構(gòu)建時(shí),該方法能夠勝任大批量場景模型生成,并具有降低建模時(shí)間的意義。應(yīng)用模型文法產(chǎn)生式創(chuàng)建的三維場景其模型結(jié)構(gòu)與紋理沉浸度較高,在場景形狀域數(shù)據(jù)的支持下,可實(shí)現(xiàn)場景控制、場景漫游及位置查詢類交互功能。
建模方法的效用。與VRML語言相比較,擴(kuò)展模型文法的腳本語言更易于完成模型重用與模型重構(gòu)。在模型形體計(jì)算過程中,輸入規(guī)則腳本后的模型生成器是有效且健壯的:目的性地集成構(gòu)造模型文法的產(chǎn)生式規(guī)則,從而創(chuàng)建復(fù)雜程度不一的三維模型,是一種介乎于質(zhì)量與速度之間的折中解決方法。
加載真實(shí)數(shù)據(jù)的場景視圖服務(wù)是下一步研究工作。場景中的模型位置數(shù)據(jù)不具備真實(shí)性,將場景搭建于真實(shí)的地形、地圖數(shù)據(jù)上,為基礎(chǔ)形狀域結(jié)構(gòu)擴(kuò)展空間數(shù)據(jù)信息,利用形式文法模型生成器批量建模的優(yōu)勢,建立與現(xiàn)實(shí)世界信息相符的虛擬場景,在場景視圖服務(wù)中,由虛擬場景向用戶提供真實(shí)的、豐富的空間數(shù)據(jù)資源,提供智能化的三維場景空間信息響應(yīng),是下一步研究思路。