1. 程式人生 > >計算機圖形學導論

計算機圖形學導論

一.計算機圖形學概念

1.1什麼是計算機圖形學?(Computer Graphics)

關於計算機圖形學的定義眾說紛紜。

IEEE 對計算機圖形學的定義為:Computer graphicsis the art or science of producing graphical images with the aid of computer。

國際標準化組織 ISO 將計算機圖形學定義為:計算機圖形學是一門研究通過計算機將資料轉換成圖形,並在專門顯示裝置上顯示的原理方法和技術的學科。它是建立在傳統的圖學理論、應用數學及電腦科學基礎上的一門學科。

總而言之計算機圖形學是研究怎樣利用計算機來顯示、生成和處理圖形的原理、方法和技術的一門學科,這裡的圖形是指三維圖形的處理。

1.2圖形和影象

計算機圖形學(computer graphics)的基本含義是使用計算機通過演算法和程式在顯示裝置上構造圖形。圖形是人們通過計算機設計和構造出來的,不是通過攝像機、掃描器等裝置輸入的影象。這裡的圖形可以是現實中存在的圖形,也可以是完全虛擬構造的圖形。以向量圖的形式呈現,更強調場景的幾何表示,記錄圖形的形狀引數與屬性引數。例如,工程圖紙,其最基本的圖形單元是點、線、圓/弧等,其資訊包含圖元的幾何資訊與屬性資訊(顏色、線型、線寬等顯式屬性和層次等隱式屬性)。

影象處理(image processing)則是研究影象的分析處理過程,影象處理研究的是影象增加、模式識別、景物分析等,研究物件一般為二維影象。影象以點陣圖形式呈現,並記錄每個點的灰度或色彩。例如,照片、掃描圖片和由計算機產生的真實感和非真實感圖·形等, 最基本的影象單元(pels,picture elements)是點—畫素(pixel),其資訊實際上是點與它的屬性資訊(顏色、灰度、亮度等)。

1.3計算機圖形學發展

  • 20 世紀 50 年代:1946 年 2 月 14 日,世界上第一臺電子計算機ENIAC在美國賓夕法尼亞大學問世,1950 年第一臺圖形顯示器誕生於麻省理工學院,從此計算機具有了圖象顯示功能,也開啟了圖形顯示與計算機技術聯絡的橋樑。
  • 20 世紀 60 年代:1962 年美國 MIT 林肯實驗室的 Ivan E.Sutherland 發表了一篇題為“sketchpad:一個人機互動通訊的圖形系統”的博士論文,首次使用了“Computer Graphics” 這一概念,證明了互動式計算機圖形學是一個可行的、有應用價值的研究領域,從而確立了計算機圖形學正式成為一個獨立學科的分支。隨著光柵顯示器的誕生,對光柵圖形學演算法的研究迅速地發展壯大起來,大量基本概念以及相應的演算法應運而生。
  • 20 世紀 70 年代:圖形學在這一時期進入了興盛期,光柵圖形學演算法迅速發展,區域填充、裁剪、消隱等概念及其相應演算法紛紛被提出,實用的 CAD 圖形系統也開始出現。除此之外,真實感圖形學和實體造型技術的產生也是 70 年代計算機圖形學的兩個重要進展。
  • 20 世紀 80 年代以後:出現了帶有光柵掃描顯示器的微型計算機和圖形工作站,極大的推動了計算機圖形學的發展,如 Machintosh、IBM 公司的 PC 及其相容機,Apollp、Sun 工作站等。隨著奔騰 III 和奔騰 IV 系列 CPU 的出現,計算機圖形軟體功能一開始部分地由硬體實現。高效能顯示卡和液晶顯示屏的使用,高傳輸率大容量硬碟的出現,特別是 Internet 的普及使得微型計算機和圖形工作站在運算速度、圖形顯示細節上的差距越來越小,這些都為圖形學的飛速發展奠定了物質基礎。
  • 20 世紀 90 年代以後:微機和軟體系統的普及使得圖形學的應用領域日益廣泛,計算機圖形學朝著標準化、整合化和智慧化的方向發展,多媒體、人工智慧、計算機視覺化、虛擬現實等分支蓬勃發展,三維造型也獲得了長足發展。ISO 公佈的圖形標準越來越精細,更加成熟。這是存在著一些事實上的標準,如 SGI 公司開發的 OpenGL 開放式三維圖形標準,微軟公司為PC 遊戲開發的應用程式介面標準DirectX 等,Adobe 公司 Postscript 等,均朝著開放式、高效率的方向發展。

二.計算機圖形學總體框架

數學基礎:主要包括一些基本的演算法,例如向量與幾何的變換,如幾何建模時的三維空間變換、繪製時的三維到二維的投影變換和二維空間的視窗和檢視變換等。

建模:三維和二維空間的各種幾何模型,有解析式表達的簡單形體,也有隱函式表達的複雜曲線等。建模的主要工作是幾何計算。

渲染:或者叫做繪製,指的是模型的視覺實現過程,計算機圖形學的光照、紋理等理論和演算法都需要對模型進行處理,其中也要用到大量的幾何計算。

互動技術:如今的互動式圖形學已經可以提供圖形通訊手段,成為圖形互動的主要工具。幾何計算貫穿於以上各個過程之中,是計算機圖形學的基礎。在圖形學中那些看上去是“繪製”的內容,本質上仍是幾何計算的問題。例如隱藏線、隱藏面的消除以及具有光照效果的真實感圖形顯示雖是提升圖形顯示效果的手段,但其主要的工作恰是幾何計算。Gourand 插值模型(通過對多邊形頂點顏色進行線性插值來繪製其內部各點)和 Phong 插值模型(對多邊形頂點的法線方向進行插值以產生中間各點的法線方向)的實質均是幾何插值問題;光線跟蹤的工作和時間花費主要是幾何計算-光線與景物的求交計算及交點處景物表面的法向、反射光線與折射光線的方向計算等。

2.1 建模

沒有模型,圖形就無從談起,建模是計算機圖形學各項工作的基礎和前提,建模技術的核心是根據研究物件的三維空間資訊構造其立體模型,尤其是幾何模型,並利用相關建模軟體或程式語言生成該模型的圖形顯示,然後對其進行處理。目前,物體的三維幾何模型就其複雜程度來說可以分為三類:線模型、面模型和體模型。對三維建模技術的研究基本上都是針對三維面元模型和體元模型來展開的。
 

2.2 渲染

計算機圖形學的一項主要工作是將計算機中抽象的模型轉換為人們直觀可見、可以形象理解的圖形。它綜合利用數學、物理學、計算機等知識,將模型的形狀、物理特性(如材料的折射率、反射率、物體發光溫度等,機械強度、材料密度等對運動模擬的影響等),以及物體間的相對位置、遮擋關係等性質在計算機螢幕上模擬出來,是一個將“幾何”演繹到畫面上的再創造過程,這就是渲染,也叫繪製。

2.2.1什麼是渲染?

當需要把模型或者場景輸出成影象檔案、視訊訊號或者電影膠片時就需要用到渲染

(Render)。渲染是指軟體由模型生成影象的過程。模型是用語言或者資料結構進行嚴格定義的三維物體或虛擬場景,它包括幾何、視點、紋理、照明等資訊。影象是數字影象或者點陣圖影象。除去後期製作,渲染是計算機圖形處理的最後一道工序,通過它得到模型與動畫的最終顯示效果。實現渲染依靠多種軟體,如各種 CG 軟體自帶渲染引擎、RenderMan 等。

隨著計算機圖形學的不斷深入發展,渲染的應用領域越來越廣泛:計算機與視訊遊戲、模擬、電影或者電視特效以及視覺化設計。作為產品來看,現在已經有各種不同的渲染工具產品,有些整合到更大的建模或者動畫工具中,有些是獨立產品,有些是開放原始碼的產品。從內部來看,渲染工具都經過了仔細的設計,其理論基礎是光學、視覺感知、數學以及軟體開發等各種科學理論。

2.2.2渲染技術有哪些?

 

掃描線渲染與柵格化:掃描線渲染是一行一行進行的一項技術和演算法集。所有待渲染的多邊形首先按照頂點 y 座標出現的順序排序,然後使用掃描線與列表中前面多邊形的交點計算影象的每行或者每條掃描線,在活動掃描線逐步沿影象向下計算的時候更新列表。這種方法的一個優點是沒有必要將主記憶體中的所有頂點都轉到工作記憶體,只有與當前掃描線相交邊界的約束頂點才需要讀到工作記憶體,並且每個定點資料只需讀取一次。主記憶體的速度通常遠遠低於中央處理單元或者快取記憶體,避免多次訪問主記憶體中的頂點資料,就可以大幅度地提升運算速度。

柵格化

柵格化又叫光柵化,是將幾何資料經過一系列變換後最終轉換為畫素,從而呈現在顯示裝置上的過程。柵格化將頂點資料轉換為片元,片元中的每一個元素對應於幀緩衝區中的一個畫素。如下圖。

柵格化的本質

黃琦:計算機圖形學-光柵渲染概述​zhuanlan.zhihu.com

光線投射:從不同視角觀察場景,並根據幾何與反射強度的基本光學原理計算觀察到的影象,這就是光線投射。光線投射演算法的基本思想是從視平面每個像素髮出一條光線,穿過體資料,基於最基本的光線吸收和發射模型,沿著光線方向對顏色和阻光度進行積累。當光線與物體交叉的時候,交叉點的顏色可以用幾種不同的方法來計算。其中最簡單的方法是用交叉點處物體的顏色表示該點的實際顏色;也可以用紋理對映的方法來確定;一種更加複雜的方法是依據區域性光照模型進行計算。為了減少人為誤差,可以對多條相鄰方向的光線進行平均。另外的一些計算涉及到從光源到物體的入射角,以及根據光源的強度計算畫素的亮度值。

光線投射演算法從視點發出一組光線,對光線經過的三維資料集上的資料可以間隔均勻地取樣,與人類真實視覺相似,適用於透視投影。因此光線投射主要被用於實時模擬場景下, 例如三維計算機遊戲以及動畫等,這類場景往往對細節不太重視而且通過人為製造細節可以得到更好的表現效果。

輻射著色:輻射著色是模擬反射光線如何反射到它表面以及如何照亮周圍環境的方法。這種方法可以生成較為真實的濃淡效果,並且更加易於捕捉室內場景的環境光。這種模擬的光線基礎是特定物體表面某一點的漫反射的光線散佈在很大的方向範圍內並且會照亮周圍 的環境。
各種模擬技術的複雜性可能會有所不同。許多渲染方法所用的輻射著色模型都非常原始, 它們只是簡單地根據環境因數變化照亮整個場景。但是當高階的輻射著色與高質量的光線跟 蹤演算法組合在一起使用的時候,它們能夠生成相當真實的影象,尤其是對於室內場景更是這樣。在高階的輻射著色模擬中,遞迴的有限元分析演算法不斷地將光線在模型表面之間來回反射,直到達到一定的遞迴條件為止。這樣一個表面的色彩就會影響其它相鄰表面的色彩,反之亦然。整個模型的照明結果會被儲存起來,在光線投射或者光線跟蹤模型中作為輸入使用。由於這項技術的遞迴特性,所以對於複雜物體的模擬速度非常緩慢。一些先進的輻射著色計算方法可能只計算房間中從牆面、地板與房頂反射的環境光,而並不計算複雜物體反光對於輻射著色的影響,或者在輻射著色計算中使用同樣尺寸及紋理的簡單物體取代複雜物體。如果場景中運動的輻射著色物體很少,那麼可以在多幀畫面中重複使用同樣的輻射著色資料。

光線跟蹤:類似於光線投射,但是光線跟蹤使用了更加先進的光學模擬方法,並且通常使用蒙特·卡羅方法以實現更加真實的結果,不過這樣做的代價通常是速度的大幅度降低。

光線跟蹤是比其他渲染方法如掃描線渲染等更加能夠實現的模擬光線,因此像反射和陰影這樣一些需要複雜精確渲染的效果,就需要光線跟蹤演算法來實現。因此,在要求高質量渲染效果的光線跟蹤中,通常每個畫素都需要取樣多條光線,並且不僅是跟蹤到第一次相交, 而是需要按照“入射角等於反射角”這樣的光學定律以及更加高階的處理折射與粗糙表面反射的定律處理多次連續反射。一旦光線遇到光源更可能出現的是光線反射次數已經達到設定的限制,那麼最終點的表面照明就通過上面的方法確定下來,並且經過多次反射發生的變化也可以估計在觀察點看到的亮度。每個取樣點、每個畫素都要重複這個過程。在有些場合中每個交點可能生成多條光線。

作為一種非常有效的方法,光線跟蹤的處理速度很慢,但也在一些需要高真實感效果的場合下得到應用,例如電影製作、廣告製作等。此外,簡化的光線跟蹤方法可以廣泛應用於不需要高質量細節的場合。目前已經出現了一些處於原型階段硬體加速的光線跟蹤裝置,在一些遊戲演示中也有實時軟體或者硬體光線跟蹤的應用。
 

2.3 圖形互動

l 幾何約束 :幾何約束可以用於對圖形的方向、對齊方式等進行規定和標準。

l 引力場 :

引力場可以看作是一種定位約束,通過在特定點周圍假想有一個區域,當游標中心落在這個區域內時,會自動地被直線上最近的一個點代替。就像一個質點進入直線周圍的引力場,然後被吸引到這條直線上去一樣。引力場的大小要適中,太小了不容易進入引力區,太大了線和線的引力區相交,游標在進入引力區相交部分有可能會被吸引到不希望選的線段上去,增大誤接的概率。

l 拖動 :要把一個物件移動到一個新的位置時,如果不是簡單地用游標指定新位置的一個點,而是用游標移動時拖動著被移動的物件,會使使用者感到更直觀,並且可以使物件放置的位置更恰當。

l 橡皮筋技術 :

被拖動物件的形狀和位置隨著游標位置的不同而變化,是一個不斷地進行畫圖—擦除— 畫圖的過程。

①從起點到游標中心點(x,y)處畫圖

②擦除起點到游標中心點(x,y)處的圖形

③游標移動到新的位置:x=x+△x,y=y+△y

④轉第①步,重複這個過程,直到按下確認鍵。

l 操作柄技術 :

可以用來對圖形影象進行縮放、旋轉、錯切等幾何變換。先選擇要處理的圖形物件,該圖形物件的周圍會出現操作柄,移動或者旋轉操作柄就可以實現相應的變換。

2.4幾何計算

三.計算機圖形學著名公司

作者:黃琦
連結:https://zhuanlan.zhihu.com/p/46620260