李 培, 張仁俊
(蘭州交通大學 電子與信息工程學院,甘肅蘭州 730070)
數字博物館是將文物和歷史場景通過三維建模,利用虛擬現實技術在計算機網絡上進行展示,并實現瀏覽者與文物、瀏覽者與瀏覽者之間的交互,是傳統展示方法與先進計算機虛擬技術的結合。
虛擬視景的實時程度,從一定意義上決定了虛擬現實的真實程度。也就是說,為了達到較好的真實感,虛擬視景要求圖形的生成速度達到實時,因此,要確保復雜虛擬場景的實時性,即圖形的顯示速度。
本文提出了一種適合博物館虛擬場景實時顯示的管理機制,并提出了一種改進的基于時間估計和對象重要性的實時LOD選擇算法,大大降低了場景的復雜度,提高了場景載入的實時性。
LOD(level of detail)細節層次技術[1],它是指對于同一個場景或場景中的物體使用一組具有不同細節程度的模型對象,不同細節程度模型的多邊形復雜度也不一樣,細節程度越高模型對象所包含的多邊形的數量也越多[2]。在實時渲染和繪制時,瀏覽器會根據用戶的視點離該物體的遠近自動顯示相應的模型。
博物館場景模型的實時繪制中,如果要做到畫面的連續性,一秒之內至少需要繪制25幀的數據,那么對于每一幀來說就只有0.04 s的限定時間,如果某一幀場景需要繪制的對象太多或者太復雜,那么繪制時間就會超過0.04 s,這樣就會產生停頓現象,產生延遲,進而影響用戶使用的滿意度[4]。所以在限時自適應LOD的機制中,為了保證在限定的時間內將數據繪制完,就會出現降低繪制對象LOD級別的情況,如本來需要的是最精細的LOD級別就會被替換成一般精細或者模糊的LOD級別。這樣做就是為了在速度和效果之間尋求一個平衡,能夠讓用戶滿意。
本文針對博物館場景模型的特點,將博物館場景模型劃分為6大功能模塊,分別是:最優化繪制方案選擇模塊、繪制模塊、時間估計模塊、重要性估計模塊、數據調度管理模塊和性能檢測模塊。圖1為博物館場景模型自適應LOD機制流程圖。

圖1 博物館場景模型自適應機制流程圖
各模塊的主要功能如下:
數據調度管理模塊:根據當前的博物館場景參數調入當前視域范圍內的模型數據。
時間估計模塊:主要包含數據裝載時間估計、繪制時間估計等功能,用于為最優化繪制方案選擇模塊提供參考。
重要性估計模塊:計算調入場景中的每個模型的相對重要性程度,并把它作為在繪制時間不能滿足以最高細節繪制時選擇合適LOD級別的參考。
最優化繪制方案選擇模塊:此模塊根據場景繪制的總時間和各個模型的繪制時間估計重要性計算的結果,在控制總繪制時間小于繪制時間預算的前提下,為每個模型選擇合適的LOD級別,以提供盡可能好的繪制效果。
繪制模塊:將確定需要繪制的模型數據進行重組并進行分類繪制。
性能檢測工具模塊:此模塊在每幀收集各項監測數據,為時間估計模塊提供分析數據集。
在博物館場景模型的實時繪制過程中,為了提高實時性,方法之一我們必須對所要顯示的模型進行不同LOD級別的選擇,而選擇哪個層次的模型則是由繪制該對象所需要的時間和對象的重要性來一起決定的[6]。在不同繪制時間和重要性的選擇下,做到繪制速度和顯示效果的最佳配置。
目前針對幾何對象繪制時間估計的研究大多數都是針對不含紋理的幾何模型。典型的有Funkhouser和Wimmer所作的研究[7]。Funkhouser:將繪制一個幾何模型的時間表達為一個包含頂點個數、三角形個數以及實際繪制的像素個數等3個因素的線性表達式,根據具體的實驗模型測試得出相應表達式的系數;Wimme:指出Funkhouse的公式只是給出了繪制一個對象的時間下限,真實的繪制時間趨向于頂點轉換和柵格化的和,決定幾何傳輸時間的是真正轉換的頂點數量而不是僅僅所有頂點或多邊形的數量,因此,他提出了一個改進公式,以轉換的頂點數及實際繪制的像素個數兩個因素的線性表達作為時間估計函數。由于此兩類方法都沒有考慮紋理數據傳輸所耗費的時間,所以對于包含紋理對象的場景內容不具備參考性和應用性。

隨著人們對文物以及場景真實感期望的提高,紋理的使用率在博物館景模型的顯示中所占的比例越來越大。由于紋理數據分辨率的不斷提高,在三維顯示過程中,其數據轉換的時間以及在顯卡內部的數據調度時間成為不可忽略的部分,嚴重時可以引起繪制流程的明顯停頓。所以要對博物館場景模型的繪制時間做出準確的估計,就必須將紋理的顯示時間一起考慮進去。
由于繪制整個場景的時間可以認為是各個對象繪制時間的總和,因此可以對每個對象的繪制時間進行考慮。本文將紋理量作為繪制時間時考慮的一個因素,認為每個對象的繪制時間可以用如下公式表達:

其中,v_number表示當前模型需要繪制頂點的個數;p_number表示該模型在屏幕上投影的像素數;t_size表示在繪制此模型時所需要的紋理量;系數c1,c2,c3,c4則是表示不同的硬件和軟件環境。
在博物館場景模型繪制過程中,由于受時間限制不可能將所有的模型都按照最高細節層次進行繪制,因此就需要對各個對象的繪制層次作出適當的選擇,這也是博物館場景模型限時自適應LOD算法的核心問題,如何在給定的時間預算內,選擇合適的層次模型以達到最佳的可視效果。
在LOD管理中最重要的問題是不同分辨率之間模型的切換。本文中用來決定LOD細節層次的因素主要有距離、偏心率、速度和投影大小等[8]。
距離(distance):用距離來決定LOD的選擇是最簡單直接的一種方法。當視點與物體之間的距離在一定范圍內時將采用高分辨率的LOD模型,當視點與物體之間的距離在我們設定的范圍之外時采用低分辨率的模型。這里的距離既可以是視點與物體中心點之間的距離,也可以是視點與某一個指定的點之間的距離。基于距離的LOD簡單而且高效,只需要很少的條件表達式就可以確定一個距離是否超過了我們所設定的距離的閾值。但也存在明顯的缺陷:選擇物體內的任意點來進行所有的距離計算將產生不可避免的誤差;由于到視點的真實距離可能會根據方向而發生變化,這樣會導致明顯的視覺跳躍。因此,單一的距離并不能完全說明對象的重要性。
偏心率(eccentricity):偏心率是利用視點對超出視域中心區域的對象的感知能力遞減的特性來選擇LOD。視網膜的中心用來在固定的面積內搜索高細節層次模型,而視網膜的邊緣被用來選擇下一個固定點的位置。據此可以將顯示區域分為兩個部分:一個是中間的高細節區域,對應于視點可視域的中心位置;另一個是四周邊緣的簡單細節區域,對應于可視域的邊緣位置。經驗顯示減少周圍區域的視覺復雜度并不會顯著影響視覺搜索任務的完成。這種邊緣遞減策略需要得到用戶當前視線的方向,跟蹤頭部或眼睛的移動,或者假設用戶一直注視著屏幕顯示區域的中心,所以也有一定的局限性。
速度(speed):基于速度的LOD是指根據對象相對于視點的運動角速度來選擇LOD層次。快速移動穿過屏幕的對象表現出運動模糊,它們僅能在一個很短的時間內被看到,用戶可能看不清楚它們,可以用較低分辨率的細節層次來表示,所以它可以作為判斷對象重要性的依據之一。
投影大小(area):基于投影大小的方法利用一個物體投影到屏幕的大小來建立LOD的細節層次,它可以避免一些基于距離LOD的問題,因為投影大小對顯示分辨率、對象縮放或視角等的變化不是很敏感。而且,基于投影大小的LOD選擇使用整個對象而不是用戶選擇的一個任意點來進行計算,因此比基于距離的LOD技術更準確,更具有一般性。但是,基于投影大小的計算代價也要相對高一些,并且此方法不具有旋轉的不變性,即:當一個很薄的對象旋轉時,其在屏幕上的投影大小會發生劇烈的變化,從而導致LOD的不穩定或波動。
本文根據以上4個因素來判斷對象的重要性,每個重要性因子都定義為0~1之間的數字,對象的重要性用這4個重要性因子的乘積來表示,表達式如下:

在繪制時間受限的情況下,為了保證繪制時間不超出預算,并提供盡可能好的圖像質量,因此需要合適的場景繪制選擇算法,以決定每個對象以何種LOD級別進行繪制。在參考和對比已有相關算法的基礎上,本文根據博物館場景模型的繪制特點提出了一種基于繪制時間估計和對象重要性的LOD選擇方法。
在每幀進行繪制前,首先對本幀要繪制的對象的LOD級別進行選擇,首先計算本幀所有對象在現有LOD級別上的總的繪制時間,若開始計算的時間超過了限定的時間,則按照對象重要性由小到大的排列,依次降低當前對象的LOD級別,直到總的繪制時間在限定時間以內,直到繪制結束;若小于限定時間,則根據對象重要性的大小在不超過限定時間的基礎上增加對象的LOD級別,直到繪制結束。整個過程的循環步驟如下:
步驟1:計算當前幀中所有對象的LOD級別繪制的總的繪制時間;
步驟2:如果計算的總時間小于限定時間,則執行步驟3,否則執行步驟5 ;
步驟3:將各個對象按照重要性大小順序進行排列,按順序對每個對象執行步驟4,完成后結束繪制;
步驟4:當對象的當前LOD級別低于最佳級別時,增加此對象的LOD級別后在不會超出限定的繪制時間要求內,則逐級增加此對象的LOD級別;
步驟5:將各個對象按照重要性大小反向排列,按順序對每個對象執行步驟6,完成后結束繪制。
步驟6:當對象的當前LOD級別高于最低級別限制時,降低此對象的LOD級別,直到總的繪制時間小于限定時間。
圖2為限時繪制的步驟示意圖。

圖2 限時繪制的步驟示意圖
在固定視角情況下,人眼對25幀以上的顯示速度已經沒有察覺(如電視、電影),但是對于快速變換的視角而言,顯示速度一般要求在30幀以上。所以,評價顯示性能不僅要看顯示的圖像質量,也要看顯示的速度。幀數(fps)就是衡量顯示速度的指標。實驗中得出以下數據(見表1),在較高的LOD層次上,漸進網格的算法速度比較快,對于60000多個面片的模型,幀數都能在50幀以上。隨著層次的增加,幀數越高,說明三角形的查找速度仍然是比較快的。考慮到查找線性表要消耗一部分時間,從較高的層次突進到較低層次,顯示速度會暫時出現一些下降,但由于該算法中三角形在線性表中是順序排列的,所以速度的下降不是很明顯,對于實時顯示而言算法效率是比較高的。
另外,對于原來的未采用該算法的模型顯示速度來說,盡管顯示速度上與采用該算法的模型沒有太大的區別,甚至在某些層次顯示速度還略高一些,但是這些模型所占用的存貯量是很大的(見表2),尤其在簡化層次多的時候,采用增加空間復雜度來減少時間復雜度的方法,這對于存儲空間來講是很大的浪費。那么在顯示速度差不多的情況下,漸進網格可以減少存儲量,可以在時間和空間上達到一個平衡。

表1 LOD漸進網格不同層次的顯示速度

表2 不同層次的三角形面片數量
圖3表明隨著模型與攝像機之間的距離的變化,漸進網格用了不同分辨率的網格,較遠距離使用的網格數目是130,而距離最近的網格數目是8040,但是從視覺角度上不太能察覺模型的明顯變化。

圖3 LOD漸進網格的實驗顯示
在博物館場景模型在線實時可視化方法中,本文提出了一種限時自適應LOD方法,分析了其中嚴重影響繪制幀率的數據裝載和繪制工作量的因素,并從數據量的角度對繪制時間進行分析,將每個對象的繪制時間預先估計,根據對象的重要性來選擇幀內每個對象的LOD級別。在對對象的繪制時間進行估計時,將紋理數據一起考慮,更加符合實時漫游的現實情況。
[1] 祝清魯.大規模場景中LOD的技術研究與應用[D].北京:北京郵電大學,2009.
[2] 羅丹.數字城市模型自適應相關LOD技術研究[D].武漢:華中師范大學,2009.
[3] 沙從術.LOD 技術在三維地形圖實時可視化中的應用研究[J].價值工程,2011,22(1):154-155.
[4] J.Airey,J.Rohlfetc.Towards Image Realism with Interactive Update Rates in Complex Virtual Buliding Environments[J].Computer Graphics,ACM,1990,24(2):41-50.
[5] 朱濤.虛擬現實中場景建模技術的研究及應用[D].武漢:武漢理工大學,2010.
[6] Rossignac J.,Bowel P. Multi-resolution 3D approximation for rendering complex seenes[A]. Proeeedings of the 20th Conference Modeling in Computer GraPhic [C].Berlin,1993:453-465.
[7] 郭陽明,翟正軍.虛擬場景生成中的LOD技術綜述[J].計算機仿真,2005,22(12):180-183.
[8] 崔鐳.虛擬現實中LOD技術的研究[D].西安:西安電子科技大學,2008.