三維圖像詳解
引言
計算機顯示器就是一個有兩個真實維度(高和寬)的顯示器。但當您看電影(如《玩具總動員2》)或玩游戲(如《古墓麗影》)時,您就會看到一個通向三維世界的窗口。這個窗口的其中一個真正神奇之處就在于,您看到的世界既可能是我們所生活的世界,也可能是未來世界,或許還可能是僅存在于電影或游戲創(chuàng)作者心目中的世界。所有這些都可以出現(xiàn)在您用來寫報告或跟蹤股票投資組合的同一個屏幕上。
那么,計算機是如何欺騙您的眼睛,讓它們以為平面屏幕可以深深地延伸到一系列房間中的呢?游戲程序員又是如何讓您相信,您看到的是真實的人物在真正的場景中走動?在本篇的博聞網(wǎng)文章中,我們將向您介紹三維圖形設計師們采用的一些視覺小訣竅,以及硬件設計師們是如何迅速實現(xiàn)這些小訣竅,使三維圖形看起來就像是一部對您的每個舉動都能做出反應的電影。
三維效果
一幅圖畫如果有(或看起來有)高度、寬度和縱深,那么就可以稱之為三維(或3D)圖畫。一幅圖畫如果有高度和寬度,但沒有縱深,那么它就是二維(或2D)的。有些圖畫專門被設計成二維的。例如,您可以想想指示哪扇門通往公共衛(wèi)生間的國際通用標志。這些標志的設計使人們一眼便能認出它們。這就是為什么它們只采用最基本的形狀。標志還可以包含其他信息,如小孩或婦女穿的是什么樣的衣服、他們頭發(fā)的顏色、他們是否定期健身等等,但所有這些額外信息可能讓您花更多的時間才能從標志中讀出基本含義:去公共衛(wèi)生間該怎么走。二維圖形和三維圖形在使用上的基本差異之一就在于:二維圖形擅長于迅速傳達簡單的信息,而三維圖形能夠講述更復雜的故事,但同時必須攜載更多信息。
來看看上圖中的三角形。左側的兩個三角形都有三條線和三個角,這些是構成三角形必備條件。在我們看來,右側的圖像是個金字塔,一個帶有四個三角形側面的三維結構。請注意,金字塔形必須由五條線和六個角構成,構成金字塔所需的信息幾乎是構成三角形所需信息的兩倍。
數(shù)百年以來,藝術家們已經(jīng)掌握了一些訣竅,能夠讓二維平面圖看起來像是進入真正三維世界的窗口。您掃描到計算機上并在顯示器上瀏覽的那些照片可能就運用到了這類訣竅。物體越遠,看起來就越??;當焦點位于靠近相機的物體上時,較遠的物體就變得模糊;物體離得越遠,其色彩的鮮明度就越差。在談到當今計算機上的三維圖形時,我們指的不是靜止的照片,而是移動的圖像。
如果將二維圖畫做成三維圖像需要添加大量信息,那么將三維靜態(tài)圖像做成能夠逼真移動的圖像,所需信息量就更大了。問題的一部分在于,我們的要求越來越高了。我們希望自己看到的所有東西都具有高度的真實性。二十世紀七十年代中期,像Pong這樣的游戲的屏幕圖形就能給人們留下深刻的印象。如今,我們將游戲屏幕與DVD電影進行比較,希望游戲的畫面可以像影院的電影一樣流暢、清晰。這是對PC、Macintosh以及日益增多的游戲機(如Dreamcast和PlaystationII)上的三維圖形一次很大的挑戰(zhàn)。
三維圖形
對于我們大多數(shù)人而言,計算機或高級游戲系統(tǒng)上的游戲畫面是最常見的三維圖形。這些游戲(或采用計算機生成的圖像制作而成的電影)必須經(jīng)歷三大主要步驟,才能創(chuàng)建并呈現(xiàn)逼真的三維場景:
- 創(chuàng)建虛擬的三維世界。
- 確定屏幕上顯示的將是哪一部分的虛擬世界。
- 確定屏幕上每個像素的外觀,從而使整個圖像看起來盡量逼真。
創(chuàng)建虛擬的三維世界
虛擬三維世界并不等同于一幅虛擬三維世界的圖片。這個道理同樣適用于我們的現(xiàn)實世界。就拿現(xiàn)實世界的極小一部分——您的手以及手下的桌面來打個比方吧。手的本質決定著手的移動方式和外觀。手指關節(jié)向手掌方向彎曲,而不會向反方向彎曲。如果用手拍桌面,桌面不會四處飛濺,因為桌面總是那么牢固、堅硬。您的手不能穿過桌面。上述內容是您無法通過任何一張照片來證實的。但無論您拍多少張照片,您看到的始終是:手指關節(jié)只能向手掌方向彎曲;桌面始終是固體,而非液體,并且是硬的,不是軟的。這是因為在現(xiàn)實世界中,手就是如此,并且將始終具有這樣的屬性。而虛擬三維世界中的物體卻并非像您的手那樣自然存在。它們完全是合成的。它們只具有軟件賦予它們的特性。程序員必須使用專門工具,并且非常仔細地定義虛擬三維世界,從而使其中的一切始終以特定的方式表現(xiàn)。
屏幕上顯示的是哪一部分的虛擬世界?
在任何時候,屏幕上都只會顯示計算機游戲創(chuàng)建的虛擬三維世界的某個微小部分。屏幕上顯示的內容由以下幾方面綜合決定:定義虛擬世界的方式、選擇前往的目的地以及視線的方向。無論您去哪里(向前或向后、向上或向下、向左或向右),您周圍的虛擬三維世界決定著您從所處的位置朝要前往的方向觀看時所能看到的一切。您在各個場景中看到的東西必須是有意義的。如果從相同的距離看一個物體,那么無論方向如何,物體看起來應該是等高的。所有物體的外形和移動方式都應該能讓您相信:這個物體的質量始終保持不變,它的硬度不變,柔韌度不變,等等。
編寫計算機游戲的程序員花了巨大的心思來定義三維世界,這樣您就可以在其中漫步,不會因為遇到什么而產(chǎn)生這樣的想法:“在這個世界上不可能發(fā)生那樣的事!”您最不想見到的莫過于兩個能夠直接穿過對方的固體。因為那等于是在無情地提醒您,您所看到的一切都是虛構的。
第三個步驟所包含的計算量至少與其他兩個步驟相同,并且必須在游戲和視頻中實時發(fā)生。接下來,我們將多花些時間來了解這個步驟。
如何讓圖像栩栩如生?
無論虛擬三維世界有多大、多精彩,計算機都只能通過在二維屏幕上繪制像素來描畫那個世界。本節(jié)將重點介紹如何讓屏幕上的內容看起來栩栩如生,尤其將介紹如何盡量讓場景看起來接近于現(xiàn)實世界。首先,我們來了解一下如何讓單個靜態(tài)物體看起來栩栩如生。然后,我們再回答針對整個場景的同一問題。最后,我們將介紹計算機該執(zhí)行哪些操作,才能顯示真實圖像以真實速度進行運動的全動態(tài)場景。
要讓物體的形象逼真,圖像的許多要素都發(fā)揮著重要作用。其中最重要的部分包括:形狀、表面特性、光照、透視、景深和抗鋸齒。
形狀
當我們看窗外時,會看到由各種形狀構成的景色,其中的直線和曲線尺寸各異,構成的組合也不盡相同。同樣,當我們看計算機顯示器上的一個三維圖像時,會看到由多種形狀組成的圖像,盡管大多數(shù)形狀都是由直線構成的。我們會看到正方形、長方形、平行四邊形、圓形和菱形,但看到最多的還是三角形。為了讓構建出的圖像看似擁有自然的平滑曲線,一些形狀必須非常小。要制作復雜的圖像(比如人體),可能需要將數(shù)千個這樣的形狀放在一起,構成一個稱為線框的結構。此時,這個結構已經(jīng)具有了成品的大致模樣,但下一個主要步驟仍非常重要:必須賦予線框一個表面。
此圖顯示的是一個手的線框,它由相對較少的多邊形(共862個)構成。 |
可以對線框的輪廓進行加工,使其看起來更自然、更圓滑,但這需要用到更多的多邊形(3,444個)。 |
表面紋理
在現(xiàn)實世界中看到一個表面時,我們可以通過兩種主要的方法來獲得有關這個表面的信息。我們可以看見它,有時可以從多個角度進行觀察;我們還可以觸摸它,看看它是硬的還是軟的。但對于三維圖像而言,我們只能通過觀察表面來獲得所有可能得到的信息。這些信息可分成三類:
- 顏色:它是什么顏色?整個圖像是同一種顏色嗎?
- 紋理:表面看起來是平滑的,還是有劃痕、突起、凹陷或其他不規(guī)則現(xiàn)象?
- 反射率:它能反射多少光線?表面上其他物件的倒影是清晰還是模糊?
要讓圖像看起來“真實”,辦法之一就是在圖像的各個不同部分包含大量的上述三種信息。請環(huán)顧一下您的四周:您的計算機鍵盤與桌面在顏色、紋理、反射率方面都存在差異;而桌面的顏色、紋理、反射率又與您手臂的顏色、紋理和反射率存在差異。要生成真實的顏色,計算機必須能夠從數(shù)百萬種不同顏色中選擇出適合構成圖像的像素使用的顏色,這一點非常重要。紋理的變化來自于為各種表面(從青蛙的皮膚到Jell-o牌果凍,再到存儲的應用于表面的“紋理貼圖”)建立的數(shù)學模型。我們還將各種不可見的性質(軟、硬、溫暖、寒冷)與特定的顏色、紋理和反射率組合進行關聯(lián)。只要一個方面出錯,真實的感受就會被破壞。
為線框添加表面,即可將圖像由一個數(shù)學模型轉變成一幅圖,我們可以認出這幅圖畫的是一只手。 |
照明
進入房間后,您會打開燈。您也許不會花大量的時間去思考燈泡或燈管傳遞光的方式,以及光是如何擴散到整個房間的。但制作三維圖形的人必須考慮這個問題,因為線框四周的所有表面都必須從某個位置來照亮。有一種被稱為光線跟蹤的技術能夠繪制虛擬光線的行走路線:虛擬光線離開燈泡后,被鏡面、墻壁和其他反射面反射回來,并最終以不同的強度,從不同的角度落在不同的物件上。想想來自單個燈泡的光線就已經(jīng)夠復雜了,但大多數(shù)房間都有多個照明來源:多盞燈、屋頂?shù)鯚?、窗戶、蠟燭等等。
光照在產(chǎn)生以下兩種效果方面發(fā)揮著重要作用,正是這兩種效果讓物體看起來具有重量和硬度:明暗和陰影。如果光線照在物體上,一側的光線比另一側強,這時就會產(chǎn)生第一種效果,即明暗。正是這種效果使得球看起來是圓的,讓高顴骨看起來引人注目,讓毯子上的折痕看上去有深度且柔軟。這些光線強度的差異與形狀配合在一起增強了這樣一個假象,那就是物體具有縱深、高度和寬度。重量錯覺則來自于第二個效果,即陰影。
圖像中的光照不僅可以通過明暗效果來為物體添加縱深,它還可以用陰影將物體“固定”在地面上。 |
光線照在實體上時,實體會投下陰影。觀察日晷或樹木投在人行道上的陰影,您就可以了解到這一點。因為我們習慣于看到真實物體和人投下陰影,所以,在三維圖像中看到陰影有助于加強這樣一個錯覺,即我們是在透過一扇玻璃窗看真實的世界,而不是在看屏幕上以數(shù)學方式生成的各種形狀。
透視
透視是那種聽起來相當專業(yè)的詞匯之一,但它確實描述了人人都見過的一種簡單效果。如果您站在一條筆直長路的一側向遠處張望,這條路的兩側在地平線上看起來就像是交匯成了一點。另外,如果路邊有樹,較遠的樹木看起來要比離您較近的樹木矮。實際上,這些樹看起來就像是在路兩側形成的那一點上會聚。場景中的所有物體看起來都像是最終將在遠處的一個單點上會聚,這就是透視。透視有許多不同類型,但大多數(shù)三維圖形使用的是上述的“單點透視”。
|
在示意圖中,那些手是單獨存在的,但在大多數(shù)場景中,某些物件之前都會有另一些物件,從而部分地遮擋這些物件。對于這些場景而言,軟件不僅得計算物件的相對尺寸,而且還必須知道哪個物件擋在前面,以及它擋住了多少其他物件。Z緩沖區(qū)算法是計算這些因素的最常用方法。Z緩沖區(qū)算法之名來自從屏幕回穿過場景再到地平線的那條軸(或虛線)的通用標記(還可考慮使用另外兩條常用軸:衡量場景左右兩側之間距離的X軸和衡量場景上下方之間距離的Y軸)。
Z緩沖區(qū)根據(jù)包含多邊形的物體與場景前端之間的距離來為各個多邊形分配一個數(shù)字。通常,較小的數(shù)字分配給距離屏幕較近的物件,較大的數(shù)字分配給距離地平線較近的物件。例如,一個16位的Z緩沖區(qū)會將數(shù)字32,768分配給距離屏幕最近的物體,而將32,767分配給距離屏幕最遠的物體。
在現(xiàn)實世界中,我們的眼睛看不見其他物體之后的物體,因此我們不用去猜想自己應該看到什么。但計算機會不斷遇到這個問題,并將以直接的方式來解決問題。每個物體創(chuàng)建出來后,其Z值就會被拿來與擁有相同X值和Y值的其他物體的Z值進行比較。具有最小Z值的物體將被完全渲染,而對于具有較大Z值的物體而言,它與具有較小Z值的物體相交的部分將不被渲染。這樣做可確保我們不會看到背景物件透過前景人物,在前景人物中出現(xiàn)。由于物體被完全渲染之前就已采用了Z緩沖區(qū),因此根本無須對隱藏在人物或物體之后的場景部分進行渲染。這就改善了圖形的效果。
景深
可成功用于創(chuàng)建三維圖形的另一個光學效果就是景深。讓我們以路邊的樹木為例。當樹木行列變得越來越小時,就會出現(xiàn)另一個有趣的現(xiàn)象。如果看離自己較近的樹,較遠的樹似乎就變模糊了。當您看有樹的照片或電影時,這種現(xiàn)象特別明顯。電影導演和計算機動畫師利用這種景深效果來達成兩個目的。第一個目的是增強所見場景中的縱深錯覺。計算機完全可以保證場景中的每個物件不論距離遠近都完全清晰。但因為我們習慣于看到景深效果,所以如果無視距離遠近,一律確保物件清晰就會讓人覺得不尋常,并將妨礙產(chǎn)生所見的是真實場景這個錯覺。
導演采用景深效果的第二個原因就是要將人們的注意力集中到他們認為最重要的物件或演員身上。例如,一方面,為了將注意力集中到影片的女主角身上,導演可能會采用“淺景深”效果。采用這種效果時,只有演員清晰可見;另一方面,如果場景旨在讓觀眾對壯觀的自然景象產(chǎn)生深刻印象,那么就可能采用“深景深”,使場景盡量清晰,引人注目。
|
抗鋸齒
另一種欺騙人們雙眼的技巧就是抗鋸齒效果。數(shù)字圖形系統(tǒng)非常擅長于創(chuàng)建貫穿屏幕上下或左右的直線。但如果遇到曲線或對角線(這種類型的線條在現(xiàn)實世界中隨處可見),計算機就可能生成像樓梯一樣的線條,而不能生成圓滑流暢的線條。為欺騙觀眾的眼睛,讓他們相信自己看到的是圓滑的曲線或線條,計算機將把線條顏色的漸變陰影添加到線條周圍的像素上。這些“灰顯”的像素會欺騙觀眾的眼睛,讓他們相信鋸齒狀樓梯已經(jīng)消失。添加其他有顏色像素以欺騙眼睛的過程就叫做抗鋸齒,它是區(qū)分計算機生成的三維圖形和手工繪制三維圖形的技巧之一。跟蹤穿過顏色區(qū)域的各種線條,并添加適量的“抗鋸齒”顏色,是計算機在顯示器上創(chuàng)建三維動畫時要執(zhí)行的另一項復雜任務。
如果緊挨著直線中的像素開始為圖像上色,就會出現(xiàn)鋸齒狀“樓梯”,這是物體由計算機生成的顯著標志。 |
在圖像線條周圍畫一些灰色的像素,即“模糊”線條,可最大限度地減少鋸齒感,使物體看起來更加真實。 |
您能分辨出哪一個球是真的嗎?
如果綜合使用上述所有訣竅,即可創(chuàng)建出極為真實的場景。在最近的游戲和影片中,計算機生成的物體與照片背景結合在一起,從而進一步增強了人們的錯覺。將照片與計算機生成的場景進行比較,您會看到令人驚奇的效果。
這是博聞網(wǎng)美國站辦公室附近人行道的照片。在下列的一幅圖像中,一個球被放在人行道上,并進行了拍照。在另一幅圖像中,藝術家用計算機圖形程序創(chuàng)建了一個球。
圖像A |
圖像B |
您能分辨出哪個球是真的嗎?請在文章末尾查找答案。
讓三維圖形動起來
到目前為止,我們已了解了讓數(shù)字圖像(不論圖像是單個靜態(tài)照片,還是動畫序列的一部分)看起來更真實的各種技巧。但在動畫序列中,程序員和設計師會采用更多訣竅,讓圖像看起來像是“實景拍攝”,而不是由電腦生成的。
每秒多少幀?
如果您去當?shù)赜霸嚎措娪?,被稱為幀的圖像序列將以每秒24幀的速度在您眼前掠過。由于視網(wǎng)膜保留圖像的時間略長于1/24秒,因此大多數(shù)人的眼睛會將各幀連成一幅持續(xù)的運動的映像。
換個角度來看,這意味著電影的每一幀都是一張曝光時間為1/24秒的照片。這要比“靜止動作”攝影的曝光時間長得多;在“靜止動作”攝影中,奔跑著的人和其他運動物體就像在空中凍結了一樣。因此,如果仔細看與賽車相關的電影中的某一幀,您會發(fā)現(xiàn)有些汽車“變得模糊”,那是因為在相機快門打開時它們是運動的。我們已習慣于見到快速移動物體發(fā)生模糊的情景,之所以覺得屏幕上的圖像看起來是真實的,部分原因就在于這種模糊。
但是,因為數(shù)字三維圖像根本就不是照片,所以當物體在一幀中移動時不會出現(xiàn)模糊現(xiàn)象。為了使圖像看起來更真實,程序員必須特意添加模糊效果。有些設計師覺得,若要制作出這種效果,則每秒需顯示30多幀,因此他們將游戲顯示速度提高為每秒60幀。盡管這使得每個圖像都能被極細致地渲染,動作能夠以更小的增量顯示,但它極大地增加了必須針對給定動作序列進行渲染的幀的數(shù)量。舉個例子,您想像一個持續(xù)6.5分鐘的追逐動作。如果是電影,這個動作需要24(幀/秒)x60(秒)x6.5(分鐘)個幀,或者說9,360幀。如果是每秒60幀的數(shù)字三維圖像,則同樣時長的追逐畫面需要60x60x6.5個幀,或者說23,400幀。
創(chuàng)造性模糊
由程序員添加、以增進動態(tài)圖像真實性的模糊稱為“動態(tài)模糊”或“空間抗鋸齒”。如果您曾啟用過Windows的“鼠標蹤跡”功能,那么可以說您已經(jīng)用過了該技術中部分最基本的功能。移動物體的副本會遺留在其尾跡中,隨著物體漸漸遠去,副本的清晰度和密度將越來越低。物體軌跡的長度、副本逐漸消失的速度以及其他細節(jié)將根據(jù)下列因素發(fā)生變化:物體應具有的移動速度、物體與觀眾之間的距離以及物體成為關注焦點的程度。正如您所看到的那樣,要讓物體看起來像是在真實移動,需要做出許多決定,編排許多細節(jié)。
在圖像的其他部分中,為做到真實,必須舍棄計算機的精確渲染。這個規(guī)則既適用于靜態(tài)圖像,也適用于動態(tài)圖像。倒影就是很好的例子。您一定見過這樣的畫面:以鉻合金刨光的車輛和太空飛船極好地反射出場景中的所有東西。雖然鉻反射的影像能夠精彩地展示對光線的跟蹤,但我們大多數(shù)人并非生活在覆蓋著鉻的世界中。雖然木制家具、大理石地板和拋光金屬的反射效果不能與光滑的鏡面相提并論,但它們都能反射出影像。這些表面上的倒影必須經(jīng)過模糊處理(不同的表面將接受不同的模糊處理),以便數(shù)字畫面里中心角色周圍的表面能提供一個真實的表演舞臺。
讓圖像實現(xiàn)流暢運動
至今為止,我們討論過的所有因素都使得將三維圖像放到屏幕上這一過程變得更為復雜。首先,定義和創(chuàng)建一個物體就很不容易,而要生成顯示圖像所需的所有像素,從而將物體渲染出來就更加困難。為此必須先對由線框組成的三角形和多邊形、表面特性、來自各光源的光線以及多個表面的反射光線進行計算和組合,然后軟件才能告訴計算機該如何繪制屏幕上的像素。您可能會認為繪制像素即意味著計算這項艱巨的工作大功告成,但其實正是在繪制(或渲染)階段,工作量才開始攀升。
如今,1024x768的屏幕分辨率只是“高分辨率”的最低要求。這意味著要在屏幕上繪制786,432個圖像元素(或稱為像素)。如果有32位顏色可用,那么乘以32就意味著制作一幅圖像要處理25,165,824個位。如果顯示速度為60幀/秒,計算機就必須每秒處理1,509,949,440位信息,只有這樣才能使圖像出現(xiàn)在屏幕上。除此之外,計算機還必須執(zhí)行其他任務來決定圖像的內容、顏色、形狀、光照和其他所有一切,從而使屏幕上的像素能夠真正展示出正確的圖像。想想繪制出圖像所需的整套流程,您就不難理解為什么圖形顯示卡會將越來越多的圖形處理工作從計算機的中央處理器(CPU)中轉移出來了。CPU需要獲得盡可能多的幫助。
計算機圖像顯示前的變換
雖然您知道了構成屏幕內容的信息位的數(shù)目,但這只能讓您對所涉及的處理量有部分的了解。要對所處理的負荷總量有個一知半解,我們還得來討論一下被稱為變換的數(shù)學過程。只要我們改變了看待事物的方法,那就是應用了變換。例如,在一個畫面中,一輛汽車向我們駛來,這時可以采用變換,從而使汽車離我們越近,看起來就越大。另一個例子是將計算機程序創(chuàng)建的三維世界“壓平”成可在屏幕上顯示的二維圖像。那么,就讓我們來看看變換所涉及的數(shù)學知識(三維游戲的每一幀都要用到這些知識),從而了解計算機在做哪些工作。我們將使用一些虛構的數(shù)字,從中您就能看出生成一個屏幕所涉及的龐大計算量。不用擔心如何進行這些計算,因為這個任務將完全由計算機代勞。這一切都是為了讓您明白,在您玩游戲時計算機要承擔多么繁重的工作。
這個過程的第一部分包含幾個重要變量:
- X=758——這是我們所見“世界”的高度
- Y=1024——這是我們所見“世界”的寬度
- Z=2——這是我們所見“世界”的深度(從前到后)
- Sx=這是我們的窗口在這個世界中的高度
- Sy=這是我們的窗口在這個世界中的寬度
- Sz=這是深度變量,它決定了哪些物體是可見的,并位于其他被隱藏物體的前方
- D=0.75——這是我們的雙眼與這個虛擬世界窗口之間的距離
首先,我們要計算窗口在虛擬世界中的大小。
既然窗口大小已經(jīng)計算出來了,那么就采用透視變換來執(zhí)行下一步驟,將這個世界投射到顯示器屏幕上。在這一步驟中,我們將添加更多的變量。
然后,通過下列等式,我們可計算出三維虛擬世界中的點(X、Y、Z、1.0)將變換到位置(X'、Y'、Z'、W'):
這時,在將圖像投射到顯示器屏幕上之前,必須進行另一個變換,但您已經(jīng)開始意識到所涉及的計算量之大了,而這一切只是為了在圖像中創(chuàng)建一個矢量(線)!您可以想像一下包含眾多人和物的復雜場景所涉及的計算,然后想像一下在1秒鐘內完成60次這樣的計算會是怎樣的情形。難道您不為有人發(fā)明了計算機而高興嗎?
在下列示例中,您將看到一個動畫序列,顯示的是在辦公室中的一段行走過程。首先,請注意這個序列比三維游戲中的大多數(shù)場景簡單得多。沒有敵人從桌子后面竄出來;沒有導彈或長矛在空中劃過;沒有咬牙切齒的魔鬼在小屋中現(xiàn)形。從“場景中將出現(xiàn)什么”這個觀點來看,這是個簡單的動畫。但即便是這樣簡單的序列,也要涉及到我們至今為止所討論過的許多問題。墻壁和家具的紋理覆蓋著它們的線框結構。代表光線的射線為形成陰影提供了基礎。另外,穿過辦公室時,隨著視點的改變,請注意角落處的某些物體是如何變得清晰可見,某些物體又是如何從墻后出現(xiàn)的——您所看到的正是Z緩沖區(qū)計算的結果。在圖像真正呈現(xiàn)到顯示器上之前,所有這些元素都將發(fā)揮作用;因此,即便是功能強大的新式CPU也需要獲得一些幫助,以便執(zhí)行制作三維游戲和圖形需要的所有處理。這就是該圖形協(xié)處理器出場的時候了。
圖形卡是如何發(fā)揮作用的
從個人計算機的早期階段開始,大多數(shù)圖形卡都起著轉換器的作用,也就是獲取計算機CPU創(chuàng)建的繪制好的圖像,并將其轉換成驅動計算機顯示器所需的電脈沖。這個方法確實有效,但圖像的所有處理工作,以及對聲音、玩家輸入(針對游戲而言)和系統(tǒng)中斷的全部處理都是由CPU完成的。為成功制作現(xiàn)代三維游戲并以多媒體形式呈現(xiàn)給觀眾,計算機得承擔種種工作,因此,即便是速度最快的現(xiàn)代處理器也會超負荷,而無法實時滿足軟件的各種要求。這就是圖形協(xié)處理器的作用所在:它分擔CPU的一部分工作,使總體的多媒體體驗達到人們認可的速度。
正如我們已經(jīng)了解到的那樣,構建三維數(shù)字圖像的第一步是要創(chuàng)建一個由三角形和多邊形構成的線框世界。線框世界接著從三維數(shù)學世界變換成在二維屏幕上顯示的一組圖案。接著,變換后的圖像將被表面覆蓋(或者說被渲染),一些光源將照亮這些圖像,并最終將圖像變換成在顯示器屏幕上顯示的圖案。但是,現(xiàn)代圖形顯示卡中最常見的圖形協(xié)作處理器在線框創(chuàng)建好并將轉換成一組二維多邊形后,將從CPU處接管渲染任務。在這個階段,VooDoo3和TNT2 Ultra這樣的圖形顯示卡上的圖形協(xié)處理器將接管CPU的工作。這是重要的一步,但采用尖端技術的圖形處理器能在更早的階段減輕CPU的負擔。
英偉達出品的GeForce 256能夠更多地減輕CPU的負擔。較早出品的GeForce 256能夠執(zhí)行渲染操作,除此之外,GeForce 256還添加了將線框模型從三維數(shù)學空間轉換到二維顯示空間的功能,并能執(zhí)行顯示光照所需的工作。這大大減輕了CPU的處理壓力,因為變換和光線跟蹤都需要用到大量的浮點數(shù)學(涉及分數(shù)的數(shù)學,之所以稱為“浮點”,是因為可以根據(jù)需要移動小數(shù)點,以提供高精度)。又由于圖形處理器不必處理CPU的許多任務,所以可以將其設計為能夠極快地處理那些數(shù)學任務。
3dfx出品的新款Voodoo 5接管了CPU的另一組任務。3dfx稱這種技術為T緩沖。此技術側重于改進渲染過程,而不是向處理器添加額外任務。T緩沖技術旨在提高抗鋸齒效果。它能夠渲染同一圖像的四個副本,并使每幅圖像都稍稍偏離其他圖像,然后將這些圖像組合起來,從而使物體的邊緣變得稍微模糊,消除了可能對計算機生成圖像造成破壞的“鋸齒狀圖形”。這種技術還可用來生成動態(tài)模糊、模糊陰影和景深焦點模糊。運用這些效果可以生成外觀更圓滑、更真實的圖像,也就是圖形設計師所希望得到的圖像。Voodoo 5的設計目標是:在保持較高幀速率的同時實現(xiàn)全屏抗鋸齒效果。
在我們看到逼真的動態(tài)圖像穩(wěn)定、連貫地生成和呈現(xiàn)之前,計算機圖形技術仍然有一些路要走。與使用80列、25行的單色文本的日子相比,圖形效果已經(jīng)有了極大的改進。數(shù)百萬人得益于今天的技術在享受游戲和模擬的樂趣。新的三維處理器將更讓我們相信自己是在真正地探索另一個世界,體驗我們在現(xiàn)實生活中絕對不敢嘗試的事情。每隔六個月,PC圖形硬件便會經(jīng)歷一次重大進步,但軟件的改進相對較慢。顯然,像互聯(lián)網(wǎng)一樣,計算機圖形的魅力與日俱增,并越來越有可能成為電視的替代品。
讓我們再回到剛才那幅球的圖片上。您該如何進行區(qū)分呢?圖像A是一個由計算機生成的球。圖像B是一幅照片,顯示的是人行道上的一個現(xiàn)實中的球。要將二者區(qū)分開來還真不容易,對吧?
評論
查看更多