3D計算機圖形學(OpenGL版)

3D計算機圖形學(OpenGL版)

本書計畫的形成是依據我作為一個數學學術研究者的個人經驗和在多個套用計算機項目,在教授這門課程中,我確信需要這樣一本書,來介紹計算機圖形學的基礎數學理論。

圖書信息

作者:Samuel R.Buss著、唐龍等譯圖書詳細信息:
裝幀:平裝
印刷日期:2007-11-28

圖書簡介

本書計畫的形成是依據我作為一個數學學術研究者的個人經驗和在多個套用計算機項目,在教授這門課程中,我確信需要這樣一本書,來介紹計算機圖形學的基礎數學理論。
寫此書的另一動力是我涉及一些虛擬現實和計算機遊戲的項目。本書中所包含的許多話題作為主要內容提出,其原因是我發現它們常用在計算機遊戲應用程式中。當前計算機遊戲和虛擬現實應用程式是技術上要求很多的軟體項目:這些應用程式要求軟體能夠顯示令人信服的三維環境。通常,應用程式必須保持跟上多個目標的運動;維持住主要目標的有關光照,色彩和紋理等信息;並在螢幕上以每秒30或60幀顯示。此外,需要相當高的藝術性和創造性的技巧來做成為一種適宜的三維環境。毫不奇怪,這要求由大量程式設計師、藝術家和設計師進行成熟的軟體開發。

圖書前言

最近10年,計算機圖形學有著異常的發展,從二維(2D)圖形進步到複雜的、高質量的三維(3D)的環境。在娛樂方面,電影和計算機遊戲中廣泛地使用計算機圖形學。卡通片發展到完全靠計算機製作。甚至非卡通片也主要依靠計算機圖形學去開發特定的效果。例如,20世紀70年代中期電影“星球大戰”的成功就是個證明。
計算機圖形學在非娛樂方面也有重要套用。例如,在學習訓練中經常使用虛擬現實系統。對於科學計算可視化和計算機輔助設計(CAD),計算機圖形學是一種不可缺少的工具。我們需要有很好的方法,以便直觀地顯示大量數據集和大規模的科學仿真結果。
自從計算機出現以來,20世紀60年代初就開始熱起來的計算機圖形學的藝術和科學已經很有進展。計算機圖形學發展成一個豐富多彩,深奧且有吸引力的領域。本書的目的瞄準計算機圖形學的數學基礎,並用OpenGL編程做具體介紹。我深信對於計算機圖形學的任何一種高級套用,懂得數學的基礎知識都是很重要的。為此,本書試圖做到完全覆蓋計算機圖形學的基礎數學知識。此原則指導著本書的選材,選用對計算機圖形學的從業者,尤其是對軟體開發有實際重要意義的話題。我希望本書對用在該領域的標準工具,尤其是對這些工具背後的數學理論,做全面的介紹。
關於本書
本書計畫的形成是依據我作為一個數學學術研究者的個人經驗和在多個套用計算機項目,包括計算機遊戲和虛擬現實等項目的實踐。當我在San Digo加州大學(UCSD)給一個數學班講授計算機圖形學和幾何時,就開始寫本書。構成該課程的內容包括介紹用OpenGL編寫三維圖形學程式和計算機圖形學的數學基礎知識。在教授這門課程中,我確信需要這樣一本書,來介紹計算機圖形學的基礎數學理論。
寫此書的另一動力是我涉及一些虛擬現實和計算機遊戲的項目。本書中所包含的許多話題作為主要內容提出,其原因是我發現它們常用在計算機遊戲應用程式中。當前計算機遊戲和虛擬現實應用程式是技術上要求很多的軟體項目:這些應用程式要求軟體能夠顯示令人信服的三維環境。通常,應用程式必須保持跟上多個目標的運動;維持住主要目標的有關光照,色彩和紋理等信息;並在螢幕上以每秒30或60幀顯示。此外,需要相當高的藝術性和創造性的技巧來做成為一種適宜的三維環境。毫不奇怪,這要求由大量程式設計師、藝術家和設計師進行成熟的軟體開發。
3D計算機圖形學要求很寬廣的數學,這或許有點令人感到驚訝。然而,這是客觀存在的事實。而且,數學趨向於高雅和跨學科。計算機圖形學需用數學知識使來自各個領域的構造和方法組成在一起。這些領域包括:幾何學、計算方法、線性代數、數值分析、抽象代數、數據結構和算法。實際上,計算機圖形學是數學的組合性和優雅性套用的最好佐證。
本書呈現了套用和理論主題的結合。在更多的地方,我建議採用OpenGL,它是一種對3D圖形非常有用的、自由的、跨平台的編程環境。本書給出了可以免費網際網路下載的OpenGL程式的C和C++代碼,並介紹OpenGL如何實現本書所討論的許多數學概念。本書還描述了一個光線追蹤軟體包;該軟體包也可以從網際網路絡下載。在理論方面,本書強調計算機圖形學的數學基礎,遠超過我所見到的任何其他教材。對於有可能使用的諸如OpenGL或Direct3D這類工具,或者稍微擴展,CAD程式,我深信計算機圖形學的數學基礎知識都是相當重要的。
在本書中,所選擇數學主題依據是它們對於圖形學的重要性和相關性。當然,如果對計算機圖形學很關鍵的概念,例如,等軸測坐標的投影幾何表示,我會毫不猶豫地介紹。如果你要正確地使用計算機圖形軟體技術,良好的數學知識使無價的,如果你要開發新的或有創造性的使用計算機圖形學,很好數學知識就更重要。
如何使用本書
本書側重於作為教科書,作為自學的材料或是參考資料使用。特彆強調建議你試運隨本書提供的程式,寫一些你自己的OpenGL程式。請注意,本書最好與一本介紹用OpenGL編程的書聯繫一起讀。
第1章引言,介紹計算機圖形學的基本概念;繪製點、線和多邊形;以多邊形來造型;動畫;OpenGL編程入門。
第2章變換與視圖,討論繪製流水線,線性和仿射變換,二維和三維矩陣,平移和旋轉,homogeneous坐標,在OpenGL中的變換,正交視圖和透視變換,投影幾何,像素化,Gouraud和掃描線插值,Bresenham 算法。
第3章光照、亮度和著色,發表Phong光照模型;周圍環境光,漫反射和鏡面反射;在OpenGL中的光照和物質屬性;Cook?Torrance光照模型。
第4章均值與插值,提出線性插值;重心坐標,雙線性插值,凸面,雙曲線插值,球面的線性插值。這是較多數學的一章,帶有在本書其他地方用到的許多工具。在初次讀時,你也許希望跳過本章好多地方,當需要時再回來讀。
第5章紋理映射,討論紋理和紋理坐標,映射,超採樣和顫動,撞擊映射,環境映射,以及OpenGL中的紋理映射。
第6章色彩,色彩感知的發表,加和減色彩,RGB和HSL色彩的表達。
第7章貝塞爾曲線,三階和通用階次的貝塞爾曲線;De Casteljau 方法;細分;分段貝塞爾曲線;Hermite 多項式;貝塞爾曲面片;OpenGL中的貝塞爾曲線;有理貝塞爾曲線;圓錐曲線段,階次的提高;Catmull?Rom, Bessel?Overhauser插值,緊張?連續性?斜偏的樣條;貝塞爾曲面插入。
第8章B樣條曲線,描述規則的和不規則的B樣條及其特性,OpenGL中的B樣條,de Boor 算法,Blossoms,平滑特性,有理的B樣條(NURBS),圓錐形截面,結點插入,貝塞爾曲線的關係,以及用B樣條曲線插入。本章混合有介紹性話題和較專業化話題。我們給全部證明,但建議在初次讀時跳過這些證明。
第9章光線跟蹤,提出遞歸光線跟蹤、反射和透射,分散式光線跟蹤,逆向光線跟蹤,還有逃離以及避免光線跟蹤的技巧。
第10章相交測試,描述與球面、平面、三角形,多邊行及其他面的相交測試,和體邊界定址,還有修枝相交測試。
第11章輻射度,給出路徑,組成因子,以及輻射度公式;半立方體方法;Jacobi, Gauss?Seidel和Southwell重複方法
第12章動畫與運動學,討論關鍵幀,靈活地移入和靈活地移出,定方位表達方式,公式,插入公式,有關節剛性多形體的向前和反向的運動學。
附錄A數學背景,複習矢量,矩陣,線性代數和計算。
附錄B射線追蹤軟體包,介紹光線跟蹤軟體包。該軟體可免費下載。

圖書目錄

第1章引言1
1.1顯示的模型1
1.1.1矩形的像素矩陣1
1.1.2矢量圖形2
1.1.3多邊形的造型3
1.2坐標、點、線和多邊形4
1.2.1坐標系統4
1.2.2在OpenGL中幾何形體4
1.3適合動畫的雙緩衝區13
第2章變換與觀察15
2.1二維空間中的變換16
2.1.1基本定義17
2.1.2線性變換的矩陣表示18
2.1.3剛性變換和旋轉20
2.1.4齊次坐標23
2.1.5仿射變換的矩陣表示23
2.1.6OpenGL中的二維變換25
2.1.7再討論組合變換28
2.1.8二維投影幾何學*29
2.2三維空間中的變換30
2.2.1從二維空間到三維空間31
2.2.2OpenGL中的變換矩陣32
2.2.3旋轉矩陣的推導36
2.2.4歐拉(Euler)定理39
2.2.5三維投影幾何學*40
2.3觀察變換與透視41
2.3.1正投影變換43
2.3.2透視變換43
2.3.3直線映射到直線47
2.3.4投影的另一個套用:
陰影47
2.3.5OpenGL 透視變換48
2.4映射到像素52
2.4.1Bresenham 算法55
2.4.2浮點數四捨五入的危險57
第3章光照、亮度和著色60
3.1Phong光照模型61
3.1.1漫反射63
3.1.2鏡面反射64
3.1.3環境反射和發射光66
3.1.4綜合: 多種光源和顏色66
3.1.5Gouraud和Phong渲染67
3.1.6計算表面法向70
3.1.7仿射變換及法向量72
3.1.8OpenGL中的光照
和材料屬性73
3.2Cook?Torrance光照模型*78
3.2.1雙向反射78
3.2.2Cook?Torrance模型
概述*79
3.2.3微平面分布項*81
3.2.4幾何表面遮蔽項81
3.2.5Fresnel項85
第4章均值與插值89
4.1線性插值89
4.1.1兩點之間的插值89
4.1.2加權平均和仿射組合90
4.1.3三個點的插值:
重心坐標92
4.2雙線性和三線性插值96
4.2.1雙線性插值96
4.2.2反向雙線性插值100
4.2.3三線性插值104
4.3凸集和加權平均105
4.4插值和齊次坐標107
4.5雙曲線插值108
4.6球面線性插值109
第5章紋理映射112
5.1圖像的紋理映射112
5.1.1紋理插值113
5.1.2紋理坐標值的確定114
5.1.3MIP映射和反走樣117
5.1.4隨機超採樣119
5.2凹凸貼圖120
5.3環境映射123
5.4OpenGL中的紋理映射124
5.4.1載入紋理數據124
5.4.2指定紋理坐標126
5.4.3顏色調製126
5.4.4單獨的高光127
5.4.5管理多個紋理數據128
5.4.6OpenGL中的環境映射128
第6章彩色131
6.1色彩感知131
6.2色彩值的表示133
6.2.1加色法和減色法133
6.2.2RGB顏色的表示134
6.2.3色調、飽和度和亮度135
第7章貝塞爾曲線139
7.1三次貝塞爾曲線140
7.2De Casteljau算法142
7.3遞歸細分算法143
7.4分段貝塞爾曲線146
7.5Hermite多項式148
7.6任意次的貝塞爾曲線149
7.7再談de Casteljau算法152
7.8再談遞歸細分算法153
7.9曲線的升階154
7.10貝塞爾曲面156
7.10.1貝塞爾曲面的基本
性質156
7.10.2貝塞爾曲面片的拼接158
7.11OpenGL中的貝塞爾曲線
和曲面160
7.11.1貝塞爾曲線160
7.11.2貝塞爾曲面162
7.12有理貝塞爾曲線163
7.13用有理貝塞爾曲線表示
圓錐曲線段165
7.14旋轉曲面169
7.15使用貝塞爾曲線進行插值171
7.15.1Catmull?Rom樣條
函式172
7.15.2Bessel?Overhauser
樣條函式173
7.15.3張力?連續性?偏移
樣條函式175
7.16使用貝塞爾曲面進行插值★177
第8章B樣條曲線182
8.1均勻三次B樣條183
8.2非均勻B樣條186
8.3非均勻B樣條示例188
8.4非均勻B樣條的性質193
8.5de Boor算法196
8.6Blossoms算法199
8.7B樣條曲線的導數和光滑性202
8.8節點插值204
8.9貝塞爾曲線和B樣條曲線207
8.10升階208
8.11有理B樣條和NURBS曲面209
8.12OpenGL中的B樣條
和NURBS曲面211
8.13B樣條插值211
第9章光線跟蹤214
9.1光線跟蹤基礎215
9.1.1局部光照和反射光線219
9.1.2透射光線220
9.1.3算法整合223
9.2高級光線跟蹤技術225
9.2.1分散式光線跟蹤225
9.2.2反向光線跟蹤231
9.3不使用光線跟蹤的特殊效果232
第10章相交測試238
10.1有關射線的快速相交測試239
10.1.1射線—球相交239
10.1.2射線—平面相交241
10.1.3射線—三角形相交242
10.1.4射線—凸超多面體
相交244
10.1.5射線—圓柱體相交247
10.1.6射線—二次曲面相交248
10.1.7射線—貝塞爾面片
相交248
10.2相交測試的剪枝算法249
第11章輻射度253
11.1輻射度方程255
11.1.1面片、光照強度
和形狀因子255
11.1.2輻射度算法的
高級描述257
11.2形狀因子的計算258
11.2.1光線跟蹤方法259
11.2.2半立方體法260
11.3解輻射度方程262
11.3.1疊代方法262
11.3.2雅可比(Jacobi)疊代265
11.3.3高斯?塞德爾
(Gauss?Seidel)疊代265
11.3.4射擊(shooting)法266
第12章動畫與運動學268
12.1概述268
12.1.1由傳統動畫發展
而來的技術268
12.1.2計算機動畫270
12.2動畫中的位置271
12.2.1漸進: 固定目標271
12.2.2漸進: 移動目標272
12.3方向的表示273
12.3.1旋轉矩陣274
12.3.2偏轉、傾斜和滾動274
12.3.3四元組276
12.3.4四元組的理論發展277
12.3.5用四元組表示旋轉279
12.3.6四元組和旋轉矩陣
的轉換281
12.3.7四元組的插值283
12.4運動學284
12.4.1剛性連線體和關節285
12.4.2前向運動學286
12.4.3反向運動學,
問題的提出288
12.4.4反向運動學,
尋找局部解290
附錄A數學背景知識295
A.1預備知識295
A.2向量和向量積296
A.2.1R2中的向量296
A.2.2R3中的向量299
A.3矩陣300
A.3.1R3中矩陣和向量的積301
A.3.2行列式,逆矩陣和
伴隨矩陣302
A.3.3線性子空間*302
A.4多元微積分304
A.4.1多元函式304
A.4.2向量值函式305
A.4.3多元向量值函式305
附錄B光線跟蹤軟體包307
B.1介紹307
B.2高層光線跟蹤函式308
B.3光線跟蹤API311
B.3.1指定光源311
B.3.2定義相機和視窗312
B.3.3按像素陣列工作314
B.3.4定義材質314
B.3.5定義可見物體315
B.3.6可見的球316
B.3.7可視的三角形和
平行四邊形317
B.3.8可見的橢球318
B.3.9可視的圓柱體318
B.3.10可視的錐體320
B.3.11可視的平行六面體321
B.3.12可視的圓環322
B.3.13可視的貝塞爾面片323
B.3.14紋理映射325
索引328

相關詞條

熱門詞條

聯絡我們