計算機圖形學是研究利用計算機進行圖形繪制的科學,其主要研究內容為利用計算機實現(xiàn)將三維模型投影到平面的方法。本書首先搭建基本的計算機圖形學知識體系,然后在此基礎上,圍繞GPU管線的處理結構分析管線各個階段的實現(xiàn)算法;同時介紹WebGL在編程方面的應用,使讀者不僅能夠掌握圖形應用軟件的編程方法,還能明白計算機圖形學的基本原理。
編者在本書中融入了大量實例的源代碼,可以為讀者應用不同的理論知識進行實踐提供參考。此外,與本書配套的計算機圖形學實驗平臺上不僅展示了多個實驗下多位學生的三維交互作品,以供院校師生參考學習,而且支持讀者注冊并使用該平臺,進行代碼上傳與調試及作品展示等,這可以極大程度地提升讀者的實戰(zhàn)技能。
本書可作為高等院校計算機、數(shù)字媒體、軟件工程等相關專業(yè)的教材,也可供圖形應用領域的技術人員學習使用,還可作為圖形研究人員的參考用書。
1.系統(tǒng)構建知識體系,緊跟領域技術發(fā)展。
本書以管線為骨架,通過深層次地融合相關領域的知識,精簡固定管線中較為陳舊的內容,提綱性地建立了計算機圖形學的知識體系;同時,加大對現(xiàn)有可編程管線模型及真實感繪制相關技術與算法的講解力度,讓讀者在了解基礎知識體系的基礎上,能夠緊跟領域技術發(fā)展,進而培養(yǎng)用發(fā)展的眼光看專業(yè)技術的思維。
2.融入豐富編程實例,培養(yǎng)讀者實戰(zhàn)技能。
本書從計算機圖形軟件開發(fā)到 WebGL 編程的相關部分,通過細致地講解編程技術,幫助讀者培養(yǎng) WebGL 編程的基本能力;在此基礎上,分別針對各章的知識點及相關理論的算法,給出大量對應的 WebGL 編程實例,以對相關理論的算法進行應用分析,進而幫助讀者培養(yǎng)過硬的 WebGL 編程實戰(zhàn)技能。
3.搭建作品展示平臺,服務師生實踐應用。
為了便于讀者對學習效果進行檢驗,同時協(xié)助高校教師更好地開展實踐教學工作,本書編者團隊借助互聯(lián)網(wǎng) 技術,創(chuàng)造性地搭建了計算機圖形學實驗平臺。該平臺不僅支持讀者上傳并調試作品代碼,而且支持讀者進行作品的三維交互展示等,能為院校教師檢測教學效果提供便利的途徑。院校師生可以通過人郵教育社區(qū)(www.ryjiaoyu.com)獲取該平臺的網(wǎng)址。
4.配套多類型教輔資源,系統(tǒng)化服務教師教學。
為了更好地幫助高等院校教師開展計算機圖形學課程的教學工作,編者為本書配備了PPT、教學大綱、教案、源代碼、課后習題答案、實驗大綱等教輔資源,用書教師可以通過人郵教育社區(qū)進行下載。此外,編者還組建了針對計算機圖形學課程的教師服務與交流群,以方便授課教師進行教學心得體會分享、教學實際問題討論、實驗開展方式交流等。
匡平:
博士,電子科技大學計算機科學與工程學院副教授,主要從事圖像處理、人工智能和模式識別等領域的研究與教學工作,主持國家及省部級科研項目20余項,以第一作者發(fā)表SCI/EI論文20 余篇,獲四川省科技進步獎三等獎2項(排名第一)、國家發(fā)明專利8項,著有《匯編語言程序設計》等教材。
【章名目錄】
【第 1篇】基礎篇
第 1章 概述 2
第 2章 圖形處理管線 14
第3章 WebGL編程 34
第4章 光柵式圖形系統(tǒng) 62
第5章 變換 81
第6章 三維模型表示 116
第7章 簡單光照模型 149
【第 2篇】應用篇
第8章 WebGL高級應用 161
第9章 全局光照 182
第 10章 實時物理渲染與非真實感繪制 202
【詳細目錄】
第 1篇 基礎篇
第 1章 概述 2
1.1 計算機圖形學相關課程 2
1.2 計算機圖形學的發(fā)展 3
1.3 計算機圖形系統(tǒng) 3
1.3.1 光柵掃描顯示 4
1.3.2 圖形處理單元架構 6
1.4 計算機圖形軟件 9
1.4.1 Direct3D和OpenGL概述 9
1.4.2 WebGL概述 10
1.4.3 WebXR概述 11
1.5 本章小結 13
習題 13
第 2章 圖形處理管線 14
2.1 GPU與CPU的區(qū)別 14
2.1.1 計算機繪制概述 15
2.1.2 成像原理 15
2.2 固定管線流程 16
2.2.1 處理流程 16
2.2.2 模型表達與繪制 17
2.2.3 管線架構 19
2.3 可編程管線 20
2.3.1 可編程管線的基本概念 20
2.3.2 著色器程序 22
2.3.3 管線中的數(shù)據(jù)流 23
2.4 buffer編程 25
2.4.1 幀緩存 25
2.4.2 深度緩存 26
2.4.3 模板緩存 27
2.4.4 PBO與FBO 28
2.4.5 紋理buffer 30
2.5 本章小結 32
習題 33
第3章 WebGL編程 34
3.1 搭建開發(fā)平臺 34
3.1.1 Three.js簡介 34
3.1.2 Three.js的環(huán)境配置 35
3.1.3 搭建Web服務器 35
3.1.4 創(chuàng)建第 一個Three.js實例 36
3.2 JavaScript基礎 37
3.2.1 核心語句和語法 38
3.2.2 對象和數(shù)組 40
3.2.3 在網(wǎng)頁中嵌入JavaScript代碼 41
3.2.4 與網(wǎng)頁進行交互 42
3.3 場景搭建 44
3.3.1 畫布設置 44
3.3.2 對象設置 45
3.3.3 相機設置 47
3.3.4 交互設置 48
3.4 坐標系與觀察變換 51
3.4.1 場景坐標系與圖像結果坐標系 51
3.4.2 觀察變換 52
3.5 Three.js基本程序框架 54
3.6 本章小結 60
習題 60
第4章 光柵式圖形系統(tǒng) 62
4.1 線段光柵化 62
4.1.1 Bresenham算法 63
4.1.2 曲線光柵化方法 65
4.2 字符光柵化 66
4.3 反走樣技術 67
4.4 多邊形填充技術 68
4.4.1 內外測試 68
4.4.2 掃描線多邊形填充算法 69
4.4.3 其他填充方法 71
4.5 紋理技術 72
4.5.1 紋理坐標 72
4.5.2 GLSL紋理貼圖 72
4.5.3 紋理上下文 74
4.5.4 過程紋理 74
4.5.5 凹凸貼圖 77
4.6 WebGL實例分析 79
4.7 本章小結 80
習題 80
第5章 變換 81
5.1 數(shù)學基礎 81
5.1.1 向量 81
5.1.2 矩陣 83
5.1.3 齊次坐標 85
5.2 二維幾何變換 85
5.2.1 矩陣表達 85
5.2.2 復合變換矩陣的構造 87
5.3 三維幾何變換 90
5.3.1 矩陣表達 90
5.3.2 復合變換矩陣的構造 91
5.3.2 四元數(shù) 93
5.4 投影變換 95
5.4.1 平行投影 95
5.4.2 透視投影 98
5.5 裁剪技術 101
5.5.1 線段裁剪 101
5.5.2 多邊形裁剪 105
5.5.3 三維裁剪 107
5.6 實例分析 109
5.6.1 基本概念 109
5.6.2 基本矩陣函數(shù) 109
5.6.3 旋轉、平移和縮放 110
5.6.4 繞任意點的旋轉 110
5.6.5 三維模型示例 111
5.7 本章小結 114
習題 114
第6章 三維模型表示 116
6.1 多邊形網(wǎng)格表示 116
6.1.1 基本概念 117
6.1.2 多邊形網(wǎng)格的數(shù)據(jù)結構 117
6.1.3 三角化算法 122
6.1.4 網(wǎng)格簡化 124
6.2 參數(shù)曲面表示 127
6.2.1 Bézier曲線 127
6.2.2 Bézier曲面 131
6.2.3 B樣條曲線 134
6.2.4 B樣條曲面 139
6.3 細分表示 141
6.3.1 四邊形網(wǎng)格細分的Catmull-Clark方法 142
6.3.2 三角形網(wǎng)格細分的Loop方法 142
6.4 其他表示 143
6.4.1 點表示 143
6.4.2 實體表示 144
6.5 實例分析 145
6.6 本章小結 147
習題 147
第7章 簡單光照模型 149
7.1 光反射作用的組成部分 149
7.1.1 環(huán)境光 149
7.1.2 漫反射光 150
7.1.3 鏡面反射光 151
7.2 簡單光照模型 152
7.2.1 Phong模型 152
7.2.2 明暗處理方法 153
7.3 實例分析 156
7.4 本章小結 158
習題 158
第 2篇 應用篇
第8章 WebGL高級應用 161
8.1 Shader基礎 161
8.1.1 WebGL高級渲染 161
8.1.2 Shader簡介 162
8.2 Shader程序 169
8.2.1 內置變量與函數(shù) 169
8.2.2 示例說明 172
8.2.3 Three.js中的Shader材質 178
8.3 本章小結 181
習題 181
第9章 全局光照 182
9.1 全局光照簡介 182
9.1.1 基本概念 183
9.1.2 環(huán)境光遮蔽 185
9.1.3 渲染方程 185
9.2 光線跟蹤算法 187
9.2.1 光線跟蹤算法原理 187
9.2.2 算法核心步驟 188
9.2.3 算法實現(xiàn)細節(jié) 190
9.2.4 算法改進 195
9.3 輻射度算法 196
9.3.1 輻射度算法原理 196
9.3.2 輻射度方程 196
9.3.3 求解輻射度方程 197
9.3.4 計算排列因子 198
9.3.5 實現(xiàn)輻射度算法 200
9.4 本章小結 201
習題 201
第 10章 實時物理渲染與非真實感繪制 202
10.1 實時物理渲染 202
10.1.1 PBR技術 202
10.1.2 BRDF模型技術 208
10.1.3 WebGL材質實例分析 213
10.2 非真實感渲染 215
10.2.1 概述 215
10.2.2 分類 216
10.2.3 卡通渲染 217
10.2.4 其他風格的NPR渲染 222
10.3 本章小結 223
習題 223
參考文獻 224