本書是作者多年來教學(xué)與科研工作的總結(jié),采用WebGL圖形編程接口循序漸進(jìn)開發(fā)一個(gè)賽車游戲的方式對(duì)計(jì)算機(jī)圖形學(xué)基礎(chǔ)知識(shí)和真實(shí)感渲染的物理原理進(jìn)行講解,涵蓋了圖形學(xué)基本概念、WebGL圖形編程接口、3D圖形表示、幾何變換、光柵化、光照和陰影技術(shù)、紋理映射等基本的計(jì)算機(jī)圖形學(xué)內(nèi)容,以及粒子系統(tǒng)、光線跟蹤、光子跟蹤、基于圖像的繪制和全局光照等高級(jí)內(nèi)容。并為讀者進(jìn)一步深入學(xué)習(xí)和研究,在每章里都給出了相關(guān)的程序?qū)嵗?
本書面向的讀者范圍非常寬泛,既可作為高等院校相關(guān)專業(yè)的圖形學(xué)教材,也適合想從事計(jì)算機(jī)圖形學(xué)相關(guān)領(lǐng)域工作的初學(xué)者,同樣也可作為計(jì)算機(jī)圖形學(xué)領(lǐng)域高級(jí)研究人員的參考書。
Fabio Ganovelli于1995年畢業(yè)于意大利比薩大學(xué),2001年獲得博士學(xué)位,目前是意大利國家研究委員會(huì)可視計(jì)算研究室的研究員。Fabio目前的研究領(lǐng)域包括變形模擬、多分辨率模擬、真實(shí)感繪制和幾何處理。Massimiliano Corsini 于2000年畢業(yè)于意大利佛羅倫薩大學(xué)的信息工程學(xué)院,2005年獲得信息通訊學(xué)院博士學(xué)位,目前是意大利國家研究委員會(huì)可視計(jì)算研究室的研究員。Massimiliano目前主要研究表面獲取和建模、2D/3D注冊技術(shù)和基于圖像的重光照技術(shù)
邵緒強(qiáng),博士,畢業(yè)于北京航空航天大學(xué),華北電力大學(xué)計(jì)算機(jī)學(xué)院教師,主要專業(yè)方向?yàn)橛?jì)算機(jī)圖形學(xué),虛擬現(xiàn)實(shí)。
目 錄
第1章 計(jì)算機(jī)圖形學(xué)概述 1
1.1 計(jì)算機(jī)圖形學(xué)的應(yīng)用范圍和研究領(lǐng)域 1
1.1.1 應(yīng)用范圍 1
1.1.2 研究領(lǐng)域 2
1.2 顏色和圖像 3
1.2.1 人類視覺系統(tǒng) 3
1.2.2 顏色空間 4
1.2.3 光源 9
1.2.4 伽馬值 9
1.2.5 圖像表示 9
1.3 三維場景的光柵圖像生成算法 12
1.3.1 光線跟蹤 12
1.3.2 光柵化流水線 14
1.3.3 光線跟蹤與光柵化流水線 15
第2章 基本步驟 17
2.1 應(yīng)用程序接口 17
2.2 WebGL光柵化流水線 18
2.3 渲染流水線算法:初步渲染 20
2.4 WebGL的支持庫 29
2.5 NVMC簡介 29
2.5.1 架構(gòu) 30
2.5.2 NVMC類用于描述世界 30
2.5.3 基本客戶端 31
2.5.4 代碼的組織方式 35
第3章 三維模型表示方式 37
3.1 概述 37
3.1.1 現(xiàn)實(shí)世界數(shù)字化 37
3.1.2 幾何建模 38
3.1.3 過程建模 38
3.1.4 仿真 38
3.2 多邊形網(wǎng)格 38
3.2.1 三角形扇和三角形帶 39
3.2.2 流形 39
3.2.3 朝向 40
3.2.4 多邊形網(wǎng)格的優(yōu)勢和劣勢 40
3.3 隱式曲面 41
3.4 參數(shù)曲面 42
3.4.1 參數(shù)曲線 42
3.4.2 貝塞爾曲線 43
3.4.3 B樣條曲線 45
3.4.4 參數(shù)曲線擴(kuò)展為參數(shù)曲面 47
3.4.5 貝塞爾曲面 47
3.4.6 NURBS曲面 48
3.4.7 參數(shù)曲面的優(yōu)勢和劣勢 48
3.5 體素 49
3.5.1 體素渲染 49
3.5.2 體素表示的優(yōu)勢和劣勢 50
3.6 構(gòu)造實(shí)體幾何 50
3.7 細(xì)分曲面 51
3.7.1 Chaikin算法 51
3.7.2 4點(diǎn)算法 52
3.7.3 曲面的細(xì)分方法 52
3.7.4 細(xì)分方法分類 52
3.7.5 細(xì)分模式 53
3.7.6 細(xì)分曲面的優(yōu)勢和劣勢 55
3.8 多邊形網(wǎng)格的數(shù)據(jù)結(jié)構(gòu) 55
3.8.1 索引數(shù)據(jù)結(jié)構(gòu) 56
3.8.2 翼邊 57
3.8.3 半邊 57
3.9 第一個(gè)代碼:創(chuàng)建和顯示簡單圖元 58
3.9.1 立方體 58
3.9.2 錐體 59
3.9.3 柱體 61
3.10 自測題 63
第4章 幾何變換 65
4.1 幾何實(shí)體 65
4.2 基本幾何變換 66
4.2.1 平移 66
4.2.2 縮放 66
4.2.3 旋轉(zhuǎn) 67
4.2.4 用矩陣符號(hào)表示變換 67
4.3 仿射變換 69
4.3.1 幾何變換組合 69
4.3.2 繞任意點(diǎn)旋轉(zhuǎn)和縮放 70
4.3.3 剪切 71
4.3.4 逆變換和交換律 71
4.4 框架 72
4.4.1 一般框架和仿射變換 73
4.4.2 框架的層次 73
4.4.3 第三維 74
4.5 三維空間中的旋轉(zhuǎn) 75
4.5.1 軸-角旋轉(zhuǎn) 75
4.5.2 歐拉角旋轉(zhuǎn) 77
4.5.3 用四元數(shù)旋轉(zhuǎn) 78
4.6 觀察變換 79
4.6.1 設(shè)置觀察參考框架 79
4.6.2 投影 80
4.6.3 視見體 82
4.6.4 從規(guī)范化設(shè)備坐標(biāo)到窗口坐標(biāo) 83
4.6.5 小結(jié) 85
4.7 圖形繪制流水線中的變換 85
4.8 升級(jí)客戶端:第一個(gè)3D客戶端 86
4.8.1 組裝樹和汽車 87
4.8.2 定位樹和汽車 88
4.8.3 觀察場景 88
4.9 編碼 88
4.10 用矩陣堆棧操作變換矩陣 89
4.10.1 升級(jí)客戶端:增加從上面和后面的觀察 91
4.11 操縱視圖和對(duì)象 92
4.11.1 用鍵盤和鼠標(biāo)控制觀察 93
4.11.2 升級(jí)客戶端:增加攝影師觀察 94
4.11.3 用鍵盤和鼠標(biāo)操縱場景:虛擬跟蹤球 95
4.12 升級(jí)客戶端:創(chuàng)建觀察者相機(jī) 97
4.13 自我練習(xí) 98
第5章 頂點(diǎn)轉(zhuǎn)化為像素 100
5.1 光柵化 100
5.1.1 直線 100
5.1.2 多邊形(三角形) 103
5.1.3 屬性插值:質(zhì)心坐標(biāo) 105
5.1.4 小結(jié) 107
5.2 隱藏面消除 108
5.2.1 深度排序 108
5.2.2 掃描線 109
5.2.3 深度緩存 109
5.2.4 深度緩存精度和深度沖突 110
5.3 從片元到像素 111
5.3.1 丟棄測試 112
5.3.2 融合 112
5.3.3 走樣和反走樣 113
5.3.4 升級(jí)客戶端:從駕駛員角度進(jìn)行觀察 114
5.4 裁剪 117
5.4.1 裁剪線段 117
5.4.2 裁剪多邊形 119
5.5 剔除 119
5.5.1 背面剔除 119
5.5.2 視見體剔除 120
5.5.3 遮擋剔除 122
第6章 光照和著色 123
6.1 光與物質(zhì)之間的交互 123
6.2 輻射度量學(xué)簡介 127
6.3 反射率和雙向反射分布函數(shù)(BRDF) 129
6.4 繪制方程 131
6.5 評(píng)估繪制方程 132
6.6 計(jì)算表面法向量 133
6.6.1 折痕角 135
6.6.2 表面法向量變換 136
6.7 光源類型 136
6.7.1 方向光 137
6.7.2 升級(jí)客戶端:添加太陽光源 138
6.7.3 點(diǎn)光源 141
6.7.4 升級(jí)客戶端:添加路燈光源 142
6.7.5 聚光燈光源 143
6.7.6 面光源 144
6.7.7 升級(jí)客戶端:添加汽車的前燈和隧道的指示燈 145
6.8 Phong光照模型 146
6.8.1 概述和動(dòng)機(jī) 146
6.8.2 漫反射光分量 147
6.8.3 鏡面反射光分量 147
6.8.4 環(huán)境光分量 148
6.8.5 完整模型 148
6.9 著色技術(shù) 149
6.9.1 平面著色和Gouraud著色 149
6.9.2 Phong著色 150
6.9.3 升級(jí)客戶端:使用Phong光照 150
6.10 高級(jí)反射模型 151
6.10.1 Cook-Torrance模型 151
6.10.2 Oren-Nayar模型 152
6.10.3 Minnaert模型 153
6.11 自測題 153
第7章 紋理 155
7.1 引言:是否需要紋理映射 155
7.2 基本概念 155
7.3 紋理過濾:從片元紋理坐標(biāo)到片元顏色 157
7.3.1 紋理放大效應(yīng) 157
7.3.2 多重映射的紋理縮小效應(yīng) 158
7.4 透視校正插值:從頂點(diǎn)紋理坐標(biāo)到片元紋理坐標(biāo) 160
7.5 升級(jí)客戶端:為地面、街道和建筑物增加紋理 162
7.6 升級(jí)客戶端:添加后視鏡 165
7.7 紋理坐標(biāo)生成以及環(huán)境映射 167
7.7.1 球體映射 167
7.7.2 立方體映射 169
7.7.3 升級(jí)客戶端:為視域增加一個(gè)天空盒子 169
7.7.4 升級(jí)客戶端:為賽車增加反射效果 171
7.7.5 投影紋理映射 173
7.8 利用紋理映射為幾何模型增加細(xì)節(jié) 173
7.8.1 位移貼圖 173
7.8.2 法線貼圖 174
7.8.3 升級(jí)客戶端:添加瀝青 175
7.8.4 切空間法線貼圖 176
7.9 網(wǎng)格參數(shù)化 178
7.9.1 接縫 179
7.9.2 參數(shù)化的質(zhì)量 180
7.10 三維紋理及其用途 181
7.11 自測題 181
第8章 陰影 182
8.1 陰影現(xiàn)象 182
8.2 陰影貼圖 183
8.3 升級(jí)客戶端程序:增加陰影 185
8.4 陰影貼圖的偽影和局限 188
8.4.1 有限的數(shù)值精度:表面缺陷 188
8.4.2 有限的陰影圖分辨率:走樣 190
8.5 陰影體 191
8.5.1 構(gòu)建陰影體 192
8.5.2 算法 193
8.6 自測題 193
第9章 基于圖像的Impostor技術(shù) 195
9.1 圖像 195
9.2 布告板 196
9.2.1 靜態(tài)布告板 196
9.2.2 屏幕對(duì)齊布告板 197
9.2.3 升級(jí)客戶端:添加屏幕位置固定小工具 197
9.2.4 升級(jí)客戶端:添加鏡頭光斑效果 198
9.2.5 軸對(duì)齊布告板 201
9.2.6 動(dòng)態(tài)布告板 204
9.2.7 球形布告板 204
9.2.8 布告板云 204
9.3 光線跟蹤Impostor 206
9.4 自測題 207
第10章 高級(jí)技術(shù) 208
10.1 圖像處理 208
10.1.1 模糊 209
10.1.2 升級(jí)客戶端:一個(gè)具有景深的更好的攝像機(jī) 211
10.1.3 邊緣檢測 216
10.1.4 升級(jí)客戶端:卡通渲染 217
10.1.5 升級(jí)客戶端:一個(gè)更好的平移攝像機(jī) 219
10.1.6 銳化 223
10.2 環(huán)境光遮蔽 223
10.3 延遲著色 226
10.4 粒子系統(tǒng) 227
10.4.1 粒子系統(tǒng)的運(yùn)動(dòng) 227
10.4.2 粒子系統(tǒng)的渲染 228
10.5 自測題 228
第11章 全局光照 229
11.1 光線跟蹤 229
11.1.1 光線-代數(shù)表面相交 230
11.1.2 光線-參數(shù)表面相交 231
11.1.3 光線?場景相交 231
11.1.4 基于光線跟蹤的繪制 238
11.1.5 經(jīng)典光線跟蹤 238
11.1.6 路徑跟蹤 239
11.2 多通道算法 242
11.2.1 光子追蹤 242
11.2.2 輻射度 243
11.2.3 形狀因子 243
11.2.4 通量傳輸方程和輻射度傳輸方程 244
11.2.5 輻射度方程組求解 247
附錄A NVMC類 250
附錄B 向量積的特性 253
參考文獻(xiàn) 256