本書以真實感圖形為主線,精選23個理論知識點進行重點講解,并給出23個配套實驗,以三維動畫的方式講解3D計算機圖形學的基礎理論與算法。理論部分主要包括雙緩沖動畫、直線光柵化、三維幾何變換、曲面建模、透視投影、三角形填充、深度緩沖消隱、簡單光照模型和紋理映射等內容;實驗部分主要提供三角形填充算法、立方體等多面體建模算法、球體和圓環(huán)曲面體建模算法、球體的透視投影算法、立方體的ZBuffer消隱算法和畫家消隱算法、球體的高洛德明暗處理算法、圓環(huán)的馮氏明暗處理算法、球體的圖像紋理映射算法和凹凸紋理映射算法等項目。實驗項目使用Visual C++ 2017的中文版MFC框架開發(fā),提供一套完整的三維場景著色源程序代碼。實驗項目還提供嚴格按照算法編寫的工具代碼,包括直線類CLine、幾何變換類CTransform、投影類CProjection、深度緩沖消隱類CZBuffer、光源類CLightSource、材質類CMaterial、光照類CLighting、高洛德著色器GouruaudShader和馮氏著色器PhongShader。
孔令德, 山西太原工業(yè)學院計算機系系主任, 二級教授, 山西省杰出教學人才, 長期從事計算機科學與技術的教學與研究工作, 出版教材和專著多部, 發(fā)表論文多篇.
第1章 概述 1
1.1 計算機圖形學的概念 1
1.2 計算機圖形學的應用領域 1
1.2.1 計算機輔助設計 2
1.2.2 計算機藝術 2
1.2.3 虛擬現實技術 2
1.2.4 計算機游戲 3
1.2.5 計算機輔助教學 3
1.3 計算機圖形學的誕生 3
1.4 真實感圖形算法的進展 4
1.5 MFC繪圖函數【理論1】 4
1.5.1 新建Test項目 4
1.5.2 自定義坐標系 6
1.5.3 繪圖工具 7
1.5.4 基本繪圖函數 8
1.6 實驗1:鼠標繪制直線 9
1.7 雙緩沖繪圖算法【理論2】 11
1.8 實驗2:小球與客戶區(qū)邊界碰撞動畫 12
1.9 本章小結 17
習題1 18
第2章 直線的光柵化 19
2.1 確定主位移方向 19
2.2 DDA算法 20
2.3 Bresenham算法 21
2.3.1 Bresenham算法原理 21
2.3.2 整數Bresenham算法原理 22
2.3.3 通用整數Bresenham算法原理
【理論3】 22
2.3.4 顏色線性插值 23
2.4 實驗3:使用Bresenham直線算法繪制顏色漸變三角形 23
2.5 中點算法 28
2.5.1 中點算法原理 28
2.5.2 構造中點誤差項 29
2.5.3 遞推公式 29
2.5.4 中點算法整數化 30
2.6 反走樣技術【理論4】 31
2.6.1 走樣現象 31
2.6.2 算法原理 31
2.6.3 構造距離誤差項 32
2.6.4 反走樣算法 32
2.7 實驗4:反走樣秒表 33
2.8 本章小結 35
習題2 36
第3章 幾何變換 37
3.1 齊次坐標 37
3.2 二維幾何變換【理論5】 38
3.2.1 二維幾何變換矩陣 38
3.2.2 二維變換形式 38
3.2.3 基本幾何變換矩陣 38
3.2.4 二維復合變換 43
3.3 實驗5:繪制防護欄圖案 43
3.4 三維變換 50
3.4.1 三維變換矩陣 50
3.4.2 三維變換形式 50
3.5 三維基本變換矩陣【理論6】 51
3.5.1 基本幾何變換矩陣 51
3.5.2 三維復合變換 55
3.6 實驗6:旋轉立方體 56
3.7 本章小結 65
習題3 65
第4章 自由曲面建!67
4.1 貝塞爾曲線【理論7】 67
4.1.1 貝塞爾曲線的定義 67
4.1.2 三次貝塞爾曲線繪制圓弧 70
4.1.3 貝塞爾曲線的拼接 71
4.2 實驗7:使用三次貝塞爾曲線繪制圓 71
4.3 貝塞爾曲面【理論8】 75
4.3.1 雙三次貝塞爾曲面的定義 76
4.3.2 雙三次貝塞爾曲面遞歸細分 77
4.3.3 雙三次貝塞爾曲面的法向量 78
4.4 實驗8:回轉法構造球面 78
4.5 本章小結 90
習題4 91
第5章 投影與消隱 95
5.1 正交投影 95
5.2 斜投影【理論9】 96
5.3 實驗9:繪制斜投影雙三次貝塞爾曲面 97
5.4 透視投影【理論10】 100
5.4.1 透視投影坐標系 100
5.4.2 世界坐標系到觀察坐標系的變換 101
5.4.3 觀察坐標系到屏幕坐標系的變換 101
5.4.4 透視投影變換 102
5.4.5 透視投影分類 103
5.5 實驗10:制作球體的透視投影動畫 103
5.6 背面剔除算法【理論11】 106
5.7 實驗11:制作球體的消隱動畫 107
5.8 本章小結 111
習題5 111
第6章 表面模型 114
6.1 三角形的表示法 114
6.2 三角形的著色模式 115
6.3 馬赫帶 115
6.4 邊界像素處理規(guī)則 116
6.5 邊標志算法【理論12】 116
6.5.1 基本思想 116
6.5.2 光滑著色模式填充三角形 117
6.5.3 打邊標志 117
6.6 實驗12:繪制RGB立方體 118
6.7 面消隱算法 124
6.7.1 三維屏幕坐標系 124
6.7.2 計算偽深度 125
6.8 ZBuffer算法【理論13】 125
6.9 實驗13:光滑著色交叉條動態(tài)消隱 126
6.10 畫家算法【理論14】 133
6.11 實驗14:使用畫家算法繪制CMY立方體
134
6.12 本章小結 138
習題6 138
第7章 光照模型 140
7.1 顏色模型 140
7.1.1 RGB顏色模型 140
7.1.2 HSV顏色模型 141
7.1.3 CMY顏色模型 142
7.2 簡單光照模型【理論15】 143
7.2.1 材質屬性 144
7.2.2 發(fā)射光模型 144
7.2.3 環(huán)境光模型 145
7.2.4 漫反射光模型 145
7.2.5 鏡面反射光模型 146
7.2.6 光源衰減 147
7.2.7 增加顏色 148
7.3 實驗15:球體GouraudShader三維動畫 149
7.4 光滑著色【理論16】 155
7.4.1 GouraudShader 155
7.4.2 PhongShader 156
7.5 實驗16:圓環(huán)PhongShader三維動畫 157
7.6 本章小結 164
習題7 164
第8章 紋理映射 169
8.1 紋理的定義 170
8.2 紋理的分類 170
8.3 圖像紋理【理論17】 171
8.3.1 讀入紋理 171
8.3.2 處理高光 171
8.4 實驗17:球體圖像紋理映射 172
8.5 幾何紋理【理論18】 179
8.5.1 最簡單的凹凸圖 179
8.5.2 映射原理 179
8.6 實驗18:球體正弦函數擾動的凹凸紋理 181
8.7 紋理反走樣 182
8.8 本章小結 183
習題8 183
第9章 高級紋理技術 188
9.1 兩步紋理映射【理論19】 188
9.2 實驗19:球面兩步紋理映射算法 190
9.2 環(huán)境映射 192
9.2.1 球面映射方法【理論20】 192
9.2.2 立方體映射方法【理論21】 193
9.3 實驗20:球面環(huán)境映射算法(球映射方法) 195
9.4 實驗21:圓環(huán)環(huán)境映射算法(立方體映射方法) 196
9.5 投影紋理映射【理論22】 200
9.6 實驗22:圓環(huán)投影紋理映射 201
9.7 三維紋理映射【理論23】 203
9.8 實驗23:木紋球體 206
9.9 Mipmap紋理反走樣技術 208
9.10 本章小結 210
習題9 210
附錄A 課程設計 213
A.1 項目描述 213
A.2 項目設計 214
A.3 項目編碼 217
A.4 項目總結 222
A.5 項目拓展 222
參考文獻 227