肖 文,陳定方
XIAO Wen 1, CHEN Ding-Fang2
(1. 武漢理工大學(xué) 藝術(shù)設(shè)計(jì)學(xué)院,武漢 430070;2. 武漢理工大學(xué) 智能制造與控制研究所,武漢 430063)
基于視覺感受的曲面建模優(yōu)化研究
The optimization research of surface modeling based on the visual perception
肖 文1,陳定方2
XIAO Wen1, CHEN Ding-Fang2
(1. 武漢理工大學(xué) 藝術(shù)設(shè)計(jì)學(xué)院,武漢 430070;2. 武漢理工大學(xué) 智能制造與控制研究所,武漢 430063)
虛擬現(xiàn)實(shí)技術(shù)的主要目標(biāo)就是使虛擬現(xiàn)實(shí)系統(tǒng)中的虛擬物體給人以真實(shí)存在的感覺。以當(dāng)前的計(jì)算機(jī)圖形學(xué)的發(fā)展水平來說,只要計(jì)算時(shí)間足夠,就可以生成非常精細(xì)的畫面。但VR系統(tǒng)是實(shí)時(shí)系統(tǒng),它不僅需要追求場景效果的真實(shí)感,還需要顧及硬件系統(tǒng)的反應(yīng)速度。因此,在高質(zhì)量圖形的實(shí)時(shí)生成要求下,如何減少三維模型的復(fù)雜程度,同時(shí)保證三維場景視覺上的精度,已成為數(shù)字模型的創(chuàng)建工作中的研究重點(diǎn)。本文以人的視覺感受為基準(zhǔn)對模型優(yōu)化所需達(dá)到的精度進(jìn)行研究,并根據(jù)不同應(yīng)用情形提出一些優(yōu)化方案,從源頭上就控制面數(shù),其效果要比后期用程序進(jìn)行優(yōu)化,不僅在優(yōu)化程度上要高得多,而且在視覺效果上也更優(yōu)越。
曲面;仿真;建模;視覺感受;模型優(yōu)化
前段時(shí)間,我們實(shí)驗(yàn)室與有關(guān)單位合作進(jìn)行復(fù)雜裝備訓(xùn)練模擬器的開發(fā),十分重要的一部分工作就是對復(fù)雜裝備進(jìn)行數(shù)字模型的創(chuàng)建工作。有關(guān)單位對于模擬器的真實(shí)感有很高的要求很多,建模要求達(dá)到與真實(shí)的裝備在視覺上高度一致,保證訓(xùn)練時(shí)的虛擬操作與實(shí)際操作裝備感受完全一致。
整個(gè)工作分為兩大部分進(jìn)行——利用Solid works軟件專長于機(jī)械設(shè)計(jì)的特點(diǎn)進(jìn)行建模,利用3D Max軟件優(yōu)秀的表現(xiàn)能力設(shè)定材質(zhì)、設(shè)置動(dòng)畫。這樣安排工作思路清晰,亦充分了利用各軟件的特點(diǎn)。
在用Solidworks軟件建模工作部分完成后,我們發(fā)現(xiàn)出現(xiàn)了一個(gè)很大的問題:輸出到3D Max中的模型面數(shù)非常巨大,據(jù)不完全統(tǒng)計(jì)約有二千萬個(gè)面之多。這是一個(gè)非常大的數(shù)據(jù)量,導(dǎo)致后面的工作幾乎不能繼續(xù)進(jìn)行下去。
為了找到問題出現(xiàn)的原因,我們對整個(gè)模型進(jìn)行了仔細(xì)分析、研究。初步發(fā)現(xiàn)面數(shù)過多的部分主要在物體倒圓角處和曲面的部分。
為了更準(zhǔn)確地分析原因,從而找到優(yōu)化的方法,我們做了一系列試驗(yàn):首先在Solidworks中創(chuàng)建立方體、球體、八棱柱和圓柱各一個(gè)(圖1),然后,將其轉(zhuǎn)換成3D Max文件,在3D Max中分別查看各個(gè)物體的面數(shù),結(jié)果轉(zhuǎn)換后立方體有12個(gè)面,球體有22200個(gè)面,八棱柱有28個(gè)面,而圓柱則有556個(gè)面。
圖1 創(chuàng)建的立方體、球體、八棱柱、圓柱
從上面幾個(gè)物體面數(shù)來看,立方體和八棱柱等面數(shù)不產(chǎn)生變化,只是由于3D Max中統(tǒng)一采用三角形面描述物體,因此,物體實(shí)際的面數(shù)變多了;球體和圓柱體面數(shù)很多,通過仔細(xì)觀察,發(fā)現(xiàn)主要是曲面表面被分割成很多細(xì)小的三角面造成的。這是在轉(zhuǎn)換到3D Max的過程中,由于程序固有的原因,采用了很高的轉(zhuǎn)換精度而產(chǎn)生的。我們試圖通過調(diào)整轉(zhuǎn)化參數(shù)也未能解決好這一問題。
從上面的試驗(yàn)可以看出,造成面數(shù)過多的原因主要在于造型中曲面或曲線的存在。
真實(shí)感表現(xiàn)是計(jì)算機(jī)仿真發(fā)展的重要方向,在個(gè)人計(jì)算機(jī)性能不斷提高的今天,追求對仿真對象更真實(shí)的表現(xiàn)成為自然而然的事。然而,無論計(jì)算機(jī)性能有多高,它的性能和資源畢竟是有限的,不可能滿足我們對真實(shí)度的無限要求。因此,我們在開展建模工作以前必須確定一個(gè)合適的真實(shí)度的標(biāo)準(zhǔn),而這一標(biāo)準(zhǔn)應(yīng)該是以能夠滿足人眼的視覺感受為前提的。任何超過人眼能夠感受到的精細(xì)程度都是多余和不必要的,是對人力資源、計(jì)算機(jī)資源和時(shí)間的浪費(fèi)。
那么,什么是我們的眼睛能感受到的精細(xì)程度的極限呢?我覺得有兩個(gè)條件限制了我們的視覺感受:顯示裝置的像素分辨率和人眼對色彩的分辨率。
首先,我們模型中的結(jié)構(gòu)在光柵化的過程中,如果細(xì)小到小于一個(gè)像素的大小,可以想象得到它的任何形態(tài)已經(jīng)毫無意義了,在屏幕上它僅僅是一個(gè)點(diǎn)而已。
其次,如果相鄰兩個(gè)面的色彩差別小于人眼對色彩的分辨率,則在我們的眼中就會(huì)視為同一顏色。因此,以下的討論皆以此為依據(jù)進(jìn)行。
在仿真中,物體的真實(shí)感主要體現(xiàn)在形體和質(zhì)感(包括色彩、紋理、在光照下的反映等方面)的真實(shí)感兩方面。本文主要討論形體的真實(shí)感,它體現(xiàn)在兩方面視覺感受的平滑度上:一是邊緣的平滑度,二是表面的平滑度。
對于曲面物體形狀的精度以往一直沒有一個(gè)判斷的標(biāo)準(zhǔn),大多數(shù)都根據(jù)制作者的經(jīng)驗(yàn)來調(diào)整,對于多數(shù)人來說不太好把握。
那么怎么確定這樣一個(gè)標(biāo)準(zhǔn)呢?從前面我們知道顯示裝置的像素分辨率是曲面物體邊緣平滑度的極限,由于曲面物體的曲線邊緣是由一段一段的短小線段組成,首先從直覺就可以知道線段的長度不能小于兩個(gè)像素,其次,我們假設(shè)用一個(gè)等邊多邊形來擬合一個(gè)圓,如果將這個(gè)等邊多邊形畫在屏幕上與通過圓形方程直接在屏幕上畫出的圖形誤差很小時(shí),我們就可以認(rèn)為這兩個(gè)圖形是等價(jià)的。
根據(jù)上面兩條限制條件,我們以圓形為例分別進(jìn)行推導(dǎo),看看最少需要多少邊形才能滿足視覺上的光滑度。這里,假設(shè)一個(gè)半徑為R像素的圓。
根據(jù)條件一,則有:
n>2*π*R/2 (n為多邊形的邊數(shù),R為半徑)
即n>π*R
根據(jù)條件二,則有(圖2):
OA-OC<0.5 (OA與OC的差小于0.5像素,其中OA=R)
∴有R-R*cosθ<0.5 (其中θ=360°/2n,n為多邊形的邊數(shù))
則n>180°/arccos((2R-1)/2R)
這表明在一定的半徑條件下,只要多邊形的邊數(shù)達(dá)到n,在屏幕上看起來就是很光滑的圓了。
圖2 等邊多邊形擬合圓的精度分析
最后,由兩個(gè)條件取小值就可以確定多邊形的最小邊數(shù)。
這里討論的表面平滑度是指物體表面經(jīng)渲染引擎渲染后在屏幕上顯示效果的平滑程度。
在討論前,我們先了解一下渲染引擎的基本工作方式。在各種渲染引擎中其核心都是以光照模型為基礎(chǔ)的,因?yàn)橹两褚曈X工業(yè)還是主要基于經(jīng)驗(yàn)而不是物理定律,所以,Lambert、Blinn、Phong、Cook-Torrance、Strauss、Anisotropic等經(jīng)驗(yàn)?zāi)P徒裉爝€可有生命力,而不至于被Radiosity和Raytrace等物理模型代替。Radiosity和Raytrace都有自己的光照定律,在各軟件中還經(jīng)常和以上經(jīng)驗(yàn)?zāi)P突煊?,是因?yàn)樗麄冞€有很強(qiáng)的生命力。由于計(jì)算速度的限制,一般實(shí)時(shí)仿真引擎一般都使用上述經(jīng)驗(yàn)?zāi)P?。因?yàn)槟P头N類很多而且多數(shù)比較類似,在這里以最實(shí)用的Blinn-Phong模型為例[1]。
1975年P(guān)hong Bui Tong發(fā)明的Phong模型(圖3),提出了計(jì)算鏡面高光的經(jīng)驗(yàn)?zāi)P停R面反射光強(qiáng)與反射光線和視線的夾角α相關(guān):
Ispecular = Ks*Is*(cos α) n
其中,Ks為物體表面的高光系數(shù), Is為光強(qiáng),α是反射光與視線的夾角,n為高光指數(shù),n越大,則表面越光滑,反射光越集中,高光范圍越小。
圖3 Phong模型
Blinn-Phong模型也稱Blinn模型,是Phong模型最常見的變化類型。作為CG領(lǐng)域的先驅(qū),Blinn改進(jìn)了Phong模型的一些高光上的問題。Blinn模型混合了Lambert的漫射部分和標(biāo)準(zhǔn)的高光,在速度上相當(dāng)快,因此成為許多CG軟件中的默認(rèn)材質(zhì)。此外它也集成在了大多數(shù)圖形芯片中,用以產(chǎn)生實(shí)時(shí)快速的渲染。
對于各表面為平面的物體,渲染軟件在對一個(gè)面進(jìn)行光照效果計(jì)算的時(shí)候,首先確定該面的法線方向,帶入光照模型中,就可以計(jì)算出每個(gè)像素的顏色值。
而對于曲面表面的物體,曲面被分解為一個(gè)個(gè)小的平面,在渲染的時(shí)候?qū)ο噜弮蓚€(gè)面之間的法線方向進(jìn)行插值,便形成連續(xù)過渡的效果。這樣,就可以用很少的面表現(xiàn)復(fù)雜的曲面。
我們可以做幾個(gè)對比試驗(yàn)(圖4),看看模型精度對于表面平滑效果的影響。
圖4 幾個(gè)對比試驗(yàn)(從左到右分別為10X10、20X20、40X40網(wǎng)格)
從圖中可以看出由于運(yùn)用了插值計(jì)算,模型精度對于表面平滑效果的影響不是太明顯。
從上面的討論可以看出,從視覺感受方面來看,影響真實(shí)度的主要因素是邊緣的平滑度,曲面的網(wǎng)格精度與邊緣的精度是相關(guān)聯(lián)的,由于人眼對曲面平滑度不及邊緣平滑度敏感,因此,在考慮設(shè)定模型精度時(shí)以邊緣的平滑度為標(biāo)準(zhǔn)確定就可以了。
通過前面的討論,可以知道要達(dá)到我們所需要的視覺真實(shí)感,很多時(shí)候并不需要很多的分段數(shù),合理安排曲邊的分段數(shù)才是曲面優(yōu)化的關(guān)鍵。關(guān)于模型的優(yōu)化已經(jīng)有人做過了一些研究和探索,網(wǎng)上也有一些相關(guān)的文章和論文[2],也編寫了一些優(yōu)化模型的程序,比如Polygon Cruncher軟件就是一個(gè)強(qiáng)大的模型減面工具,3D Max中也自帶有一個(gè)優(yōu)化工具,但通過實(shí)際運(yùn)用,我們發(fā)現(xiàn)它們還是存在很多問題,如對于部分模型存在優(yōu)化后物體外形產(chǎn)生了變形(圖5),對于有的模型則基本不能優(yōu)化。因此,在實(shí)際運(yùn)用中,作者認(rèn)為,需要從源頭上就控制面數(shù),其效果要比后期用程序進(jìn)行優(yōu)化,不僅在優(yōu)化程度上要高得多,而且在視覺效果上也更優(yōu)越。
圖5 模型在優(yōu)化后物體外形產(chǎn)生了變形(優(yōu)化后圓倒角不見了)
在制作過程中,針對不同類型的物體可以采取兩類優(yōu)化方法:模型方法和紋理方法,下面分別進(jìn)行闡述。
這種方法主要針對較大的曲面,曲面中間很少開孔。在建模時(shí)首先根據(jù)曲面在屏幕上顯示的尺寸(像素尺寸)按照前述的公式估算出邊界的分段數(shù),將曲面的邊按需要的精度用折線繪制,相應(yīng)的曲面則變?yōu)檎勖?,在模型被轉(zhuǎn)換到3D Max中后,選擇組成曲面的各面,將其組成一個(gè)光滑組,這樣在渲染輸出的時(shí)候渲染程序就會(huì)對光滑組內(nèi)的各個(gè)面進(jìn)行插值運(yùn)算,從而得到一個(gè)完美平滑的曲面了。其實(shí),考慮到人眼對運(yùn)動(dòng)物體的分辨率會(huì)適當(dāng)降低,在確定邊界分段數(shù)的時(shí)候可以設(shè)為估算子的1/2甚至1/4,以進(jìn)一步減少模型的面數(shù)。
圖6 不透明貼圖運(yùn)用(從左到右分別為貼圖、線框模型、貼圖后的渲染效果)
對于一些次要的表面開有很多孔洞的物體,則可以采用一種更簡潔的方法,即采用貼圖的方法,可以用一張只具有黑白兩色的圖作為蒙板作用于一個(gè)面上,定義蒙板的黑色部分在渲染時(shí)呈現(xiàn)透明狀態(tài),而白色部分呈現(xiàn)不透明狀態(tài)(圖6)。這樣,無論是多么復(fù)雜的模型,均可以十分方便地制作出來了,僅需制作一張黑白的圖片即可。
通過以上優(yōu)化方法,可以減少模型中大多數(shù)的面,我們嘗試優(yōu)化了系統(tǒng)的場景中的幾個(gè)物體,模型面數(shù)大約平均減少了70~80%左右,優(yōu)化效果非常顯著,而且即使經(jīng)過這樣大量精簡構(gòu)成模型的三角面,仍能保證物體在視覺上的真實(shí)感和平滑度而不至于失真。
[1] 彭群生,鮑虎軍,金小剛.計(jì)算機(jī)真實(shí)感圖形的算法基礎(chǔ)[M].科學(xué)出版社,2002.
[2] 張攀,周慶龍.VRML三維模型文件的優(yōu)化技術(shù)[J].后勤工程學(xué)院學(xué)報(bào),2005,02.
TP311
A
1009-0134(2010)09-0088-04
10.3969/j.issn.1009-0134.2010.09.26
2010-03-05
武漢市科技攻關(guān)項(xiàng)目“橋式起重機(jī)虛擬操縱系統(tǒng)研究與開發(fā)”(200711021381);國家檢驗(yàn)檢疫局科技計(jì)劃重點(diǎn)項(xiàng)目“橋(門)式起重機(jī)作業(yè)人員仿真操作培訓(xùn)考核專家系統(tǒng)”(20070K0229)
肖文(1970 -), 男,講師,在讀博士,主要從事計(jì)算機(jī)仿真研究。