薛文斌,李紅勛,汪志遠,賈 楠
(軍事交通學院國家應急交通運輸裝備工程技術研究中心,天津300161)
在運用模擬器進行駕駛訓練時,為了給用戶提供一個真實感強的操作環境,需要提供多感官的模擬信息,而良好的視覺效果對真實感起到了至關重要的作用。視覺真實感取決于兩個重要因素:一是虛擬場景模型建立的好壞;二是渲染虛擬場景時連續播放的幀率。虛擬場景模型建立的越精確、細致,畫面生成的效果就越真實,描述幾何模型的節點和面的數目也越多。而場景模型越復雜,系統渲染運算量及系統資源消耗越大,使得畫面播放幀率降低,畫面播放不流暢,影響了視覺效果。因此,對虛擬場景模型既要求真實感強,又要求數據量小,即降低場景模型的復雜程度[1]。
針對上述矛盾,目前常用的解決方法有:一是場景分塊管理。將一個復雜的場景劃分成多個簡單場景,各簡單場景相互之間幾乎不可見或完全不可見。這樣,系統就能有效地減少在任一時刻需顯示的多邊形數目,從而有效降低場景復雜程度。這種方法對封閉空間有效,對開放空間則很難發揮作用。二是場景可見性計算。系統僅渲染用戶當前視角內的場景,大大減少了計算的多邊形的數目[2]。但當用戶視角內的場景復雜時,這種方法也無能為力。三是細節層次(lever of detail,LOD)算法[3]。為每個物體建立多個形狀相似但細節描述等級不同的模型,從而減少需渲染的多邊形數目。這種方法對場景模型的描述及管理提出了較高的要求。四是二維圖像繪制技術[4]。用二維圖像來代替大的靜態場景網格,從而減少場景繪制的多邊形數目。這種方法對場景的渲染速率只與圖像分辨率有關,與場景復雜程度無關。
比較以上幾種方法,細節層次算法具有普遍適應性。該算法是對同一個場景中物體的細節進行不同程度的描述,并在三維場景渲染過程中,根據一定的規則選取不同精細程度的模型進行渲染。場景中模型的精細程度要求隨著場景中模型離視點的距離、角度、重要程度不同而不同,因此,可以有的放矢地進行細節程度劃分。圖像渲染時,對于離視點比較遠或體積比較小的物體,采用較粗的精細程度進行繪制;反之,對于離視點比較近或體積比較大的物體,采用較細的精細程度進行繪制。這種規則還可以擴展應用到場景中的運動物體和靜止物體上,即對正在運動的或做高速運動的物體采用較粗的細節描述,而對靜止的或運動速度比較低的物體采用較細的細節描述。
本文采用頂點聚類的網格簡化算法,對駕駛訓練虛擬場景中的山體網格模型進行簡化,生成不同細節層次的簡化模型并運用于駕駛訓練虛擬場景中。
細節層次簡化是對同一模型進行相關處理生成不同細節程度的多個模型,這些模型應能保留原始模型的特征信息。在場景圖像渲染時,選擇適當細節程度的模型進行繪制,以提高場景運算的實時性能。采用頂點聚類算法簡化模型,首先找出模型的特征信息(如平面曲率、尖點和特征邊界),再通過融合平坦的區域和線性變化的特征邊實現模型簡化,這樣既能保留模型的表面形狀和特征,又能達到簡化的目的。
對算法進行相關設定。
定義1 空間一組三角形,沿公共邊界在頂點處相連接,這樣的一組三角形定義為三角形網格MN,MN 可用頂點集合 V={v1,v2,…,vn}和三角形集合T={t1,t2,…,tn}組成的二維數組來表示。
定義2 MN中的任意一條邊只為一個三角形所有,則該邊稱為邊界邊,其兩個頂點稱為邊界頂點,該邊所在的三角形稱為邊界三角形。
定義3 MN中的任意一頂點vi,以該點為頂點的三角形Tik所構成的集合稱為與該頂點相關的三角形集合Pi。
定義4 MN中的任意一頂點集合Vs={v0,v1,…,vk},與Vs中每個頂點相關聯的三角形集合的并集,稱為與頂點集合Vs相關的三角形集合Ts(Vs),即
頂點聚類網格簡化算法要解決的問題有兩個:一是確定網格劃分方法,即生成包圍盒。好的包圍盒生成方法,應該是使被簡化模型的頂點數目在包圍盒內大致相同。二是將每個包圍盒中的所有頂點,聚類為一個新的頂點。也就是刪除掉包圍盒中原來所有頂點,并按某種誤差控制方法生成一個新的頂點。選擇好的誤差控制方法,就可使原始模型的表面特征信息較好地保留下來。
假定落在每個包圍盒中的頂點和邊界構成是連通的,由上述定義可知,這些頂點構成集合Vs={v0,v1,…,vk},簡化就是要刪除這些頂點,然后生成一個新的頂點。
假定與頂點集Vs相關的三角形構成集合Ts(Vs),該集合就構成了原模型的一個區域。如圖 1 所示,頂點集合{vi1,vi2,vi3,vi4}聚類成為 vi0,且 vi0=[xi0yi0zi01]T。
假定該聚類誤差為ε(Vs),其表達式為

式中:εi,1為 vi0到三角形集合 Ts(Vs)中每個三角形平面距離的平方和;εi,2為vi0到頂點集合Vs中每個頂點距離的平方和。
取 ε(Vs)為最小值,對式(1)中的 xi0、yi0、zi0分別求偏導,且令其為零可得

圖1 頂點聚類簡化

令p=[a b c d]T為三角形集合Ts(Vs)中每個三角形所在平面的平面方程ax+by+cz+d=0,且令a2+b2+c2=1。則

式中 Mp為 4×4的對稱矩陣,即 Mp=ppT=

令 vi1=[xi1yi1zi11]T、vi5=[xi5yi5zi51]T、vi6=[xi6yi6zi61]T,△vi0vi5vi6所在的平面方程可以寫成,且 pi0=[ai0bi0ci0;所以vi1到△vi0vi5vi6平面距離的平方,即vi0到△vi1vi5vi6平面距離的平方,表達式為


假定該△vi1vi5vi6平面的方程為p=[a b c d]T,且滿足 a2+b2+c2=1,令vi1到三角形△vi0vi5vi6平面距離的平方為

式中Vs與其他vi0相關的三角形所在平面距離的平方和為
因Qi2只與vi0有關,而vi0是未知的不能直接用解析法求解,所以采用迭代方法來對Qi2進行求解。求解過程如圖2所示,該算法的收斂性已得到了驗證。

圖2 迭代過程示意
以某駕駛訓練虛擬場景中山體地形為例,用頂點聚類算法進行網格模型簡化,生成不同細節度的山體模型(如圖3所示)。
由圖3可以看出,采用該算法進行模型簡化,能夠保留模型明顯的幾何結構特征,簡化效果好。如圖4所示,在模擬駕駛過程中,當視點距離山體很遠時,場景中顯示最低LOD山體模型,當視點向山體靠近,進入到低分辨率要素視野范圍,山體模型用低LOD模型顯示;當視點繼續向山體靠近,進入到高分辨率視野范圍,山體模型用高LOD模型繪制,顯示細節最多的模型[5]。通過使用證明,運用簡化模型,在保證了視覺效果的同時,增強了場景渲染實時性,能夠滿足使用要求。

圖3 簡化山體模型和效果圖
為了達到較逼真的視覺效果,建立真實訓練場地建模時不僅是地形地貌,建筑物等人文景觀也可應用頂點聚類算法進行模型簡化,以同時保證場景渲染的實時性。

圖4 簡化山體模型轉入轉出示意
通過應用頂點聚類網格簡化的算法,對駕駛訓練虛擬場景中的山體模型進行合理細節度的簡化,既可以滿足虛擬場景真實感的要求,又可以提高虛擬場景的實時渲染速度,從而達到仿真度高的使用要求。
[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] 潘志庚,馬小虎,石教英.多細節層次模型自動生成技術綜述[J].中國圖形圖像學報,1998,3(9),754-759.
[3] 劉金鵬.虛擬現實系統中的物理建模和行為屬性問題研究[D].武漢:武漢理工大學,2002:70-74.
[4] 王汝傳,張登銀,辛晨昀.虛擬現實中3D圖形建模方法的研究[J].計算機輔助工程,2000(4):25-29.
[5] 王乘,周均清,李利軍.Creator可視化仿真建模技術[M].武漢:華中科技大學出版社,2005:170-171.