肖元秀,劉 景,黃淑榮
(河海大學物聯網工程學院,常州 213022)
產品虛擬展示技術是虛擬現實技術在產品制造領域的重要應用,該技術把具有高度真實感的產品數字化模型,結合聲音、文字、圖像,并采用自動或交互方式,全方位地展示產品性能、工作原理和使用方法等。在桌面式虛擬環境中實現對大型產品的虛擬展示,不但可以避免沉浸式大型虛擬現實環境所需要的高昂設備投入,而且方便企業進行產品展示與宣傳環境的快速搭建。但是,隨著產品數字化建模精度越來越高,模型的數據量急劇增加,這給模型數據的存儲、管理、載入和實時顯示帶來極大困難[1]。
目前,對桌面虛擬環境中模型數據管理和優化調度的研究,主要集中在三維地形和數字化城市領域。曹晶等提出利用Terra Vista強大的地形建模能力[2],快速、高效生成最優化模型數據庫,實現對模型數據的高效管理及大范圍城市三維系統的流暢漫游。Fu Zhongliang[3]和 Dang Zhou[4]等基于 ROAM 算法,利用LOD和可見性剔除等優化技術,結合緩存管理技術實現大規模三維地形場景漫游的展示。Wang Yingjie[5]等針對三維城市模型的特征,提出了一種基于Cell-Portal結構的數據管理和調度優化方法,提高了模型的繪制效率。而針對大規模復雜機械模型虛擬展示領域的研究并不多見。因此研究并設計了一種模型數據的存儲、管理、動態調度以及顯示優化方案,充分利用系統的軟、硬件資源,實現產品模型的實時繪制,提高系統的響應效率。

圖1 總體框架設計圖
為了在桌面虛擬環境中實現對大型產品的虛擬展示,研究設計了虛擬裝配與展示系統,其總體架構如圖1所示。該架構主要由模型預處理、Pro/E二次開發、虛擬裝配路徑生成、場景組織與調度、場景渲染與繪制等功能模塊構成。基于該架構設計的模型數據管理方案如下:
(1)模型數據存儲
虛擬裝配與展示系統中,合理有效的數據組織管理是內存調度、場景管理與顯示優化、提高系統運行效率的前提。由于關系型數據庫具有數據結構化、最低冗余度、較高的程序與數據獨立性和易于實現數據訪問等優點,因此采用關系型數據庫管理系統Access 2007設計并建立場景數據庫,實現系統中各類數據的統一管理。
(2)場景管理與內存調度
結合OSG(OpenSceneGraph)場景管理機制,采用層次化的場景圖結構組織場景數據。使用基于NUR算法的內存管理策略,對展示系統中的場景模型對象進行內存管理,并結合模型調度技術,以最大限度地利用系統資源,提高系統運行效率。
(3)模型簡化與場景顯示優化
在模型預處理階段,采用幾何細節抑制方法實現對模型圓角特征的抑制,減少內存空間的使用。在場景繪制顯示過程中,綜合使用視錐體裁剪、背面剔除及幾何體數據合并等技術來減少最終送往繪制管線的可繪制體數目和三角面片數,加快顯示速度,提高展示幀率。
產品的CAD模型主要由Pro/E軟件設計而成,根據Pro/E提供的模型轉換工具進行模型預處理操作,實現CAD模型向三角面片模型的轉換。之后對Pro/E系統進行二次開發獲取模型裝配信息,并存儲到數據庫中。虛擬裝配與展示系統中的數據還包括零件幾何模型、零件裝配過程路徑信息、裝配序列規劃信息、場景管理信息等。
采用關系型數據庫管理系統Access 2007中的表結構依次建立6個數據表:零件模型信息表、場景信息表、司機室信息表、車體信息表、冷卻室信息表和轉向架信息表。表中主要存儲各模型或場景的ID號、文件名稱、幾何模型信息、模型裝配信息、路徑信息和對應的存儲文件目錄等數據,并將ID號作為主鍵建立6個信息表之間的聯系,為后期的組織調度實現做好準備工作。
OSG場景圖采用一種自頂向下、分層的樹狀結構來組織空間數據集,以提高渲染效率,并采用包圍體[6]層次結構組織場景對象,管理復雜場景的物體。一棵場景樹的頂部是根節點,從根節點向下延伸,各個組節點中均包含了幾何信息和場景渲染信息;另外還包括多種功能節點,以執行各種不同的功能。如開關節點可設置其子節點可用或不可用,細節層次(LOD)節點可根據觀察者的距離調用不同的子節點。如圖2所示為場景的部分節點樹結構。

圖2 部分節點樹結構示意圖
根據展示系統的需求及模型間裝配層次關系,結合OSG場景管理機制,分別設計了場景的邏輯視圖、渲染樹視圖和實體類視圖。首先根據需求分析,明確展示場景中需要包含哪些實體單元以及與其他實體對象間的邏輯關系;然后利用OSG場景圖節點機制,選擇需要的功能節點構建各實體單元的渲染樹視圖;最后將與三維渲染無關的靜態實體對象封裝成實體類視圖。
借助NUR管理內存的算法思想,對展示系統中的場景模型對象進行內存管理。內存管理策略流程圖如圖3所示,先在內存中開辟一個節點列表,同時設置最大容納值,表示內存中可存儲的最大節點數目。再對場景節點樹中每個節點賦予一個引用位flag,作為是否將該節點對象從內存中剔除,并替換成下一個即將被引用節點對象的標志。若內存中加載的節點對象數值超過了最大容納值,則從內存中依次剔除flag=0的節點對象,若沒有超出容納值,表示繼續加載模型數據。

圖3 內存管理策略流程圖
由于計算機的內存和計算能力有限,不可能將所有的數據事先調入內存,必須根據當前場景顯示的需要,加載用戶需要看到的模型數據,剔除對顯示繪制沒有作用的模型數據。場景區域劃分為可見區域、預可見區域和不可見區域,與之對應的是:可見數據、預可見數據和不可見數據。不同數據類型采用不同的調度策略,這里采用滿足透視投影原理[7]的視錐體來實現模型數據的動態調度。

圖4 透視投影視錐體示意圖
圖4中V表示人眼視點,N表示近裁剪平面,F表示遠裁剪平面,T表示場景區域,P是視錐體在場景區域的投影面,通常是一個梯形。因此可用一個較規則的等腰梯形區域近似表示場景的可見區域,等腰梯形的面積可根據視錐體參數計算出來。
場景初始化時,可見區域的數據首先被調入。但是,虛擬漫游過程中可見區域將會改變,為了避免影響到場景漫游的連貫性和實時性,預可見區域的判斷、計算和預可見區域數據的調度成了關鍵。而用戶視點移動的趨勢是隨機的,不同的運動趨勢確定了不同的預可見區域。因此可將之前的可見區域范圍擴大,盡可能地將視點運動的各種趨勢包含在等腰梯形中,并將其作為預可見區域部分。預可見區域之外的為不可見區域,對于當前視點看不見的模型不予調度,直接從內存中剔除出去。
以機車的司機室場景為例,運用該場景管理與調度方法,實現了場景漫游的連貫性和實時性,效果圖如圖5所示。

圖5 司機室場景漫游展示效果圖
主要實現步驟如下:
(1)連接并訪問數據庫中的司機室信息表,根據場景組織管理方法分別構建場景的渲染樹視圖和實體類視圖。其中將司機室信息表中model_file字段作為模型導入的參數,model_file字段記錄模型文件的存儲位置,可為程序加載外部文件時提供相對路徑索引。
(2)結合構建的場景圖,采用內存管理方法,為司機室中的每個節點設置引用位。此時的節點除了包含實體類中的節點外,還包括渲染樹節點等。申請一個節點列表用來存儲已經加載的模型節點,并設置內存中節點的最大容納數,這里設定為200。
(3)判斷當前內存中引用位為0的節點,將這些節點數據從內存中剔除,并加載即將可能看見的模型數據。用戶視點改變時,根據調度方法對預可見區域節點進行判斷和加載。
大型產品模型結構復雜、數據量大,對場景繪制展示的要求比較高,僅僅依靠內存管理和調度策略提高繪制效率還不夠,需要在展示過程中設計一些輔助技術優化場景的顯示效果,提高渲染幀率。采用以下處理方法:
(1)視錐體裁剪
視錐體裁剪技術是基于包圍體(BVH)層次結構,借助包圍球對視錐體與節點數據的求交計算來判定視錐體內的可見數據。圖6為視錐體包圍球示意圖,在以視點V為原點、視點方向為Z的坐標系中,ABCD為視錐體在XZ平面上的投影。視錐體包圍球的中心為O,經計算可得點O、C的坐標,進而求得包圍球半徑OC的坐標。當視點和視線方向改變后,需重新確定視錐體的包圍球,計算其中心點坐標和包圍球半徑。

圖6 視錐體包圍球示意圖
具體步驟如下:
Step1:獲取當前視錐體的參數;
Step2:分別計算視錐體包圍球和節點包圍球的中心和半徑,半徑分別記為R1、R2;
Step3:計算節點包圍球中心與視錐體包圍球中心的距離d,若d<R1+R2,則說明該節點可見。
以司機室場景的繪制顯示為例,采用該技術得到如表1所示的數據對比,其中視點距離大小為:d1>d2>d3。通過表1可以明顯看到,隨著視點瀏覽場景,可繪制體數目和三角面片數目跟著減少,幀率也在相應地提高,降低了圖形的渲染負擔,達到了優化場景顯示的目的。

表1 司機室裁剪前后數據對比
(2)隱藏面剔除
機車模型對象中包含了很多遮擋體,尤其是對于一些裝配體模型,當視點在瀏覽場景時,通常大約有一半的模型表面是看不到的。因此,在顯示繪制時采用隱藏面剔除技術,將那些處于視線背面、與當前視點方向相反的模型數據剔除掉,不進行繪制。如此的話,場景的整個復雜度將會降低最多1/2左右,減少了最終繪制渲染的數據量,提高了展示效率。
通過計算當前視點方向與模型對象的多邊形面片法向量之間夾角的大小,對當前視點中的數據進行判斷和剔除。如圖7所示,代表多邊形的法線方向,V→代表視線方向與的夾角為θ,當θ大于90度時,該多邊形面片數據不可見,將其剔除;當θ小于等于90度時,表示當前模型數據可見,需要送往渲染管線進行繪制。


圖7 向量間夾角的計算
(3)幾何體數據合并
機車模型包含的模型數目比較多,而每個模型又包含很多零部件,部分零部件包含的三角面片數高達100多萬。如圖8所示為機車柴油機中的一組動力組模型,可以看到該模型中包含了多種具有多個相同網格組件的零件模型。

圖8 柴油機動力組多幾何體特征
針對這種情況,可將具有相同網格結構的元件模型合并成一個幾何體對象。實時繪制顯示時無需對具有相同網格結構的部件進行再次的重復繪制,只需要通過簡單的矩陣變換操作將模型放置到相應的位置即可,這樣可大大減少顯示繪制的幾何體數目,提高繪制速度。
基于桌面式產品虛擬展示技術提出了一種適合于大型復雜機械產品虛擬展示的數據管理方法,并以機車為實例,綜合運用數據管理、內存調度和顯示優化等方法,結合多媒體技術實現了場景的漫游和虛擬裝配展示過程。結果表明,對于具有25,457個三角面片及326,825個三角帶的復雜機車司機室場景,能以60左右的幀率進行人機交互漫游控制。驗證了所提出的數據管理方法的有效性,以及組織調度優化的合理高效性,提高了顯示繪制和人機交互的效率,具有一定的理論意義和實用價值。
[1]史建成,劉檢華,寧汝新,等.虛擬裝配系統中的模型數據管理與優化[J].計算機集成制造系統,2010,16(11):2416-2422.
[2]曹晶,邵遠征,張煜,等.大范圍地形及城市三維快速建模與漫游[J].長江科學院院報,2008,25(4):40-43.
[3]Fu Zhongliang,Zhang Wenyuan.Data Block Partition and Database based Large Scale Terrain 3D Visualization[C].Computational Intelligence and Software Engineering,2009.CiSE 2009.International Conference on.IEEE,2009:1 -4.
[4]Dang Zhou,Liu Qiang,Zhang Wenhuo.Key Technology with Large-scale Three-dimensional Terrain Management[J].Geomatics World,2010,7:443 -447.
[5]Wang Yingjie,Weng Jingnong.On Scheduling Methods of Large - scale 3D City Building Models[C].Computational Intelligence and Software Engineering,2009.
[6]王銳,錢學雷.OpenSceneGraph三維渲染引擎設計與實踐[M].北京:清華大學出版社,2009.
[7]何援軍.透視和透視投影變換——論圖形變換和投影的若干問題之三[J].計算機輔助設計與圖形學學報,2005,17(4):734-739.