薛文斌,李紅勛,汪志遠(yuǎn),賈 楠
(軍事交通學(xué)院國家應(yīng)急交通運(yùn)輸裝備工程技術(shù)研究中心,天津300161)
在運(yùn)用模擬器進(jìn)行駕駛訓(xùn)練時(shí),為了給用戶提供一個(gè)真實(shí)感強(qiáng)的操作環(huán)境,需要提供多感官的模擬信息,而良好的視覺效果對(duì)真實(shí)感起到了至關(guān)重要的作用。視覺真實(shí)感取決于兩個(gè)重要因素:一是虛擬場景模型建立的好壞;二是渲染虛擬場景時(shí)連續(xù)播放的幀率。虛擬場景模型建立的越精確、細(xì)致,畫面生成的效果就越真實(shí),描述幾何模型的節(jié)點(diǎn)和面的數(shù)目也越多。而場景模型越復(fù)雜,系統(tǒng)渲染運(yùn)算量及系統(tǒng)資源消耗越大,使得畫面播放幀率降低,畫面播放不流暢,影響了視覺效果。因此,對(duì)虛擬場景模型既要求真實(shí)感強(qiáng),又要求數(shù)據(jù)量小,即降低場景模型的復(fù)雜程度[1]。
針對(duì)上述矛盾,目前常用的解決方法有:一是場景分塊管理。將一個(gè)復(fù)雜的場景劃分成多個(gè)簡單場景,各簡單場景相互之間幾乎不可見或完全不可見。這樣,系統(tǒng)就能有效地減少在任一時(shí)刻需顯示的多邊形數(shù)目,從而有效降低場景復(fù)雜程度。這種方法對(duì)封閉空間有效,對(duì)開放空間則很難發(fā)揮作用。二是場景可見性計(jì)算。系統(tǒng)僅渲染用戶當(dāng)前視角內(nèi)的場景,大大減少了計(jì)算的多邊形的數(shù)目[2]。但當(dāng)用戶視角內(nèi)的場景復(fù)雜時(shí),這種方法也無能為力。三是細(xì)節(jié)層次(lever of detail,LOD)算法[3]。為每個(gè)物體建立多個(gè)形狀相似但細(xì)節(jié)描述等級(jí)不同的模型,從而減少需渲染的多邊形數(shù)目。這種方法對(duì)場景模型的描述及管理提出了較高的要求。四是二維圖像繪制技術(shù)[4]。用二維圖像來代替大的靜態(tài)場景網(wǎng)格,從而減少場景繪制的多邊形數(shù)目。這種方法對(duì)場景的渲染速率只與圖像分辨率有關(guān),與場景復(fù)雜程度無關(guān)。
比較以上幾種方法,細(xì)節(jié)層次算法具有普遍適應(yīng)性。該算法是對(duì)同一個(gè)場景中物體的細(xì)節(jié)進(jìn)行不同程度的描述,并在三維場景渲染過程中,根據(jù)一定的規(guī)則選取不同精細(xì)程度的模型進(jìn)行渲染。場景中模型的精細(xì)程度要求隨著場景中模型離視點(diǎn)的距離、角度、重要程度不同而不同,因此,可以有的放矢地進(jìn)行細(xì)節(jié)程度劃分。圖像渲染時(shí),對(duì)于離視點(diǎn)比較遠(yuǎn)或體積比較小的物體,采用較粗的精細(xì)程度進(jìn)行繪制;反之,對(duì)于離視點(diǎn)比較近或體積比較大的物體,采用較細(xì)的精細(xì)程度進(jìn)行繪制。這種規(guī)則還可以擴(kuò)展應(yīng)用到場景中的運(yùn)動(dòng)物體和靜止物體上,即對(duì)正在運(yùn)動(dòng)的或做高速運(yùn)動(dòng)的物體采用較粗的細(xì)節(jié)描述,而對(duì)靜止的或運(yùn)動(dòng)速度比較低的物體采用較細(xì)的細(xì)節(jié)描述。
本文采用頂點(diǎn)聚類的網(wǎng)格簡化算法,對(duì)駕駛訓(xùn)練虛擬場景中的山體網(wǎng)格模型進(jìn)行簡化,生成不同細(xì)節(jié)層次的簡化模型并運(yùn)用于駕駛訓(xùn)練虛擬場景中。
細(xì)節(jié)層次簡化是對(duì)同一模型進(jìn)行相關(guān)處理生成不同細(xì)節(jié)程度的多個(gè)模型,這些模型應(yīng)能保留原始模型的特征信息。在場景圖像渲染時(shí),選擇適當(dāng)細(xì)節(jié)程度的模型進(jìn)行繪制,以提高場景運(yùn)算的實(shí)時(shí)性能。采用頂點(diǎn)聚類算法簡化模型,首先找出模型的特征信息(如平面曲率、尖點(diǎn)和特征邊界),再通過融合平坦的區(qū)域和線性變化的特征邊實(shí)現(xiàn)模型簡化,這樣既能保留模型的表面形狀和特征,又能達(dá)到簡化的目的。
對(duì)算法進(jìn)行相關(guān)設(shè)定。
定義1 空間一組三角形,沿公共邊界在頂點(diǎn)處相連接,這樣的一組三角形定義為三角形網(wǎng)格MN,MN 可用頂點(diǎn)集合 V={v1,v2,…,vn}和三角形集合T={t1,t2,…,tn}組成的二維數(shù)組來表示。
定義2 MN中的任意一條邊只為一個(gè)三角形所有,則該邊稱為邊界邊,其兩個(gè)頂點(diǎn)稱為邊界頂點(diǎn),該邊所在的三角形稱為邊界三角形。
定義3 MN中的任意一頂點(diǎn)vi,以該點(diǎn)為頂點(diǎn)的三角形Tik所構(gòu)成的集合稱為與該頂點(diǎn)相關(guān)的三角形集合Pi。
定義4 MN中的任意一頂點(diǎn)集合Vs={v0,v1,…,vk},與Vs中每個(gè)頂點(diǎn)相關(guān)聯(lián)的三角形集合的并集,稱為與頂點(diǎn)集合Vs相關(guān)的三角形集合Ts(Vs),即
頂點(diǎn)聚類網(wǎng)格簡化算法要解決的問題有兩個(gè):一是確定網(wǎng)格劃分方法,即生成包圍盒。好的包圍盒生成方法,應(yīng)該是使被簡化模型的頂點(diǎn)數(shù)目在包圍盒內(nèi)大致相同。二是將每個(gè)包圍盒中的所有頂點(diǎn),聚類為一個(gè)新的頂點(diǎn)。也就是刪除掉包圍盒中原來所有頂點(diǎn),并按某種誤差控制方法生成一個(gè)新的頂點(diǎn)。選擇好的誤差控制方法,就可使原始模型的表面特征信息較好地保留下來。
假定落在每個(gè)包圍盒中的頂點(diǎn)和邊界構(gòu)成是連通的,由上述定義可知,這些頂點(diǎn)構(gòu)成集合Vs={v0,v1,…,vk},簡化就是要?jiǎng)h除這些頂點(diǎn),然后生成一個(gè)新的頂點(diǎn)。
假定與頂點(diǎn)集Vs相關(guān)的三角形構(gòu)成集合Ts(Vs),該集合就構(gòu)成了原模型的一個(gè)區(qū)域。如圖 1 所示,頂點(diǎn)集合{vi1,vi2,vi3,vi4}聚類成為 vi0,且 vi0=[xi0yi0zi01]T。
假定該聚類誤差為ε(Vs),其表達(dá)式為
式中:εi,1為 vi0到三角形集合 Ts(Vs)中每個(gè)三角形平面距離的平方和;εi,2為vi0到頂點(diǎn)集合Vs中每個(gè)頂點(diǎn)距離的平方和。
取 ε(Vs)為最小值,對(duì)式(1)中的 xi0、yi0、zi0分別求偏導(dǎo),且令其為零可得
圖1 頂點(diǎn)聚類簡化
令p=[a b c d]T為三角形集合Ts(Vs)中每個(gè)三角形所在平面的平面方程ax+by+cz+d=0,且令a2+b2+c2=1。則
式中 Mp為 4×4的對(duì)稱矩陣,即 Mp=ppT=
令 vi1=[xi1yi1zi11]T、vi5=[xi5yi5zi51]T、vi6=[xi6yi6zi61]T,△vi0vi5vi6所在的平面方程可以寫成,且 pi0=[ai0bi0ci0;所以vi1到△vi0vi5vi6平面距離的平方,即vi0到△vi1vi5vi6平面距離的平方,表達(dá)式為
假定該△vi1vi5vi6平面的方程為p=[a b c d]T,且滿足 a2+b2+c2=1,令vi1到三角形△vi0vi5vi6平面距離的平方為
式中Vs與其他vi0相關(guān)的三角形所在平面距離的平方和為
因Qi2只與vi0有關(guān),而vi0是未知的不能直接用解析法求解,所以采用迭代方法來對(duì)Qi2進(jìn)行求解。求解過程如圖2所示,該算法的收斂性已得到了驗(yàn)證。
圖2 迭代過程示意
以某駕駛訓(xùn)練虛擬場景中山體地形為例,用頂點(diǎn)聚類算法進(jìn)行網(wǎng)格模型簡化,生成不同細(xì)節(jié)度的山體模型(如圖3所示)。
由圖3可以看出,采用該算法進(jìn)行模型簡化,能夠保留模型明顯的幾何結(jié)構(gòu)特征,簡化效果好。如圖4所示,在模擬駕駛過程中,當(dāng)視點(diǎn)距離山體很遠(yuǎn)時(shí),場景中顯示最低LOD山體模型,當(dāng)視點(diǎn)向山體靠近,進(jìn)入到低分辨率要素視野范圍,山體模型用低LOD模型顯示;當(dāng)視點(diǎn)繼續(xù)向山體靠近,進(jìn)入到高分辨率視野范圍,山體模型用高LOD模型繪制,顯示細(xì)節(jié)最多的模型[5]。通過使用證明,運(yùn)用簡化模型,在保證了視覺效果的同時(shí),增強(qiáng)了場景渲染實(shí)時(shí)性,能夠滿足使用要求。
圖3 簡化山體模型和效果圖
為了達(dá)到較逼真的視覺效果,建立真實(shí)訓(xùn)練場地建模時(shí)不僅是地形地貌,建筑物等人文景觀也可應(yīng)用頂點(diǎn)聚類算法進(jìn)行模型簡化,以同時(shí)保證場景渲染的實(shí)時(shí)性。
圖4 簡化山體模型轉(zhuǎn)入轉(zhuǎn)出示意
通過應(yīng)用頂點(diǎn)聚類網(wǎng)格簡化的算法,對(duì)駕駛訓(xùn)練虛擬場景中的山體模型進(jìn)行合理細(xì)節(jié)度的簡化,既可以滿足虛擬場景真實(shí)感的要求,又可以提高虛擬場景的實(shí)時(shí)渲染速度,從而達(dá)到仿真度高的使用要求。
[1] Li Lihua,Li Long,Liu Jie.Application of Modeling Technology in Driving Simulator System[C]//2011 International Conference on Electronic and Mechanical Engineering and Information Technology.Harbin:IEEE Computer Society,2011:3938-3942.
[2] 潘志庚,馬小虎,石教英.多細(xì)節(jié)層次模型自動(dòng)生成技術(shù)綜述[J].中國圖形圖像學(xué)報(bào),1998,3(9),754-759.
[3] 劉金鵬.虛擬現(xiàn)實(shí)系統(tǒng)中的物理建模和行為屬性問題研究[D].武漢:武漢理工大學(xué),2002:70-74.
[4] 王汝傳,張登銀,辛晨昀.虛擬現(xiàn)實(shí)中3D圖形建模方法的研究[J].計(jì)算機(jī)輔助工程,2000(4):25-29.
[5] 王乘,周均清,李利軍.Creator可視化仿真建模技術(shù)[M].武漢:華中科技大學(xué)出版社,2005:170-171.