01 / 導讀
導讀
引用
Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5th ed.). A K Peters/CRC Press.
章節概要
第5版共716頁,含514幅彩色插圖,分為二十三章。第1–14章由兩位主要作者撰寫,構成核心課程內容;第15–23章由各領域專家撰稿,每章討論一個主題。出版社把本書的方法描述為注重幾何直覺,透過光線追蹤和光柵化這兩種互補的方法來解釋影像如何呈現在螢幕上。據介紹,這一版對著色、光線追蹤、基於物理的算繪、數學和取樣等章節作了重大修訂,並對若干章節進行了合併和改寫,使全書的脈絡更加自然。
第1–3章:Introduction(引言);Miscellaneous Math(數學雜項);Raster Images(光柵影像)
全書以領域概述開篇,接著是彙集全書所用數學知識的一章(線性代數另有專章),然後是光柵影像一章——光柵影像即畫素網格,書中的每一種方法最終都要生成它。
第4–5章:Ray Tracing(光線追蹤);Surface Shading(表面著色)
光線追蹤出現得很早,早於線性代數和變換:生成影像的第一個完整方法,是從視點向場景追蹤光線。第5章討論表面著色,即如何根據光照和材質計算可見表面的顏色。
第6–8章:Linear Algebra(線性代數);Transformation Matrices(變換矩陣);Viewing(觀察)
這是第二種方法的數學核心:向量與矩陣、用於移動和放置物體的變換矩陣,以及把三維場景對映為二維影像的觀察變換。
第9章:The Graphics Pipeline(圖形管線)
兩種主要方法中的第二種——光柵化——以圖形管線的形式呈現,即圖形硬體把幾何圖元轉化為畫素所經過的一系列階段。
第10–11章:Signal Processing(訊號處理);Texture Mapping(紋理對映)
第10章提供影像取樣與濾波所需的訊號處理背景;第11章將其應用於紋理對映,即把影像和其他圖案附著到表面上。
第12–14章:Data Structures for Graphics(圖形學中的資料結構);Sampling(取樣);Physics-Based Rendering(基於物理的算繪)
這幾章支撐更高階的算繪:提高算繪效率的空間資料結構及其他資料結構、取樣(本版大幅修訂的章節之一),以及把著色與光的物理連結起來的基於物理的算繪。
第15–17章:Curves(曲線);Computer Animation(電腦動畫);Using Graphics Hardware(使用圖形硬體)
撰稿章節從曲線開始,即出版社介紹中提到的 spline(Michael Gleicher),接著是電腦動畫(Michael Ashikhmin)和圖形硬體的實際程式設計(Peter Willemsen)。
第18–20章:Color(顏色);Visual Perception(視覺感知);Tone Reproduction(色調再現)
三章討論影像中與人有關的一面:顏色(Erik Reinhard 和 Garrett Johnson)、視覺感知(William B. Thompson),以及色調再現,即把現實世界中範圍極廣的亮度對映到顯示器有限的範圍內(Erik Reinhard)。
第21–23章:Implicit Modeling(隱式建模);Computer Graphics in Games(遊戲中的電腦圖形學);Visualization(視覺化)
最後幾章撰稿章節討論隱式建模(Brian Wyvill)、遊戲中的圖形學(Naty Hoffman)和視覺化(Tamara Munzner)。
核心概念
第1–5章:影像與光線追蹤
- 光柵影像:以畫素值網格形式儲存的影像。
- 光線追蹤:從觀察者出發向場景追蹤光線、找出可見表面,從而計算影像。
- 表面著色:根據光源和材質屬性計算表面上某點的顏色。
第6–9章:變換與管線
- 變換矩陣:對物體進行旋轉、縮放和平移的矩陣,可合成為單一變換。
- 觀察:把三維場景對映到螢幕座標的一系列變換。
- 圖形管線:基於光柵化的系統把圖元轉化為畫素所經歷的各個階段。
第10–14章:取樣、紋理與高階算繪
- 取樣與濾波:藉助訊號處理的思想,用樣本表示連續訊號並控制鋸齒。
- 紋理對映:透過在影像或函式中查詢數值來改變表面屬性。
- 空間資料結構:加速光線與物體求交等查詢的結構。
- 基於物理的算繪:以光傳輸物理為基礎的算繪。
第15–23章:撰稿主題
- spline 與曲線:由控制點定義的光滑曲線。
- 色調再現:把場景亮度對映到顯示器的有限範圍。
- 隱式建模:把形狀定義為函式的等值面。
- 視覺化:以圖形方式表示資料以幫助理解。
評析
優點
- 兩種方法並列呈現。 把光線追蹤(第4章)放在管線(第9章)之前,使學生能及早用一個簡單而完整的演算法生成影像,然後再把光柵化看作對同一問題的另一種解答。出版社強調本書對幾何直覺的重視。
- 數學自成體系。 本書有專門講數學雜項、線性代數和訊號處理的章節。出版社引用格拉納達大學的 Fernando Berzal 的評價,他因此稱本書異常地自成體系。
- 專家撰稿章節。 顏色、感知、色調再現、動畫、遊戲和視覺化等章節由專家撰寫,Berzal 認為這在標準教材中並不多見。這些章節使課程可以從算繪擴展到相鄰領域。
- 核心內容經過修訂。 第5版稱對大多數課程所依賴的著色、光線追蹤、基於物理的算繪、數學和取樣等章節作了重大更新。
局限
- 核心部分不涉及程式設計介面。 目錄中沒有圍繞特定圖形 API 的章節;Using Graphics Hardware(第17章)是唯一一章講硬體程式設計的內容,而且位於撰稿章節之中。需要編寫 OpenGL、WebGL 或 Vulkan 程式碼的學生,需要另找材料。
- 撰稿章節參差不齊。 第15–23章是不同作者撰寫的單一主題章節,每章只是入門而非完整論述,彼此之間也不構成連貫的順序。
- 重廣度而非深度。 全書七百多頁、二十三章,遠超一門課程所能涵蓋的範圍;數學背景被壓縮在少數幾章(第2、6、10章)中,線性代數薄弱的學生應準備在這些章節上多花時間。
在課程中的定位
在本課程的圖形學書目中,本書是以原理為先的主教材。Gambetta 的 Computer Graphics from Scratch 是一本篇幅短得多的入門書,讀者從基本原理出發,用虛擬碼寫出一個光線追蹤器和一個光柵化器,可以作為本書第4章和第9章的平緩鋪墊。Angel 和 Shreiner 的 Interactive Computer Graphics 以相反的順序講授相近的基礎:先用著色器編寫互動式 WebGL 應用程式,之後才揭示管線內部的演算法。如果課程希望學生從第一週起就針對真實的 API 程式設計,可以把 Angel 和 Shreiner 作為主教材,把本書作為數學和理論的參考書。
若要進一步學習,Akenine-Möller 等人的 Real-Time Rendering 是面向遊戲和互動應用的 GPU 算繪的綜合參考書,可延伸第9章和第17章;Pharr、Jakob 和 Humphreys 的 Physically Based Rendering 以文學程式設計的形式呈現一個完整的照片級真實感算繪器,可延伸第4、13、14章。Rogers、Sharp 和 Preece 的 Interaction Design 屬於本課程的人機互動部分,與本書內容並不重疊。
如何使用本書
本書適合會程式設計、學過微積分和一些線性代數的大學部學生;書中的數學章節適合作為複習,而不是第一次學習。
- 核心順序(一個學期): 按順序讀第1–9章,需要時查閱第2章和第6章。閱讀第4–5章時實現一個基本的光線追蹤器,閱讀第7–9章時編寫一個簡單的光柵化器或管執行緒序。
- 第二部分: 第10–11章講取樣、濾波和紋理;隨後第12–14章講加速結構和基於物理的算繪,適合更高階的課程或第二門課。
- 撰稿章節: 根據興趣選讀:建模與動畫讀第15–16章,顏色與成像讀第18–20章,即時圖形讀第17章和第22章,視覺化讀第23章。學完核心部分後,每一章都可以單獨閱讀。
程式設計必不可少:本書講的是原理,因此應配合一個使用課程所選語言和圖形 API 的專案,把從著色到紋理濾波的每個概念都動手實現一遍加以檢驗。
