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