肖 文,陳定方
XIAO Wen 1, CHEN Ding-Fang2
(1. 武漢理工大學 藝術設計學院,武漢 430070;2. 武漢理工大學 智能制造與控制研究所,武漢 430063)
基于視覺感受的曲面建模優化研究
The optimization research of surface modeling based on the visual perception
肖 文1,陳定方2
XIAO Wen1, CHEN Ding-Fang2
(1. 武漢理工大學 藝術設計學院,武漢 430070;2. 武漢理工大學 智能制造與控制研究所,武漢 430063)
虛擬現實技術的主要目標就是使虛擬現實系統中的虛擬物體給人以真實存在的感覺。以當前的計算機圖形學的發展水平來說,只要計算時間足夠,就可以生成非常精細的畫面。但VR系統是實時系統,它不僅需要追求場景效果的真實感,還需要顧及硬件系統的反應速度。因此,在高質量圖形的實時生成要求下,如何減少三維模型的復雜程度,同時保證三維場景視覺上的精度,已成為數字模型的創建工作中的研究重點。本文以人的視覺感受為基準對模型優化所需達到的精度進行研究,并根據不同應用情形提出一些優化方案,從源頭上就控制面數,其效果要比后期用程序進行優化,不僅在優化程度上要高得多,而且在視覺效果上也更優越。
曲面;仿真;建模;視覺感受;模型優化
前段時間,我們實驗室與有關單位合作進行復雜裝備訓練模擬器的開發,十分重要的一部分工作就是對復雜裝備進行數字模型的創建工作。有關單位對于模擬器的真實感有很高的要求很多,建模要求達到與真實的裝備在視覺上高度一致,保證訓練時的虛擬操作與實際操作裝備感受完全一致。
整個工作分為兩大部分進行——利用Solid works軟件專長于機械設計的特點進行建模,利用3D Max軟件優秀的表現能力設定材質、設置動畫。這樣安排工作思路清晰,亦充分了利用各軟件的特點。
在用Solidworks軟件建模工作部分完成后,我們發現出現了一個很大的問題:輸出到3D Max中的模型面數非常巨大,據不完全統計約有二千萬個面之多。這是一個非常大的數據量,導致后面的工作幾乎不能繼續進行下去。
為了找到問題出現的原因,我們對整個模型進行了仔細分析、研究。初步發現面數過多的部分主要在物體倒圓角處和曲面的部分。
為了更準確地分析原因,從而找到優化的方法,我們做了一系列試驗:首先在Solidworks中創建立方體、球體、八棱柱和圓柱各一個(圖1),然后,將其轉換成3D Max文件,在3D Max中分別查看各個物體的面數,結果轉換后立方體有12個面,球體有22200個面,八棱柱有28個面,而圓柱則有556個面。

圖1 創建的立方體、球體、八棱柱、圓柱
從上面幾個物體面數來看,立方體和八棱柱等面數不產生變化,只是由于3D Max中統一采用三角形面描述物體,因此,物體實際的面數變多了;球體和圓柱體面數很多,通過仔細觀察,發現主要是曲面表面被分割成很多細小的三角面造成的。這是在轉換到3D Max的過程中,由于程序固有的原因,采用了很高的轉換精度而產生的。我們試圖通過調整轉化參數也未能解決好這一問題。
從上面的試驗可以看出,造成面數過多的原因主要在于造型中曲面或曲線的存在。
真實感表現是計算機仿真發展的重要方向,在個人計算機性能不斷提高的今天,追求對仿真對象更真實的表現成為自然而然的事。然而,無論計算機性能有多高,它的性能和資源畢竟是有限的,不可能滿足我們對真實度的無限要求。因此,我們在開展建模工作以前必須確定一個合適的真實度的標準,而這一標準應該是以能夠滿足人眼的視覺感受為前提的。任何超過人眼能夠感受到的精細程度都是多余和不必要的,是對人力資源、計算機資源和時間的浪費。
那么,什么是我們的眼睛能感受到的精細程度的極限呢?我覺得有兩個條件限制了我們的視覺感受:顯示裝置的像素分辨率和人眼對色彩的分辨率。
首先,我們模型中的結構在光柵化的過程中,如果細小到小于一個像素的大小,可以想象得到它的任何形態已經毫無意義了,在屏幕上它僅僅是一個點而已。
其次,如果相鄰兩個面的色彩差別小于人眼對色彩的分辨率,則在我們的眼中就會視為同一顏色。因此,以下的討論皆以此為依據進行。
在仿真中,物體的真實感主要體現在形體和質感(包括色彩、紋理、在光照下的反映等方面)的真實感兩方面。本文主要討論形體的真實感,它體現在兩方面視覺感受的平滑度上:一是邊緣的平滑度,二是表面的平滑度。
對于曲面物體形狀的精度以往一直沒有一個判斷的標準,大多數都根據制作者的經驗來調整,對于多數人來說不太好把握。
那么怎么確定這樣一個標準呢?從前面我們知道顯示裝置的像素分辨率是曲面物體邊緣平滑度的極限,由于曲面物體的曲線邊緣是由一段一段的短小線段組成,首先從直覺就可以知道線段的長度不能小于兩個像素,其次,我們假設用一個等邊多邊形來擬合一個圓,如果將這個等邊多邊形畫在屏幕上與通過圓形方程直接在屏幕上畫出的圖形誤差很小時,我們就可以認為這兩個圖形是等價的。
根據上面兩條限制條件,我們以圓形為例分別進行推導,看看最少需要多少邊形才能滿足視覺上的光滑度。這里,假設一個半徑為R像素的圓。
根據條件一,則有:
n>2*π*R/2 (n為多邊形的邊數,R為半徑)
即n>π*R
根據條件二,則有(圖2):
OA-OC<0.5 (OA與OC的差小于0.5像素,其中OA=R)
∴有R-R*cosθ<0.5 (其中θ=360°/2n,n為多邊形的邊數)
則n>180°/arccos((2R-1)/2R)
這表明在一定的半徑條件下,只要多邊形的邊數達到n,在屏幕上看起來就是很光滑的圓了。

圖2 等邊多邊形擬合圓的精度分析
最后,由兩個條件取小值就可以確定多邊形的最小邊數。
這里討論的表面平滑度是指物體表面經渲染引擎渲染后在屏幕上顯示效果的平滑程度。
在討論前,我們先了解一下渲染引擎的基本工作方式。在各種渲染引擎中其核心都是以光照模型為基礎的,因為至今視覺工業還是主要基于經驗而不是物理定律,所以,Lambert、Blinn、Phong、Cook-Torrance、Strauss、Anisotropic等經驗模型今天還可有生命力,而不至于被Radiosity和Raytrace等物理模型代替。Radiosity和Raytrace都有自己的光照定律,在各軟件中還經常和以上經驗模型混用,是因為他們還有很強的生命力。由于計算速度的限制,一般實時仿真引擎一般都使用上述經驗模型。因為模型種類很多而且多數比較類似,在這里以最實用的Blinn-Phong模型為例[1]。
1975年Phong Bui Tong發明的Phong模型(圖3),提出了計算鏡面高光的經驗模型,鏡面反射光強與反射光線和視線的夾角α相關:
Ispecular = Ks*Is*(cos α) n
其中,Ks為物體表面的高光系數, Is為光強,α是反射光與視線的夾角,n為高光指數,n越大,則表面越光滑,反射光越集中,高光范圍越小。

圖3 Phong模型
Blinn-Phong模型也稱Blinn模型,是Phong模型最常見的變化類型。作為CG領域的先驅,Blinn改進了Phong模型的一些高光上的問題。Blinn模型混合了Lambert的漫射部分和標準的高光,在速度上相當快,因此成為許多CG軟件中的默認材質。此外它也集成在了大多數圖形芯片中,用以產生實時快速的渲染。
對于各表面為平面的物體,渲染軟件在對一個面進行光照效果計算的時候,首先確定該面的法線方向,帶入光照模型中,就可以計算出每個像素的顏色值。
而對于曲面表面的物體,曲面被分解為一個個小的平面,在渲染的時候對相鄰兩個面之間的法線方向進行插值,便形成連續過渡的效果。這樣,就可以用很少的面表現復雜的曲面。
我們可以做幾個對比試驗(圖4),看看模型精度對于表面平滑效果的影響。

圖4 幾個對比試驗(從左到右分別為10X10、20X20、40X40網格)
從圖中可以看出由于運用了插值計算,模型精度對于表面平滑效果的影響不是太明顯。
從上面的討論可以看出,從視覺感受方面來看,影響真實度的主要因素是邊緣的平滑度,曲面的網格精度與邊緣的精度是相關聯的,由于人眼對曲面平滑度不及邊緣平滑度敏感,因此,在考慮設定模型精度時以邊緣的平滑度為標準確定就可以了。
通過前面的討論,可以知道要達到我們所需要的視覺真實感,很多時候并不需要很多的分段數,合理安排曲邊的分段數才是曲面優化的關鍵。關于模型的優化已經有人做過了一些研究和探索,網上也有一些相關的文章和論文[2],也編寫了一些優化模型的程序,比如Polygon Cruncher軟件就是一個強大的模型減面工具,3D Max中也自帶有一個優化工具,但通過實際運用,我們發現它們還是存在很多問題,如對于部分模型存在優化后物體外形產生了變形(圖5),對于有的模型則基本不能優化。因此,在實際運用中,作者認為,需要從源頭上就控制面數,其效果要比后期用程序進行優化,不僅在優化程度上要高得多,而且在視覺效果上也更優越。

圖5 模型在優化后物體外形產生了變形(優化后圓倒角不見了)
在制作過程中,針對不同類型的物體可以采取兩類優化方法:模型方法和紋理方法,下面分別進行闡述。
這種方法主要針對較大的曲面,曲面中間很少開孔。在建模時首先根據曲面在屏幕上顯示的尺寸(像素尺寸)按照前述的公式估算出邊界的分段數,將曲面的邊按需要的精度用折線繪制,相應的曲面則變為折面,在模型被轉換到3D Max中后,選擇組成曲面的各面,將其組成一個光滑組,這樣在渲染輸出的時候渲染程序就會對光滑組內的各個面進行插值運算,從而得到一個完美平滑的曲面了。其實,考慮到人眼對運動物體的分辨率會適當降低,在確定邊界分段數的時候可以設為估算子的1/2甚至1/4,以進一步減少模型的面數。

圖6 不透明貼圖運用(從左到右分別為貼圖、線框模型、貼圖后的渲染效果)
對于一些次要的表面開有很多孔洞的物體,則可以采用一種更簡潔的方法,即采用貼圖的方法,可以用一張只具有黑白兩色的圖作為蒙板作用于一個面上,定義蒙板的黑色部分在渲染時呈現透明狀態,而白色部分呈現不透明狀態(圖6)。這樣,無論是多么復雜的模型,均可以十分方便地制作出來了,僅需制作一張黑白的圖片即可。
通過以上優化方法,可以減少模型中大多數的面,我們嘗試優化了系統的場景中的幾個物體,模型面數大約平均減少了70~80%左右,優化效果非常顯著,而且即使經過這樣大量精簡構成模型的三角面,仍能保證物體在視覺上的真實感和平滑度而不至于失真。
[1] 彭群生,鮑虎軍,金小剛.計算機真實感圖形的算法基礎[M].科學出版社,2002.
[2] 張攀,周慶龍.VRML三維模型文件的優化技術[J].后勤工程學院學報,2005,02.
TP311
A
1009-0134(2010)09-0088-04
10.3969/j.issn.1009-0134.2010.09.26
2010-03-05
武漢市科技攻關項目“橋式起重機虛擬操縱系統研究與開發”(200711021381);國家檢驗檢疫局科技計劃重點項目“橋(門)式起重機作業人員仿真操作培訓考核專家系統”(20070K0229)
肖文(1970 -), 男,講師,在讀博士,主要從事計算機仿真研究。