標籤:
三維電腦圖形(3D Computer Graphics)是電腦和特殊三維軟體協助下創造的作品。一般來講,該術語可指代創造這些圖形的過程,或者三維電腦圖形技術的研究領域,及其相關技術。
三維電腦圖形和二維電腦圖形的不同之處在於電腦記憶體儲存了幾何資料的三維表示,用於計算和繪製最終的二維映像。
一般來講,為三維電腦圖形準備幾何資料的三維建模的藝術和雕塑及照相類似,而二維電腦圖形的藝術和繪畫相似。但是,三維電腦圖形依賴於很多二維電腦圖形的相同演算法。
電腦圖形軟體中,該區別有時很模糊:有些二維應用程式使用三維技術來達到特定效果,譬如燈光,而有些主要用於三維的應用程式採用二維的視覺技術。二維圖形可以看作三維圖形的子集。
技術
OpenGL和Direct三維是兩個用於產生即時圖象的流行的API。(即時表示圖象的產生在“真實的時間”中,或者說“隨時”)。很多現代顯卡提供了基於這些API的一定程度的硬體加速,經常使得複雜的三維圖象即時產生。但是,真正產生三維景象並不一定要使用其中的任何一個。
三維電腦圖形的建立
建立三維電腦圖形的過程可以順序分為三個基本階段:
建模
建模階段可以描述為“確定後面情境所要使用的對象的形狀”的過程。有很多建模技術,他們包括(但不僅僅是):
- 構造實體幾何
- NURBS建模
- 多邊形建模
- 細分曲面
- 隱函數曲面
建模過程可能也包括編輯物體表面或材料性質(例如,顏色,熒光度,漫射和鏡面反射分量—經常被叫做粗糙度和光潔度,反射特性,透明度或不透明度,或者折射指數),增加紋理,凹凸映射和其它特徵。
建模可能也包括各種和準備動畫的3D 模型相關的各種活動,有時在複雜的任務建模中,這將自己成為一個階段,稱為索具(rigging)。對象可能用一個‘‘骨架‘‘撐起來,一個物體的中央架構,它可以影響一個對象的形狀或運動。這個對動畫構造過程很有協助,骨架可以自動決定模型相關部分。參看正運動動畫和逆運動動畫。在索具階段,模型也可以給定特定的控制,使得運動的控制更為簡便和直觀,例如用於聲音嘴唇同步的面部表情控制和嘴形(音素)。 建模可以用以此為目的設計的程式(例如Lightwave建模軟體,Rhinoceros 三維,Moray),應用的模組(Shaper,三維 Studio Max的Lofter)或者某些情境描述語言(例如POV-Ray)。在有些情況,這些階段之間沒有嚴格的區別,在這些情況下,建模只是情境建立過程的一部分(例如Caligari trueSpace就屬於這種情況)。
三角剖分和網格
把物體的表示(例如球面的中點座標和它的表面上的一個點所表示的球面),轉換到一個(球面的)多邊形表示的過程,稱為剖分(tesselation)。該步驟用於基於多邊形的繪製,其中對象從象球面,圓錐面等等這樣的抽象的表示(“體素”),分解成為所謂“網格”,它是互相串連的三角形的網路。
三角網格(而不是正方形等形狀)比較流行,因為它們易於採用掃描線繪製進行繪製。
多邊形表示不是所有繪製技術都必須的,而在這些情況下,從抽象表示到繪製出的情境的轉換不包括剖分步驟。
情境布局設定
在渲染成圖象之前,模型必須放置在一個情境中。這定義了模型的位置和大小。
情境設定涉及安排一個情境內的虛擬物體,燈光,攝像機和其他實體,它將被用於製作一幅靜態畫面或一段動畫。
照明是情境布置中一個重要的方面。就象在實際情境布置的時候一樣,光照是最終作品的審美和視覺品質的關鍵因素之一。因而,它是一項很難掌握的藝術。光照因素可以對一個情境的氛圍和情緒反映作出重大貢獻,這是為攝影師和舞台照明師所熟悉的事實。
設定動畫
主條目:電腦動畫
動畫是指對模型隨時間的變化描述。常見的方法有設定主要畫面格,動作捕捉、骨骼動畫和逆運動學(ik)等 這些技術經常結合使用。
渲染
渲染是從準備的情境建立實際的二維景象或動畫的最後階段。這可以和現實世界中在布景完成後的照相或攝製情境的過程相比。
用於諸如遊戲或類比程式這樣的互動式媒體的渲染需要即時計算和顯示,速度約為20到120幀每秒。非互動式媒體(譬如錄象或電影),渲染的慢得多。非即時渲染使得有限的計算能力得以放大以獲得高品質的畫面。複雜情境的單幀的渲染速度可能從幾秒到一個小時或者更多。渲染完成的幀存貯在硬碟,然後可能轉錄到其它媒介,例如電影菲林或者光碟片。然後這些幀以高幀率播放,通常為24,25,或30幀每秒,以達成運動的假象。
最後的作品經常會需要達到真實感圖形品質,要達到這個目的,很多不同和專門的渲染技術被發展出來。這些技術的範圍包括相當非真實感的線框模型渲染技術,到基於多邊形的渲染,到更進階的技術,例如:掃描線渲染、光線跟蹤或者輻射著色。
渲染軟體可以類比例如鏡頭光暈、景深或者移動模糊這樣的視覺效果。這些技術試圖類比鏡頭和人眼的光學特性所造成的視覺現象。這些技術可以增加情境的真實程度,雖然該效果可能只是鏡頭的人造類比現象。
為類比其他自然發生的效應的各種技術被發展出來,例如光和不同形式的物質的相互作用。這些技術的例子包括粒子系統(它可以類比雨,煙,或者火),體採樣(用於類比霧,塵或者其它空間大氣效果),焦散效果(用於類比光被不均勻折射性質的表面所聚焦的現象,例如遊泳池底部的光的漣漪),還有次表面散射(subsurface scattering)(用於類比光在人的皮膚這樣的實體物件內部反射的現象)。
渲染過程計算上很昂貴,特別是所類比的物理過程複雜且多樣時。電腦的處理能力逐年上升,使得真實感渲染的品質漸進的提高。生產電腦動畫的電影製片廠可能用渲染農場(render farm)來進行及時的渲染。但是,硬體費用的下降使得在家用電腦系統上產生少量的三維動畫完全成為可能。
渲染器經常包含在三維軟體包中,但是有一些渲染系統作為流行三維應用程式的外掛程式使用。這些渲染系統包括Final-Render,Brazil r/s,V-Ray,Mental Ray,POV-Ray,和Pixar Renderman。
這些渲染程式的輸出經常用於最終電影情境的一小部分。很多材料的層次可以分別渲染,然後採用合成軟體整合到最終的畫面中。
反射和明暗模型
現代三維電腦圖形嚴重的依賴於一個簡化的反射模型稱為Phong反射模型,它和Phong明暗圖是完全不同的主題,不能混淆二者。
在光的折射中,有一個重要的概念稱為折射率。在多數三維編程實現中,該值“index of refraction”(折射率)通常簡寫為“IOR”。
平直著色的一個例子,三維繪成的敦刻爾克級主力艦
三維電腦圖形中流行的反射繪製技術包括:
- 平直著色(Flat shading):使用多邊形的法向量和位置以及光源的位置和強度對於物體的每一個多邊形給出一個明暗值的技術。
- Gouraud著色:H。Gouraud於1971年發明,一個快速的基於頂點和光源的關係的著色技術,用於類比光滑著色的曲面。
- 紋理映射:通過把映像(紋理)映射到多邊形上來類比曲面的大量細節的技術。
- Phong著色:由Bui Tuong Phong發明,用於類比光滑著色曲面的鏡面反射高光效果。
- 凸凹紋理映射:由Jim Blinn發明,用法向擾動技術類比帶褶皺的曲面。
- Cel著色:用於類比手繪動畫的觀感的一種技術。
三維圖形應用程式介面(API)
三維圖形已經非常流行,特別是在電子遊戲中,這使得專門化的應用程式介面(API)被建立出來用於簡化電腦圖形產生的各個階段的處理。這些API對於電腦圖形硬體廠商也是極為重要的,因為他們提供給程式員一種使用硬體的抽象方式,而依然能夠利用那個顯卡的特定硬體的長處。
這些三維電腦圖形的API頗為流行:
- OpenGL和OpenGL著色語言
- OpenGL ES嵌入式裝置的三維API
- Direct三維(DirectX的子集)
- RenderMan
- RenderWare
- Feekood
也有一些高層的三維情境圖API,他們提供在底層繪製API之上的附加功能。處於活躍的發展中的這類程式庫包括:
- QSDK
- Quesa
- Java 三維
- JSR 184(M3G)
- NVidia Scene Graph
- OpenSceneGraph
- OpenSG
- Wooyoo
- OGRE
- Irrlicht
三維電腦圖形