摘 要:本文分析了生成計算機真實感圖形的主要技術(shù):濃淡模型,光線跟蹤,紋理生成和陰影處理。
關(guān)鍵詞:真實感圖形 濃淡模型 光線跟蹤 紋理生成和陰影處理
引言
使用計算機圖像技術(shù),生成高度真實感圖形在當前是計算機技術(shù)的一個熱門領(lǐng)域。真實感顯示廣義指顯示或給出的圖形具有某種真實感。實行的方法有:對物體進行軸測投影、透視投影,對物體消除隱藏線和隱藏面等。狹義指使計算機能產(chǎn)生像照片那樣的黑白圖像和彩色圖像,甚至產(chǎn)生真正三維的立體圖像。這種顯示又稱高度真實感顯示,產(chǎn)生的是仿真效果。它的物質(zhì)基礎(chǔ)在于高度發(fā)展的光柵顯示技術(shù)。
實際的需要使得真實感圖形的顯示在應(yīng)用中具有重要的意義,仿真顯示在作戰(zhàn)模擬、仿真訓練方面起到不容忽視的作用。真實感動畫的制作可以生成靈活生動的各種故事和場景;美觀的產(chǎn)品造型、包裝設(shè)計圖案、藝術(shù)廣告、裝飾畫等,在計算機輔助設(shè)計和制造中,對圖形的高度真實感的要求也越來越多,圖形顯示經(jīng)歷了從線架圖、消隱的線架圖、濃淡圖到帶陰影的濃淡圖及帶紋理結(jié)構(gòu)的更細致和更趨于真實圖形的發(fā)展過程。下面介紹幾種常見的技術(shù)。
一、濃淡模型
三維實體的透視圖經(jīng)過消除隱藏線面處理之后,就要用明暗度公式來計算和顯示該形體可見面的亮度和顏色。明暗度公式必須采用光學上的光線反射原理去模擬物體表面的光效應(yīng),這樣才能使三維形體的表示達到較高的逼真性。因此,明暗度公式應(yīng)包含兩個基本要素:表面特性和光照在表面上的照明特性。表面特性主要是指表面的反射性和透明性,而照明特性則包括光穿過表面并被吸收,然后重新發(fā)射出來的漫反射光以及由物體的外表面反射所產(chǎn)生的鏡面反射光特性。三維景物圖形產(chǎn)生的通真性很大程度取決能否成功地模擬濃淡或明暗效應(yīng)。從理論上講,表面反射有兩種極端的情形:一種是鏡面反射體,另一種是粗糙表面的理想漫反射體。事實上,絕大多數(shù)表面既不是理想的鏡面反射體,也不是理想的漫反射體,而是兼而有之。因此,反射模型應(yīng)由三個部分組成:泛光照射,漫反射和鏡面反射。泛光照射是指光線是從周圍景物散射出來的,而且在表面上各方向的反射是相等的;漫反射是由從點光源發(fā)出來,但相等地散射到各方向的光組成;鏡面反射代表高光效應(yīng),即光線集中在入射光線的入射點周圍,高光效應(yīng)的顏色和光源的顏色相同。
濃淡處理有兩種經(jīng)典的算法:(1)Gouraud方法:H.Gouraud在1971年提出曲面的連續(xù)性生成濃淡的方法。將曲面用多個多邊形來通近,并保存多邊形的各頂點處的真正表面的法矢量。當多邊形被漸次地轉(zhuǎn)換為像素時,在每個頂點處取的正確的顏色被計算,這些值沿多邊形進行線性的插值。Gouraud法有較好的濃淡效果,但是對多邊形的通近情況會強烈地影響由鏡面反射而形成的高光反射形。(2)Phong方法:BuiT. Phong和F. C. Crow在 1975年提出了曲面多邊形的改進繪制算法。將沿掃描線光強作線性插值的Gouraud方法改進為:沿掃描線對法矢量作線性插值。然后按光照模型計算各點的光強。Phong的濃淡處理方法計算量大,但可解決Gouraud法所遇到的許多問題。Gouraud法和Phong法都通過由多面體逼近曲面的思想求得了曲面的仿真顯示,對透明體的濃淡處理還需采用專門的方法,因為經(jīng)典的光照模型和濃淡處理方法都假定到考慮的物體表面是不透明的,入射光線在透明體上發(fā)生反射和透射,透射也分為規(guī)則透射和漫透射。由Newell和San-cha提出的透明算法不考慮折射的影響,是一個最簡單的透明算法:對透明的多邊形或表面注以標記,若可見面是透明的,則取它與同它相距最近的另一表面光強的線性組合,并將所得光強值寫入幀緩沖器,并遞歸地進行此算法直至遇著一個不透明的面或背景。
二、光線跟蹤
許多研究集中于光學效應(yīng)和光線跟蹤上,研究方向主要包括透明性造型、折射造型、反射造型及使用透鏡的照像機模型。光線跟蹤是由Whitted在1980年為濃淡顯示提出的改進照明模型中引進的,是對Appel和Goldstein、Nagel在三維可視仿真問題中使用的光線投射的改進。在光線投射中,光線從眼中出發(fā),經(jīng)過像素進入世界,光線和世界中的物體最近的交點決定了可見的面,而Whiffed在交點處又加了兩條光線路徑,分別沿反射方向和折射方向,這樣可以精確地為反射和折射面的變形進行造型。
光線跟蹤的算法基本思想是:觀察者能夠看見景物是由于光源發(fā)出的光照射到物體上的結(jié)果,其中一部分光到達人的眼睛引起視覺。到達觀察者眼中的光可由物體表面反射而來,也可通過表面折射或透射而來,若從光源出發(fā)跟蹤光線,因只有少量的光能到達觀察者的眼睛,處理的效率太低,所以按反途徑進行光線跟蹤,即按從觀察者到景物的方向。在簡單的光線情形下,假定畫面中的景物均已變換到圖像空間,光線從觀察者出發(fā),通過光柵中像素的中心進入畫面,然后沿光線路徑進行跟蹤以決定它與畫面中的哪一物體相交。每一光線均需與畫面中的每一物體進行比較,如果相交,則需求出該光線與物體的所有可能的交點,具有離觀察點最近的交叉對應(yīng)的面為此像素的可見面,再由光照模型可確定該像素處的顯示值。完整的光線跟蹤算法中用到的光照模型,除了要考慮直接來自光源的光線外,還要考慮由于其它物體的反射或折射傳來的光線。
光線跟蹤法生成圖像的逼真度高,能反映出物體表面的光滑程度、透明性等,成為生成真實感圖形最有效的方法之一。但光線跟蹤法運算量和存儲量巨大,算法十分費時,近年來許多工作都是圍繞提高光線跟蹤速度展開的,以期能調(diào)和圖形的實時性與真實感之間的矛盾,解決光線跟蹤的關(guān)鍵在于提高射線(光線)與物體求交的效率。提高求交效率的途徑不外乎下面兩種:一是盡量簡化求交運算本身。即對一個給定的物體和射線,能夠快速判斷兩者是否相交,如果相交,應(yīng)能快速地求出交點。二是盡可能減少參與求交的物體數(shù)。場景的物體數(shù)目是一定的,但對于給定的射線,如果能迅速給出可能與它相交的物體或排除不與它相交的物體而不是逐個地進行求交運算,則求交效率自然大大提高了。
光線跟蹤的兩大缺點在于費用昂貴和有走樣現(xiàn)象,對光線跟蹤的研究主要有四個方向:(1)對不同的物體求取交點的算法;(2)擴展光學效應(yīng)的范圍,用光線跟蹤捕獲更多的光學效果;(3)反走樣技術(shù);(4)降低測試交點的次數(shù)。早期研究都集中于迅速在光線和復雜物體之間求取交點。
三、紋理生成
紋理生成是計算機圖形真實顯示技術(shù)中的一個重要內(nèi)容,三維實體的真實性顯示在很大程度上取決于對紋理的模擬。傳統(tǒng)上,紋理處理技術(shù)是采用二維紋理映射的方法,假定紋理定義在紋理空間上,而曲面定義在另一個參數(shù)空間上,則通過一一映射將二者聯(lián)系在一起,利用此方法可以將某些紋理圖形映射到曲面上。在產(chǎn)生紋理映射過程中利用繪制點與紋理表的對應(yīng)關(guān)系,得到相應(yīng)的紋理值,在對應(yīng)以外的點處的紋理值則通過對紋理表進行相應(yīng)的插值得到相應(yīng)的紋理值。這種方法簡單,計算量小,查找方便,但在一些情況下將會產(chǎn)生失真:紋理效果多邊形可能只占屏幕的很小一部分,使得同一個像素上有許多紋理點。
Blinn和Newell通過使用一個標志濾波器改進了上述技術(shù)。Feibush,Levoy和Cook則推出了Gaussian濾波器,但是計算很昂貴。Wiuiams提出的濾波機制雖然并不如其他方法精確,但計算紋理是最快的了。他在不同的分辨率下保存紋理的備份并采用最合適的一個。Crow使用一張預計算表來存儲整個紋理映射,使得濾波能在常效時間內(nèi)完成,Norton,Rockwood和Skol-moski提出把紋理映射作為一個解析函數(shù),預先計算光譜頻率并無需改變?nèi)魏胃哳l地去重構(gòu)此解析函數(shù),從而快速計算紋理,這很適于模糊物體如云、波浪、原野等。紋理在這些物體上并不需要包括許多頻率因素。
沿著一個復雜的三維物體,很難在其上包裹一個二維的紋理,這需要定義一個函數(shù),把這個物體的空間坐標映射到三維紋理空間并使用三維空間,不管物體的形狀如何,在它表面上的紋理是一致的,當紋理模型與制作物體的材料是一致時,特別有用,因為需要額外的大量的空間來存一個像素的三維數(shù)組。Peachey和Perlin提出使用“過程紋理”,但是過程紋理很難進行反走樣。
紋理無需包括一個表面上的顏色。存儲其他表面特性也可幫助紋理映射增強性能,Blinn提出應(yīng)把表面法矢擾動存儲于紋理映射中,又稱顛簸映射。這可以為有折皺的表面產(chǎn)生逼真的模擬(通過高光正確地與表面的顫動匹配的方法)。Gardner使用解析紋理來修整橢球體的表面邊界,以模擬樹和云的形狀。紋理技術(shù)在環(huán)境映射中使用也較多,如果物體是閃閃發(fā)亮的,那它的表面可以反射其它同在環(huán)境中的物體。計算這些反射是昂貴的,但紋理技術(shù)就可以把從一個視點看去的環(huán)境的近似圖景投射到球體、圓柱體或長方體上,并把這投影存在一個紋理映射中。然后,當我們?yōu)橐粋€點造濃淡時,在反射的方向進行紋理采樣即可。
四、陰影處理
陰影顯示在計算機合成圖像上表示真實性的過程中起到了重要的作用。當觀察方向與光源方向不重合時,就會出現(xiàn)陰影,它使人感到畫面上景物的遠近深淺,從而極大地增強了畫面的真實性。
陰影算法的復雜程度與光源的模型有關(guān)。這包括光源的類型和位置的情況。陰影處理的算法很容易和光線跟蹤模型結(jié)合為一體,假定光源(或多個光源)向量L在其路徑上不被任何物體阻擋,如果L被阻擋,則當前表面點處于陰影中要確定其他物體是否處于L的路徑上,方法是建立一條從當前點到光源的附加光線,這條光線稱為陰影測試線。如果一個完全不透明的物體是處在陰影路徑上,則把光線交點的亮度值減少至環(huán)境光照值;如果相交物體是半透明的,則計算出光線交點的亮度值,這時仍把L當作一個常向量(光源在無限遠處)已不合適。所謂陰影測試線只是其方向就是L方向的那些光線,如果陰影測試線與半透明物體相交,則它應(yīng)被折射。但是,計算方法比較復雜,陰影測試線在初始階段是作為表面交點與光源之間的直線計算的,這項計算較簡單,但要從這一點到光源的光線進行跟蹤并考慮折射效果,就相當困難了。
隨著光源數(shù)量的增加,用于陰影測試計算開銷會很快占主要地位,因為如果有幾個光源,則每個光線與表面的交點會產(chǎn)生幾條陰影測試線,對一條陰影測試線的物體交點的開銷點對一條主光線的開銷是完全相同的。為了減少陰影測試的計算量,Haines和Gree-burg在1986年提出一種使用光線緩存區(qū)作為陰影測試加速器的新方法,用這個方法,可使用陰影測試次數(shù)減少至1/4至1/30,但它只能處理點光源,且需要很大存儲量。
參考文獻:
[1]蔡士杰等譯.計算機圖形學(第三版).北京:電子工業(yè)出版社,2005.6.
[2]劉振安等.Windows圖形設(shè)計基礎(chǔ).北京:人民郵電出版社,1996.4.
[3]彭群生,梁友棟.真實感圖形的計算機生成.計算機學報,1989.12(3):226-237.
[4]陳振初、蔡宣平.計算機圖形顯示原理(軟件).國防科技大學出版社,1991. 6月版.