譚世民
摘 要 現在計算機技術突破方向是通過建立知識圖譜與事物組合圖譜,試圖將現實世界的景象與知識組織起來。而近年來,隨著3D游戲和3D電影的推廣,三維圖形已經成為計算機迷眼中的又一個熱點。3D世界到底是怎樣神奇?就讓我們來一探究竟吧。
關鍵字 計算機技術 3D世界 圖形處理。
中圖分類號:TP3 文獻標識碼:A
0引言
為真正掌握3D圖形,必須先打好一個牢固的基礎。顯然,最合理的起點就是計算機圖形的基本理論。對每幅計算機圖像來說,它的最小構成元素都是像素(Pixel)。一個像素由三個顏色組件構成:紅色、綠色和藍色。處理器計算出屏幕上每個像素的三種顏色值,然后以數字形式保存到一種特殊類型的本地內存(即顯示內存)中。之所以要用顯示內存保存視頻信息,是因為它同時連接了CPU和圖形控制器。需要的時候,顯示內存中的信息被“推”至圖形控制器。圖形控制器取得數字形式的信息,并將其轉換成波形信號,決定三個電子槍的電壓。電子槍三個一組,分別負責一個顏色組件。正如早先指出的那樣,電子槍發射強度是由輸入的電壓決定的。電子束擊中熒屏背面,那里均勻涂抹著大量熒光體。每一像素由三個熒光體構成,分別能發出紅光、綠光及藍光。這三種顏色我們稱之為三原色。將不同強度的紅、綠、藍色組合在一起,我們可以得到大自然中的任何一種顏色。
1真彩色
之所以叫這個名字,是由于任意兩種顏色之間的過渡非常平滑,接近自然彩色。真彩色可用24位二進制數表示(即1670萬色)。通常,這24位在每個顏色組件中均勻分布,即每一原色獲得8位。因此,每個原色可有2的8次方即256種變化,與真彩相比,低一級的是高彩或16位彩色,它能產生65536種不同的顏色。目前32位彩色也比較常見,它可產生幾十億種顏色。不幸的是,產生這些顏色的熒光體不可能一直發光,必須不停地刷新或重畫。電子槍必須周期性掃描屏幕。若掃描速度不夠快,屏幕就會產生閃爍。為緩解這種閃爍,必須增大刷新頻率。通常每秒刷新60-70次才能得到平滑、穩定的顯示。隨著分辨率的增大,屏幕刷新會變得越來越困難,因為這意味著需要更高的帶寬。分辨率是顯示器的一個重要指標,它表示了同屏顯示的顏色及像素數量和屏幕的(對角)幾何尺寸。像素數量通常用下述形式表示:每水平掃描行的像素酌看怪鄙枇械南袼???
2 3D圖形流水線
3D圖形其實并不難想象,因為我們就生活在一個3D現實世界里。自計算機能準確表達3D圖像以來,至今已過去了大約30年。然而,對更逼真和更自然圖像的渴求從來就沒有間斷過。為達到對圖像擬真度的要求,必須在上色、調勻紋理表面以及精細照明效果上下功夫。為繪制出逼真的3D物件,場景中的每張圖都必須在“3D流水線”上完整地走一遭。
在3D圖形流水線中,最主要兩個階段是幾何與光柵處理。幾何處理階段會完成所有計算。在接下去的光柵處理階段,則根據計算結果產生實際的屏幕顯示。
在幾何處理階段進行的計算可分為四類:鑲嵌(Tessellation)、轉換Transformation)、照明(Lighting)以及設置(Setup)。3D物件進入流水線處理之前,必須先定義成坐標數據的形式,或采用數學公式表達?!拌偳丁钡哪康木褪菍⑦@些坐標數據轉換成多邊形。第二步是“轉換”,轉換是物件的一種特殊處理方法。我們可旋轉、位移以及縮放一個物件。“照明”是幾何處理最復雜的工序。每個頂點的燈光效果都由一個照明公式決定。在大多數現實環境中,不同的光源會嚴重影響真實的含義。在3D圖形環境中,光源使物件顯得更加真實?!霸O置”過程無疑是非常關鍵的,它實現了3D數據向2D數據的轉換。
光柵處理劃分為四個基本類別——可見性(Visibility)、紋理貼圖(Texture mapping)、著色(Shading)以及平滑處理(Smoothing)。“可見性”的定義是光柵處理的一道主要工序??梢娦詻Q定了哪些物件或物件的哪些部分可在屏幕上看見。另一道關鍵的工序是“紋理貼圖”,它的原理非常簡單,就是將紋理或材質粘貼到3D物件表面。“著色”是指在圖像中精確展現出光影效果。最后一道工序是“平滑處理”,在這道工序中,所有斑駁或不自然的外觀都會被消除。
3小結
流水線工作量的分配每個計算機用戶的目標都是盡可能發揮出機器的潛力,這正是進行3D圖形處理時經常需要分配工作量的原因。目前3D圖形處理領域非常不穩定,技術經常在變化,新的記錄不斷被打破。因此,每道工序的工作量也發生著戲劇性的變化。盡管幾何處理是計算密集的一個階段,但在整條圖形處理流水線中,對帶寬最敏感的還是光柵處理階段。所以,為充分發揮每個子系統的能力,可采用幾種技術分配3D圖形處理的工作量。目前最新的趨勢是將幾何處理分配給CPU進行,而光柵處理則分配給圖形加速器,CPU可以很好地完成幾何處理。
參考文獻
[1] 蘇小紅.計算機圖形學實用教程.人民郵電出版社[J],2012.
[2] 王瓊華.3D顯示技術與器件.科學出版社[J],2010.