Computer Graphics Tutorial

計算機圖形學教程

計算機圖形學簡化了在計算機螢幕上顯示任何尺寸圖片的過程。各種演算法和技術用於在計算機中生成圖形。本教程將幫助您瞭解計算機如何處理所有這些圖形,從而為使用者提供豐富的視覺體驗。

什麼是計算機圖形學?

計算機圖形學是計算領域的一個動態領域,它涉及使用計算機建立、操作和渲染視覺內容。它包括數字影像、動畫和互動式圖形,用於娛樂、教育、科學視覺化和虛擬現實等各個領域。

計算機圖形學可用於UI設計、渲染、幾何物件和動畫。它指的是以圖形方式操作和表示影像或資料,需要各種技術進行建立和操作,以及數字合成及其操作。

誰應該學習計算機圖形學?

本計算機圖形學教程是為不知道圖形如何在計算機中使用的學生準備的。它解釋了圖形基礎知識以及如何在計算機中實現它們以生成各種視覺效果。

學習計算機圖形學的先決條件

在開始本教程之前,我們假設您已經瞭解C程式語言和基本數學的基本概念。

關於計算機圖形學的常見問題

關於計算機圖形學有一些非常常見的問題 (FAQ),本節試圖簡要地回答它們。

1. 光柵圖形和向量圖形有什麼區別?

光柵圖形和向量圖形是兩種常見的數字影像型別。

光柵圖形由微小的畫素組成;它們非常適合照片等細節豐富且色彩鮮豔的影像。另一方面,向量圖形使用數學路徑來表示徽標和插圖等縮放設計。

Difference Between Raster and Vector Graphics

光柵影像使用點陣圖儲存資訊,較大的檔案需要更大的點陣圖。另一方面,向量圖形使用順序命令或數學語句在二維或三維環境中放置線條或形狀。

2. 什麼是畫素,它與影像解析度有什麼關係?

畫素源自術語“影像元素”,是數字影像的基本單位,表示視覺資訊。它們由RGB子畫素組成,這些子畫素混合以建立不同的顏色。畫素形成光柵影像,每個畫素代表一個特定的位置和顏色值。

What is a Pixel

在一幅影像中,行和列中畫素的數量表示解析度。與畫素數量較少的影像相比,畫素數量較多的影像將更準確、更詳細。

3. 計算機圖形學中的渲染是什麼?

術語渲染表示資料的視覺化。在計算機圖形學中,顯示生成的圖形就是渲染。但是我們通常將三維渲染與術語“渲染”一起使用。

三維渲染是一個基於計算機的過程,它從數字三維場景生成二維影像。它在建築、產品設計、廣告、影片遊戲和視覺效果等各個行業都至關重要。

4. 有哪些不同型別的渲染技術?

下面列出了一些渲染技術:

  • 掃描線是一種傳統的渲染技術,用於計算計算機圖形曲面。
  • Z緩衝區是一個二維資料系統,用於深度計算和儲存。
  • 著色光照使用軟體效果來操縱光線和暗度級別。
  • 紋理/凹凸貼圖顯示顏色、材質和物件細節。
  • 光線追蹤光線投射是用於建立自然光照效果的有用渲染技術。

5. 什麼是圖形管道?

圖形管道是計算機圖形學中的一個框架,它概述了將三維場景轉換為螢幕上二維表示的過程。它將模型轉換為計算機顯示器上可感知的視覺格式。

由於圖形管道依賴於特定的軟體、硬體配置和顯示屬性,因此不存在普遍適用的圖形管道。相反,Direct3D、OpenGL和Vulkan等圖形應用程式程式設計介面 (API) 標準化了常用過程並監督硬體加速器的圖形管道。

6. 在圖形的上下文中,CRT和LCD等顯示裝置是如何工作的?

CRT顯示器使用電子束使螢幕上的磷光點發光。影像就是這樣形成的。另一方面,LCD顯示器使用液晶和背光來控制光線並形成影像。

兩種型別都依賴於顯示卡來渲染和傳送影像訊號。CRT使用模擬訊號,而LCD使用數字訊號。為了正確顯示,顯示卡和顯示器必須支援相同的解析度和重新整理率。

7. 線性代數在計算機圖形學中的作用是什麼?

線性代數就像計算機圖形學的數學工具包。它有助於在螢幕上建立和移動二維或三維物件。例如,它允許我們旋轉、縮放和移動物件。可以把它想象成使影片遊戲和動畫看起來逼真的數學原理。

沒有線性代數,就不可能建立圖形。我們從線性方程中形成矩陣來解決實際問題。

8. 什麼是幀緩衝區?

幀緩衝區是RAM中的記憶體緩衝區,其中包含驅動影片顯示的點陣圖。它表示完整影片幀中的所有畫素,並將記憶體中的點陣圖轉換為影片訊號,以便在計算機顯示器上顯示。

該緩衝區通常包含每個畫素的顏色值,儲存在1位二進位制、4位調色盤、8位調色盤、16位高顏色和24位真彩色格式中。所需的總記憶體取決於輸出訊號解析度和顏色深度。

What is a Frame Buffer?

9. 空間資料結構如何提高渲染效率?

網格、八叉樹和BSP樹等空間資料結構有助於組織場景中的三維物件。它們透過減少確定可見內容所需的計算量來加快渲染速度。

例如,系統無需檢查每個物件,只需檢查相關區域中的物件即可。這加快了光線追蹤等過程,使圖形更流暢、更高效。對於出現在其他物件前面或後面的物件,這些資料結構也大有幫助。

10. 顏色深度有什麼意義?

顏色深度,也稱為位深度,是用於指示單個畫素的顏色或單個畫素的每個顏色分量的位數。它可以定義為每畫素位數 (bpp)、每分量位數、每通道位數、每顏色位數 (bpc)、每畫素分量位數、每顏色通道位數或每樣本位數 (bps)。

現代標準通常使用每分量位數,而歷史上低深度系統更常使用每畫素位數。顏色精度和色域透過顏色編碼規範定義。

11. 什麼是抗鋸齒,為什麼它很重要?

抗鋸齒是計算機圖形學中的一種技術,它可以去除鋸齒效應,鋸齒效應會導致光柵化影像出現鋸齒狀邊緣。此問題源於欠取樣,這是低頻掃描轉換引起的失真。

當使用畫素光柵化平滑的連續曲線時,就會出現鋸齒現象,抗鋸齒的原因是欠取樣。

What is anti-aliasing?

應用抗鋸齒後,影像變得平滑,產生更清晰的線條,使影像在實際操作中更有效。

12. 二維圖形和三維圖形有什麼區別?

二維圖形和三維圖形在建立和結果上有所不同。二維圖形由高度和寬度組成,而三維圖形增加了深度以實現真實感。

二維圖形通常用於動畫和影片遊戲中,提供螢幕上運動的平面檢視。三維圖形提供逼真的深度,允許觀看者看到空間內部,觀察光線和陰影的移動,並更全面地理解內容。它們與大腦探索和豐富我們對世界的理解的自然傾向相協調。

13. 什麼是齊次座標?

齊次座標在計算機圖形學中得到了相當廣泛的應用。這是用於在二維影像平面上顯示三維物件的幾何學的基礎。它們提供了一個執行歐幾里德空間中點運算的標準,例如矩陣乘法。

這些座標系統以兩種方式使用:透過新增額外值,以及透過解決表示和實現幾何物件變換的問題。大多數圖形都由矩陣表示,這些矩陣應用於笛卡爾形式的向量。

14. 計算機圖形學中的變換矩陣是什麼?

變換矩陣是一個方陣,它表示向量空間中的線性變換。它透過保持空間的線性屬性將座標系從一個變換到另一個。

該矩陣攜帶係數,使計算和更改幾何物件更容易。

$$\mathrm{\begin{bmatrix}a & b \\c & d \end{bmatrix} \: \begin{bmatrix} x \\ y \end{bmatrix} \: = \: \begin{bmatrix} x' \\ y' \end{bmatrix}}$$

例如,在具有座標向量 i 和 j 的二維座標系中,變換矩陣T可以將向量v = (x, y)變換為向量w = (x', y'),從而建立一個新的座標系。矩陣的係數決定了變換的方向,並用於找到向量w

15. 二維/三維變換中的平移、縮放和旋轉是如何工作的?

平移、縮放和旋轉是二維和三維變換中使用的關鍵技術,用於改變物體的位移、方向和大小。

我們可以建立一個矩陣,新增xyz引數來平移到另一個座標。

縮放使用沿 X、Y 和 Z 方向的縮放因子在座標中調整大小。因此,在這裡使用縮放矩陣,我們為每個軸使用縮放因子。

對於旋轉,我們使用帶有正弦和餘弦的三角函式。旋轉改變物體圍繞一個或多個軸的朝向,可以圍繞網格中心或沿一條線旋轉。

16. 圖形渲染中的檢視矩陣是什麼?

檢視矩陣是一個用於將頂點從世界空間轉換為檢視空間的矩陣,通常與物體的世界矩陣和投影矩陣連線在一起。這允許頂點在頂點程式中直接從物體空間變換到裁剪空間。

如果M代表物體的世界矩陣,V代表檢視矩陣,P是投影矩陣,則連線的世界、檢視和投影可以用MVP表示。

17. 什麼是透視投影?它與正交投影有何不同?

正交投影是平行投影,可以用仿射變換表示。透視投影不是平行投影。它們由於藝術和技術原因而有用,例如驗證平面圖中的零件配合或以不同的基準表示問題以簡化座標。

在下面的示例中,我們可以看到對於透視投影,我們假設線條將在一點處相交;但對於正交投影,它將在無限遠處相交。

What is Perspective Projection?

正交投影通常用於 CAD 繪圖和技術文件中,以確保尺寸易於測量,並以不同的基準表示問題,以便於理解。

18. 圖形中的裁剪的概念是什麼?

為了顯示圖片的大部分內容,需要縮放和平移,並識別可見部分。這個過程具有挑戰性,因為有些部分部分在內部,並且部分可見的線條或元素被省略。

What is the concept of Clipping in graphics?

裁剪是一個用於確定每個元素的可見部分和不可見部分的過程,選擇可見部分並丟棄不可見部分。有各種型別的裁剪,包括線裁剪和多邊形裁剪。

19. 什麼是向量,它們如何在計算機圖形學中使用?

向量圖形是一種用途廣泛且可縮放的計算機圖形方法,它使用數學方程和幾何形狀而不是基於畫素的柵格圖形。它們沒有解析度限制,並且在任何尺寸下都能保持影像質量。

圖形藝術家將其作品儲存為向量宣告。最流行的向量圖形格式是 SVG,它們基於解析幾何或座標幾何。

Ivan Sutherland 在 1963 年發明了向量圖形,並開發了第一個向量圖形編輯器 Sketchpad,它允許使用者在計算機螢幕上建立和編輯向量圖形。

20. 什麼是光線追蹤,它與光柵化有何不同?

光線追蹤是一種用於即時計算機圖形的技術,用於在二維螢幕上顯示三維物體。它涉及觀察從你的眼睛到光線相互作用的物體的光束路徑。

另一方面,光柵化是一種用於在二維螢幕上顯示三維物體的技術。它從虛擬三角形的網格建立物體的 3D 模型,其中每個三角形的頂點與不同大小和形狀的其他三角形相交。這些資訊,包括位置、顏色、紋理和“法線”,決定了物體的表面方向。

21. 法線向量在光照計算中的作用是什麼?

法線向量用於三維圖形的光照計算。它們指示每個點的表面方向。這是光線反射和陰影所必需的。這些向量對於計算漫反射和鏡面反射、建立逼真的高光以及實現凹凸貼圖等技術至關重要。

在著色器程式中,法線向量是各種光照模型的關鍵輸入。它們允許高效地建立複雜的光照效果,而無需過多的幾何細節,這使得它們對於即時三維渲染和平滑的表面光照是必要的。

22. 深度緩衝區在三維渲染中的意義是什麼?

深度緩衝區在三維渲染中對於確定物體和表面的可見性至關重要。如果沒有它們,渲染順序會導致面片的層疊不正確。

對於一個簡單的立方體,如果系統不知道正確的順序,它將顯示每個面,但它們將以任何順序顯示,並且隱藏的面可能在前面可見。為了應用面剔除,它需要深度緩衝區。

23. 什麼是 Bresenham 直線繪製演算法?

Bresenham 直線演算法是一種 n 維柵格繪製演算法,它選擇點來形成兩點之間直線的近似值。它通常用於在點陣圖影像中繪製直線圖元,因為它使用廉價的操作,如整數加法、減法和位移。

作為增量誤差演算法,它是計算機圖形學中最早的演算法之一。該演算法的擴充套件稱為中點圓演算法,可用於繪製圓。

24. 什麼是掃描線演算法,它如何在光柵圖形中使用?

掃描線演算法是三維圖形中用於隱藏面消除的演算法。該演算法一次處理一行,而不是一次處理一個畫素。

掃描線演算法檢查掃描線與多邊形表面相交的點(從左到右),執行深度計算以識別隱藏區域。然後,如果相應表面的標誌開啟,它會更新重新整理緩衝區中的顏色強度值。

25. 什麼是中點圓演算法?

中點圓演算法是計算機圖形學中用於高效繪製圓的方法。它是 Bresenham 直線繪製演算法的擴充套件。它的工作原理是確定哪些畫素應該著色以在數字螢幕上形成一個圓。

從一個點開始,演算法沿著圓的圓周移動,決定是直線移動還是對角移動到下一個畫素。它透過計算兩個可能畫素之間的中點來做出這些決定。這種方法避免了使用複雜的三角函式計算,使其更快、更容易實現。

26. 泛洪填充演算法是如何工作的?

泛洪填充演算法是一種用於填充區域中多個顏色邊界的方法。它從區域內的種子點開始,使用四連通或八連通的方法用所需顏色填充它。

How does the Flood-Fill Algorithm work?

泛洪填充演算法更適合於用一種顏色填充多個顏色邊界和內部。填充演算法從指定的內部點 (x, y) 開始,並將所有畫素值重新賦值為所需顏色。然後它逐步遍歷畫素位置,直到所有內部點都被重新繪製。

27. 什麼是紋理對映?

紋理貼圖是應用於形狀或多邊形表面的影像,可以是點陣圖或程式生成的。它們可以儲存在影像檔案格式中,由 3D 模型引用,或組裝到資源包中。它們可以有一到三個維度,其中二維對於可見表面最常見。

現代硬體可以以改組或平鋪的順序儲存紋理貼圖資料,以提高快取一致性。渲染 API 將紋理貼圖資源管理為緩衝區或表面,允許“渲染到紋理”以獲得額外的效果。

28. Z 緩衝區在三維渲染中的目的是什麼?

Z 緩衝區只不過是一種深度緩衝區,它儲存三維場景中不同物體的深度資訊。

哪個物體在前面,哪個物體在後面,這些都是由 Z 緩衝區確定的。這對於以正確的方式表示三維物體至關重要。否則,一些沒有放在後面的面會來到前面並生成無效的影像。

What is the purpose of Z-buffer in 3D rendering?

29. 什麼是 Gouraud 著色,它與 Phong 著色有何不同?

Gouraud 著色計算頂點處的照明,並在多邊形之間插值顏色。這種方法計算效率高,但會產生可見的偽影,尤其是在鏡面高光的情況下,隨著視角的變化,鏡面高光可能會出現角度或在頂點之間跳躍。質量在很大程度上取決於模型的複雜性。

另一方面,Phong 著色在多邊形之間插值照明引數,並計算每個片段的照明。這種方法產生更平滑、更逼真的結果,特別是對於鏡面高光,鏡面高光看起來圓潤並在表面上流暢地移動。

30. 什麼是環境光遮蔽,它如何在渲染中使用?

環境光遮蔽是一種用於三維圖形的照明技術。這會新增細微的陰影,使場景看起來更逼真。

在下圖中,這將更加清晰。它模擬了物體在現實世界中如何遮擋光線,使物體緊密相鄰或位於角落的區域變暗。

What is Ambient Occlusion?

此技術計算每個表面點可以“看到”多少環境光,從而在封閉空間中建立更柔和的陰影。這顯著提高了三維渲染場景的整體視覺質量和真實感。

31. 著色器和紋理之間的主要區別是什麼?

著色器和紋理是三維圖形中兩個重要的組成部分。它們用於不同的目的。著色器是 GPU 執行的程式,用於控制三維物體的渲染,影響照明、顏色和特殊效果。著色器可以建立複雜的可視效果,並且非常靈活,允許根據輸入進行動態更改。

另一方面,紋理是應用於三維模型以新增細節和真實感的影像,提供諸如顏色圖案、粗糙度或凹凸效果之類的表面資訊。

32. 計算機圖形學中動畫的基本原理是什麼?

計算機圖形學中的動畫只不過是一系列幀,其中每一幀都在場景中生成圖形輸出。通常,並非所有幀都是以類似的方式生成的。

插值的概念用於動畫建立。這可以使用線性、二次或其他插值型別來完成。有幾種型別的動畫,包括關鍵幀動畫、變形動畫、補間動畫等。

33. 計算機圖形學中的插值是什麼?

插值技術用於計算機圖形學的動畫建立。這些用於透過獲取兩幀並生成中間幀來實現平滑動畫過渡。

有幾種型別的插值,包括線性、二次等。這些可以用於移動旋轉、縮放動畫以及變形和其他一些技術,如角色動畫(行走、跑步)等。

34. 什麼是場景圖?

在計算機圖形學中,場景圖是基於向量的圖形編輯應用程式和現代電腦遊戲中使用的資料結構,用於排列圖形場景的邏輯表示。它由樹結構中的節點組成,父節點的效果應用於其所有子節點。

在許多程式中,幾何變換矩陣用於有效地處理操作,例如將相關的形狀和物件分組到可以作為單個物件操作的複合物件中。

35. 計算機圖形學中的全域性照明是什麼?

全域性照明 (GI) 是一組三維計算機圖形演算法,用於增強三維場景中的逼真照明。這些演算法同時考慮直接光源和間接光源,包括反射、折射和陰影。它們模擬這些效果,影響其他物體的渲染。

然而,在實踐中,只有漫反射或焦散被認為是全域性光照,因為它們模擬了場景中來自同一光源的光線對其他表面的影響。

36. 分形與計算機圖形學有什麼關係?

分形是計算機使用迭代,基於單個公式建立的複雜影像。

幾何分形是用自然界中存在的非整數形狀生成的。這些是透過從初始形狀開始,用生成器替換部分來建立的,從而產生確定性的、非隨機的自相似分形。

Fractals relate to computer graphics

37. 即時渲染和離線渲染的圖形技術有何不同?

離線渲染是一種傳統的方法,透過在顯示最終結果之前計算場景中的每個畫素來建立影像或動畫。它使用強大的軟體,如 Autodesk 3ds Max、V-Ray 或 Blender Cycles 等。

即時渲染是一種快速的方法,用於影片遊戲和互動式應用程式,並且在建築視覺化中越來越受歡迎。

38. 什麼是 GPU,它如何加速圖形渲染?

GPU 是一種專門的電路,可以高效地處理和操作計算機圖形和影像資料。這將計算密集型任務從 CPU 中解除安裝,使 CPU能夠處理更多通用的計算工作負載。

GPU 用於遊戲和 3D 圖形渲染。它透過即時渲染複雜的場景和高解析度紋理來幫助圖形處理,處理變換、頂點生成、畫素著色器、抗鋸齒等。

39. 什麼是 OpenGL,為什麼它在圖形開發中被廣泛使用?

OpenGL 是一個與圖形相關的 API,用於與圖形硬體 (GPU) 通訊。它提供應用程式的圖形表示。

OpenGL 允許透過硬體加速渲染 2D 和 3D 向量圖形,使其廣泛用於 VR、CAD 和遊戲中。OpenGL 是跨平臺和與語言無關的。

40. DirectX 與 OpenGL 相比如何?

OpenGL 和 DirectX 在功能方面並不相似。DirectX 是一套 API,包括 Direct3D 和 Direct2D,它們僅與 Microsoft 平臺(如 Windows 和 Xbox)相容。OpenGL 是跨平臺的,與 Microsoft、Apple 和 Linux 系統相容。

Apple 已棄用 OpenGL;但是,在 macOS 和 iOS 上,它仍然受支援。在遊戲幀率和系統資源使用方面,OpenGL 和 DirectX 11 幾乎不相上下,在大多數情況下幾乎沒有明顯的區別。

41. 3D 渲染中 LOD(細節層次)的概念是什麼?

計算機圖形中的細節層次 (LOD) 指的是 3D 模型表示的複雜程度。當模型遠離觀看者移動時,或者基於物件重要性或視角相關的速度等指標,可以降低其複雜程度。

LOD 技術透過減少圖形流水線階段(通常是頂點變換)的工作負載來提高渲染效率。LOD 通常應用於幾何細節,但可以推廣到包括著色器管理和 mipmapping 以獲得更高的渲染質量。

42. 什麼是遊戲引擎,它與計算機圖形學有什麼關係?

遊戲引擎是一種幫助建立影片遊戲的軟體。它處理許多工,例如渲染圖形、處理物理、管理音訊和處理使用者輸入。

在計算機圖形學中,遊戲引擎的圖形引擎非常重要。它渲染 2D 和 3D 視覺化效果,確保影像流暢逼真。這允許遊戲開發者專注於遊戲設計,而不是從頭開始構建圖形。

一些流行的遊戲引擎包括Unity虛幻引擎Godot

43. 即時圖形中使用的一些常見最佳化技術是什麼?

最佳化技術用於透過去除不必要的計算來提高不同應用程式的效能並使系統更快。有很多這樣的最佳化技術,包括以下這些:

  • 例項化 - 多次重複使用相同的物件,並進行不同的變換,從而減少繪製呼叫次數。
  • 剔除 - 跳過對相機不可見的物體的渲染,節省處理能力。
  • 細節層次 (LOD) 管理 - 對遠處物體使用更簡單的模型,以保持效能而不犧牲視覺質量。

44. VR 的圖形技術與傳統的 3D 圖形有何不同?

VR 的技術是不同的。在 VR 中,我們使用立體影像,其中兩張影像合併在一起以獲得逼真的 3D 檢視。另一方面,傳統的 3D 影像是 2D 渲染,沒有真正的 3D 感。

可以說,VR 圖形在沉浸感、效能、視野和互動方面有所不同。VR 旨在提供完全沉浸式的體驗。傳統的 3D 圖形側重於視覺表示。高幀率和低延遲是流暢互動所必需的,而更寬的視野則模擬了人類的視覺。

廣告