本頁使用了標題或全文手工轉換

彩現

維基百科,自由的百科全書
跳至導覽 跳至搜尋
利用POV-Ray 3.6所建立的一幅圖像。圖中突出表現了玻璃器皿以及液體等的質感

彩現(英語:render,或稱為算繪渲染)在電腦繪圖中,是指以軟體模型生成圖像的過程。模型是用語言或者資料結構進行嚴格定義的三維物體或虛擬場景的描述,它包括幾何、視點、紋理照明陰影等資訊。圖像是數位影像或者點陣圖圖像。彩現用於描述:計算影片編輯軟體中的效果,以生成最終影片的輸出過程。

彩現是3D電腦圖形學中的最重要的研究課題之一,並且在實踐領域它與其它技術密切相關。在圖形管線中,彩現是最後一項重要步驟,通過它得到模型與動畫最終顯示效果。自從二十世紀七十年代以來,隨著電腦圖形的不斷複雜化,彩現也成為一項越來越重要的技術。

彩現的應用領域包含:電腦與電動遊戲類比電影或者電視特效以及視覺化設計,每一種應用都是特性與技術的綜合考慮。作為產品來看,現在已經有各種不同的彩現工具產品,有些整合到更大的建模或者動畫包中,有些是獨立產品,有些是開放原始碼的產品。從內部來看,彩現工具都是根據各種學科理論,經過仔細設計的程式,其中有:光學視覺感知數學以及軟體開發

3D電腦圖形的預彩現(Pre-renderingOffline rendering)或者即時彩現(Real-time renderingOnline rendering)的速度都非常慢。預彩現的計算強度很大,需要大量的伺服器運算完成,通常被用於電影製作;即時彩現經常用於三維電動遊戲,通常透過圖形處理器GPU)完成這個過程。

使用[編輯]

圖像初步建立(通常使用網格骨架構建,建模3D modeling))之後,就要進行彩現了。彩現將會在上面添加點陣圖紋理或者程式紋理、照明、凸凹紋理對映以及相對於其它物體的位置。得到的結果就是消費者或者觀察者所能看到的完整圖像。

對於電影動畫來說,需要彩現幾幅或幾影格圖像,並且將這些圖像在動畫製作程式中將它們連結在一起。大多數的三維圖像編輯程式都能夠完成這項工作。

特性[編輯]

彩現的圖像有許多顯著的特性,彩現研究的領域,也主要集中在尋找:高效類比這些特性的方法。有些特性只與特定的演算法有關,有些卻與多個演算法相關。

  • 濃淡處理—表面顏色與亮度隨光照的變化
  • 紋理對映—在表面生成細節的方法
  • 凸凹紋理對映—在表面類比小凸凹的方法
  • 距離模糊—光照穿過不清澈的大氣時的模糊
  • 陰影—阻擋光照的效果
  • 柔和陰影—類比光的衍射下的陰影
  • 反射—鏡子或者非常光滑的反射
  • 透明—固體明顯允許光線穿過
  • 半透明—光線通過固體高度散射
  • 折射—與透明相關的光線彎曲
  • 間接照明—表面由其它表面反射的光照亮,而非光源直接照亮
  • 焦散(caustics)—間接照明的一種形式,光滑物體反射的光線或者通過透明物體生成的聚焦光線在其它物體上形成照亮區域
  • 景深—當物體在焦距物體前後太遠時出現模糊
  • 運動模糊—由於物體高速運動或者照相機運動而導致的物體模糊
  • 真實感彩現—看起來較像現實世界的三維彩現
  • 非真實感彩現—用藝術風格彩現場景,使它看起來象油畫或者素描

技術[編輯]

研究人員已經研究出了許多彩現演算法,彩現軟體可以使用多種不同的技術,以生成最終圖像。

對場景中的每束光線進行跟蹤不太現實,並且需要耗費大得驚人的時間。如果沒有採樣進行很好的約束,即使是一部分光線的跟蹤以生成圖像也需要非常大量的時間。

所以,大致可以分為四類的更加高效的光線傳輸模型技術就應運而生。第一類是柵格化,包括掃描線彩現,這種方法考慮場景中的物體並將它們投影一幅圖像,但是缺乏一些進階的視覺效果;第二類是光線投射,將場景從不同視角觀察,只根據幾何與反射強度的基本光學原理計算觀察到的圖像,也可能使用蒙特·卡羅方法減少人為噪聲;第三類是輻射著色,使用有限元分析方法類比光線在表面的散射;第四類是光線跟蹤,類似於光線投射,但是使用了更加先進的光學類比方法,並且通常使用蒙特·卡羅方法以實現更加真實的結果,但是這樣做的代價通常是速度的大幅度降低。

大多數進階軟體使用多種技術的組合,以在合理的開銷範圍內,實現足夠好的結果。

掃描線彩現與柵格化[編輯]

圖像的高層次表示有必要包含與像素不同的元素,這些元素稱為基元。例如,在示意圖中線段與曲線是基元;在圖形化使用者介面中,窗口與按鈕是基元;在三維彩現中,三角形與空間多邊形是基元。

在像素到像素彩現速度很慢無法實現的任務中,基元到基元的實現方法可能就能派上用場。在這種方法中,迴圈遍歷每個基元確定它將影響圖像中的哪個像素,然後相應地修改那個像素。這種方法稱為柵格化,這是當今所有圖形卡都用的彩現方法。

柵格化經常要比像素到像素的彩現速度快。首先,圖像中的大塊區域可能根本沒有基元,柵格化就可以忽略這些區域,而像素到像素的彩現方法卻必須遍歷這些區域;其次,柵格化可以提高快取一致性並且可以利用圖像中同一個基元占據的像素通常是連續的這樣一個事實從而減少冗餘操作。正是由於這些原因,柵格化通常是需要互動式彩現的場合選擇的一種方法,但是像素到像素的實現方法經常可以生成更高品質的圖像,同時由於沒有柵格化那麼多的前提條件所以更加通用。

柵格化有兩種主要的形式,不僅整個表面或者基元進行彩現,而且表面頂點全部進行彩現,以及用相鄰頂點簡單顏色混合來彩現位於頂點之間的表面上的像素,由於這種方法不使用複雜的紋理實現圖像連續,所以這種方法已經取代了較舊的柵格化方法,並且由於簡單的紋理可以節省記憶體空間,所以通過使用圖形卡的已經繁重的濃淡效果處理功能仍然可以得到更好的效能。舊的方法如果不使用複雜的紋理就會在圖像逐個表面覆蓋紋理的時候形成塊狀效應,並且由於像素之間沒有顏色漸變所以表面看起來也不光滑。有些情況下設計人員在某些表面上使用柵格化的方法,而根據其它表面相對於其它相交表面的角度使用其它的方法,這樣一方面可以提高處理速度,另外也仍然可以保證整體效果。

光線投射[編輯]

光線投射主要用於如三維電腦遊戲以及動畫等即時類比場合,在這些場合下,細節並不太重要或者是通過人為製造細節可以得到更好的計算效率。通常在需要多影格圖像生成動畫時就會出現這種情況。如果不使用其它的技巧,這種方法得到的物體表面通常看起來比較扁平,就好像場景中的物體都是經過光滑處理的糙面。

建好的幾何模型從外部觀察點逐點、逐線進行分析,就如同是從觀察點投射出光線一樣。當光線與物體交叉的時候,交叉點的顏色可以用幾種不同的方法來計算。其中最簡單的方法是用交叉點處物體的顏色表示該點的實際顏色;也可以用紋理對映的方法來確定;一種更加複雜的方法是僅僅根據照明因數變更顏色值,而無需考慮與類比光源的關係。為了減少人為誤差,可以對多條相鄰方向的光線進行平均。

另外也可以對光的特性進行大致的類比:簡單計算從物體到觀察點的光線。另外的一些計算涉及到從光源到物體的入射角,以及根據光源的強度計算像素的亮度值。此外還有一些類比使用輻射著色演算法算繪的照明結果,或者使用這兩種資訊的組合。

輻射著色[編輯]

輻射著色是類比反射光線如何反射到其它表面以及如何照亮周圍環境的方法。這種方法可以生成較為真實的濃淡效果,並且更加易於捕捉室內場景的環境光。一個經典的例子就是牆角處陰影的樣子。

這種類比的光學基礎是特定物體表面某一點的漫反射的光線散布在在很大的方向範圍內並且會照亮周圍的環境。

各種類比技術的複雜性可能會有所不同。許多彩現方法所用的輻射著色模型都非常原始,它們只是簡單地根據環境因數變化照亮整個場景。但是當進階的輻射著色與高品質的光線跟蹤演算法組合在一起使用的時候,它們能夠生成相當真實的圖像,尤其是對於室內場景更是這樣。

在進階的輻射著色類比中,遞迴的有限元分析演算法不斷地將光線在模型表面之間來回反射,直到達到一定的遞迴條件為止。這樣一個表面的色彩就會影響其它相鄰表面的色彩,反之亦然。整個模型(有時也包括空白空間)的照明結果儲存起來,在光線投射或者光線跟蹤模型中作為輸入使用。

由於這項技術的遞迴特性,所以對於複雜物體的類比速度非常緩慢。一些先進的輻射著色計算方法可能只計算房間中從牆面、地板與房頂反射的環境光,而並不計算複雜物體反光對於輻射著色的影響,或者在輻射著色計算中使用使用同樣尺寸及紋理的簡單物體取代複雜物體。

如果場景中需要重排的輻射著色物體很少,那麼可以在多影格畫面中重複使用同樣的輻射著色資料,這樣就使得輻射著色一方面可以改進光線投射中的扁平效果,另外一方面每影格的彩現時間也不會受到很大的影響。

正因為如此,輻射著色已經成為領先的即時彩現方法,並且已經用於最近大量著名的長篇三維動畫電影從頭到尾的製作過程。

光線跟蹤[編輯]

光線跟蹤是與掃描線彩現和光線投射開發的同樣技術的延伸,同那些方法一樣,它可以很好地處理複雜物體,並且也可以用數學方法描述物體。與掃描線彩現和光線投射不同的是,光線跟蹤幾乎是一項蒙特·卡羅方法,蒙特·卡羅方法是一項基於從模型中隨機得到的一組採樣進行平均的技術。

在這種方法中,採樣是假想的從場景物體發出與觀察點相交的光線。在重點考慮陰影、折射與反射等需要複雜精確彩現的場合這種方法就可以派上用場。

在最終要求產品品質彩現效果的光線跟蹤中,通常每個像素都要多條光線,並且不僅僅跟蹤到第一次相交,而是需要按照「入射角等於反射角」這樣的光學定律以及更加進階的處理折射與粗糙表面反射的定律處理多次連續反射。

一旦光線遇到光源或者更可能出現的是光線反射次數已經達到設定的限制,那麼最終點的表面照明就通過上面的方法確定下來,並且經過多次反射發生的變化也可以用來估計在觀察點看到的亮度。每個採樣點、每個像素都要重複這個過程。

在有些場合中每個交點可能生成多條光線。

作為一種非常有效的方法,光線跟蹤的即時處理速度太慢,直到最近也沒有在任何要求品質的短片電影中獲得應用,儘管它已經開始在一些特殊效果要求的場合開始使用,如在需要高品質甚至是Photorealistic的指令碼片斷的廣告中開始使用。

但是,降低不需要高品質細節部分的或者與光線跟蹤特性無關部分的計算量的努力已經使得光線跟蹤的應用更加廣泛。目前已經出現了一些至少已經處於原型階段硬體加速的光線跟蹤裝置,在一些遊戲演示中也有即時軟體或者硬體光線跟蹤的應用。

最佳化[編輯]

藝術家構建場景的時候所用的最佳化方法[編輯]

由於所需計算量非常大,一項逐步進行的工作的細節彩現通常對應於當時工作的進度。因此,在建模的開始階段可以使用線框模型或者光線投射進行處理,即使是最終的目標結果是要使用輻射著色的光線跟蹤也可以這麼做。另外也經常只對一部分進行高品質的彩現,而對於當前工作無關緊要的部分剔除出去。

即時彩現中常用的最佳化方法[編輯]

對於即時彩現來說,適當的做法是簡化一個或者多個共同的近似,將關鍵場景調到正確的參數,並且要將參數調整到能夠獲得最好的效果。

另外還有些一些不太出名的彩現方法,如球諧函式。這些技術由於速度較慢、缺少實用性或者僅僅因為它們還不太完善所以不太出名,或許其中的某些技術能夠提供一些新的解決方案。

採樣與濾波[編輯]

不管系統採用哪種彩現方法,都必須解決採樣問題。本質上來講,彩現過程試圖用有限數目的像素將圖像空間的連續函式表現成顏色。根據採樣定理的結論,掃描頻率必須是點速(dot rate)的兩倍,點速與圖像解析度成正比。用簡單的話來說就是圖像不能顯示小於一個像素的細節。

如果使用一個未經驗證的彩現演算法,那麼圖像函式中的高頻成分將會導致最終圖像中出現難看的混疊現象。混疊現象通常表現為鋸齒圖或者是可見像素柵格處的鋸齒邊。為了去除混疊現象,所有的彩現演算法如果想要生成好看的圖像的話都必須對圖像函式進行濾波以去除高頻成分,這個過程叫作抗混疊

電影彩現[編輯]

電影彩現通常在一個緊密相連的電腦組成的網路彩現叢集(render farm)。

當今用於電影製作三維圖像描述發展水平代表是Pixar設計的RenderMan 場景描述語言。它與VRML這樣較簡單的三維檔案格式或者是經過修改專門用於三維硬體加速的OpenGL以及DirectX應用程式編程介面Application programming interface)有所不同。

電影彩現軟體包括:

理論基礎[編輯]

真實感彩現的實現都是某種程度的物理仿真 —一些計算都是真實物理過程的類比或抽象。

「基於物理」這個術語表示是使用在彩現領域之外也被廣泛接受的物理模型或者近似,在彩現領域逐漸建立起了相關的特殊技術。

這些物理基本概念都相當直白,但是卻難於以少數的計算,得到精確且完整的結果;一個非常優秀的演算法或者實現方法對於更加通用的彩現目的來說卻可能難以理解。為了滿足健壯、精確及實用的要求,實現方法都必須是多項不同技術的複雜組合。

彩現研究工作主要集中在科學模型的改進及其高效應用。

彩現方程[編輯]

彩現方程是彩現中的一個核心理論概念,它是彩現不可感知方面的最抽象的正式表示,所有更加完善的演算法都可以看作這個方程特殊形式的解。

含義是:在一個特定的位置與方向,出射光Lo)是發射光Le與反射光之和。反射光是所有方向入射光之和Li乘以表面反射率及入射角。通過交叉點,這個方程將入射光與出射光聯絡在一起,它代表了場景中完整的光線傳輸即光線的所有運動。

雙向反射分布函式[編輯]

雙向反射分布函式(BRDF)描述了一個光線與物體表面相互作用的簡單模型:

光線相互作用通常用更加簡單的模型進行近似:漫反射與鏡面反射。這兩種都可以是雙向反射函式。

幾何光學[編輯]

實際上彩現是完全關於光物理粒子性方面研究的技術,即幾何光學。將光在本質上看作跳動的光子這種簡化是合適的:在大多數場合下,光的波動性是可以忽略的,並且也非常難於類比。著名的光波動現象有衍射,如CD以及DVD上的顏色,以及如LCD上看到的極化現象。如果這兩種類型的效果,通常對反射模型進行針對表現效果的調整。

視覺[編輯]

儘管很少受到關注,但是對於人類視覺的理解對於彩現來說非常重要,這是因為圖像顯示與人類視覺都有一定的約束範圍。彩現工具幾乎可以類比無限範圍的亮度與顏色,但是電影、顯示器等當今的顯示裝置都不能處理這麼大的範圍,通常都需要壓縮甚至捨棄一部分資訊。人類視覺也有類似的限制,因此不需要為了真實感而使用很大範圍的圖像。視覺研究可以幫助解決將圖像用顯示器顯示的問題,以及建議彩現中使用哪些捷徑,一些細微的資訊是無法感知的。這個相關的主題是色調對映

在彩現中使用的數學基礎有:線性代數微積分數值分析數位訊號處理以及蒙特·卡羅方法

重要思想出現的年代表[編輯]

  • 1970 掃描線演算法 (Bouknight, W. J. (1970). A procedure for generation of three-dimensional half-tone computer graphics presentations. Communications of the ACM)
  • 1971 Gouraud shading (Gouraud, H. (1971). Computer display of curved surfaces. IEEE Transactions on Computers 20 (6), 623–629.)
  • 1974 紋理對映 (Catmull, E. (1974). A subdivision algorithm for computer display of curved surfaces. PhD thesis, University of Utah.)
  • 1974 深度緩衝 (Catmull, E. (1974). A subdivision algorithm for computer display of curved surfaces. PhD thesis)
  • 1975 Phong shading (Phong, B-T. (1975). Illumination for computer generated pictures. Communications of the ACM 18 (6), 311–316.)
  • 1976 環境對映(Blinn, J.F., Newell, M.E.(1976). Texture and reflection in computer generated images. Communications of the ACM 19, 542–546.)
  • 1977 陰影體 (Crow, F.C. (1977). Shadow algorithms for computer graphics. Computer Graphics(Proceedings of SIGGRAPH 1977)11 (2), 242–248.)
  • 1978 陰影緩衝 (Williams, L. (1978). Casting curved shadows on curved surfaces. Computer Graphics(Proceedings of SIGGRAPH 1978)12 (3), 270–274.)
  • 1978 凸凹紋理對映 (Blinn, J.F. (1978). Simulation of wrinkled surfaces. Computer Graphics(Proceedings of SIGGRAPH 1978)12 (3), 286–292.)
  • 1980 BSP trees (Fuchs, H. Kedem, Z.M. Naylor, B.F. (1980). On visible surface generation by a priori tree structures. Computer Graphics(Proceedings of SIGGRAPH 1980)14 (3), 124–133.)
  • 1980 光線跟蹤 (Whitted, T. (1980). An improved illumination model for shaded display. Communications of the ACM 23 (6), 343–349.)
  • 1981 Cook shader (Cook, R.L. Torrance, K.E. (1981). A reflectance model for computer graphics. Computer Graphics(Proceedings of SIGGRAPH 1981)15 (3), 307–316.)
  • 1983 Mipmaps (Williams, L. (1983). Pyramidal parametrics. Computer Graphics(Proceedings of SIGGRAPH 1983)17 (3), 1–11.)
  • 1984 八元樹光線跟蹤 (Glassner, A.S. (1984). Space subdivision for fast ray tracing. IEEE Computer Graphics & Applications 4 (10), 15–22.)
  • 1984 Alpha compositing (Porter, T. Duff, T. (1984). Compositing digital images. Computer Graphics(Proceedings of SIGGRAPH 1984)18 (3), 253–259.)
  • 1984 分散式光線跟蹤 (Cook, R.L. Porter, T. Carpenter, L. (1984). Distributed ray tracing. Computer Graphics(Proceedings of SIGGRAPH 1984)18 (3), 137–145.)
  • 1984 輻射著色 (Goral, C. Torrance, K.E. Greenberg, D.P. Battaile, B. (1984). Modelling the interaction of light between diffuse surfaces. Computer Graphics(Proceedings of SIGGRAPH 1984)18 (3), 213–222.)
  • 1985 半立方輻射著色 (Cohen, M.F. Greenberg, D.P. (1985). The hemi-cube: a radiosity solution for complex environments. Computer Graphics(Proceedings of SIGGRAPH 1985)19 (3), 31–40.)
  • 1986 光源跟蹤 (Arvo, J. (1986). Backward ray tracing. SIGGRAPH 1986 Developments in Ray Tracing course notes)
  • 1986 彩現方程 (Kajiya, J.T. (1986). The rendering equation. Computer Graphics(Proceedings of SIGGRAPH 1986)20 (4), 143–150.)
  • 1987 Reyes algorithm (Cook, R.L. Carpenter, L. Catmull, E. (1987). The reyes image rendering architecture. Computer Graphics(Proceedings of SIGGRAPH 1987)21 (4), 95–102.)
  • 1991 分級輻射著色 (Hanrahan, P. Salzman, D. Aupperle, L. (1991). A rapid hierarchical radiosity algorithm. Computer Graphics(Proceedings of SIGGRAPH 1991)25 (4), 197–206.)
  • 1993 色調對映 (Tumblin, J. Rushmeier, H.E. (1993). Tone reproduction for realistic computer generated images. IEEE Computer Graphics & Applications 13 (6), 42–48.)
  • 1993 Subsurface scattering (Hanrahan, P. Krueger, W. (1993). Reflection from layered surfaces due to subsurface scattering. Computer Graphics(Proceedings of SIGGRAPH 1993)27 (), 165–174.)
  • 1995 光子對映 (Jensen, H.J. Christensen, N.J. (1995). Photon maps in bidirectional monte carlo ray tracing of complex objects. Computers & Graphics 19 (2), 215–224.)

參見[編輯]

圖書資料[編輯]

外部連結[編輯]