這是一本講解如何使用Python 進行系統(tǒng)化圖形引擎開發(fā)的圖書。本書基于作者長期從事圖形引擎開發(fā)工作的經(jīng)驗,結(jié)合簡單易懂的Python 語言和PyOpenGL 模塊,通過對引擎開發(fā)知識由淺入深的編排和講解,讓廣大對圖形學(xué)感興趣的"小白開發(fā)者一步步掌握圖形引擎的開發(fā)流程和實現(xiàn)原理,并在這個過程中熟練掌握OpenGL,進而有能力基于各種開發(fā)語言進行圖形引擎的開發(fā)工作。 本書結(jié)構(gòu)緊湊、內(nèi)容翔實、由淺入深,是學(xué)習(xí)、掌握圖形引擎開發(fā)入門知識的重要參考書。
卞安,網(wǎng)名紅孩兒,游戲行業(yè)知名引擎技術(shù)專家,一站式Python開發(fā)工具PyMe作者,多年從事游戲引擎和工具化產(chǎn)品的研發(fā)及運營工作。曾擔(dān)任端游企業(yè)無限時空引擎總監(jiān)、觸控科技Cocos引擎產(chǎn)品總監(jiān)、玩吧技術(shù)專家組組長。曾獨立開發(fā)游戲引擎工具化軟件《紅孩兒工具箱》,并被知名企業(yè)投資;撰寫了大量游戲引擎技術(shù)類文章,其中部分被官方媒體收錄,被評為知名游戲引擎Cocos最有價值專家(CVP)及CSDN博客專家,在游戲行業(yè)和Python領(lǐng)域有一定的知名度,目前在CSDN擔(dān)任InsCode AI IDE運營負(fù)責(zé)人。
目 錄
第1章 圖形引擎概述 1
1.1 圖形引擎發(fā)展史 1
1.1.1 卡馬克時代 1
1.1.2 UE與Unity 2
1.1.3 國產(chǎn)引擎的發(fā)展 4
1.2 從Python編程開始 7
1.2.1 PyOpenGL開發(fā)環(huán)境搭建 7
1.2.2 引擎工具開發(fā) 11
第2章 引擎開發(fā)理論入門 13
2.1 基本的OpenGL渲染流程 13
2.1.1 認(rèn)識渲染管線 13
2.1.2 圖形編程過程原理 14
2.2 認(rèn)識頂點與索引緩沖區(qū) 16
2.2.1 頂點世界的起點 16
2.2.2 VBO、IBO和VAO 18
2.3 認(rèn)識屏幕緩沖區(qū) 21
2.3.1 屏幕緩沖區(qū) 21
2.3.2 邏輯緩沖區(qū) 22
2.4 認(rèn)識顏色與紋理 23
2.4.1 顏色與像素 23
2.4.2 紋理的本質(zhì) 25
2.4.3 圖片的使用 30
2.4.4 紋理混合 32
2.5 向量、矩陣與四元數(shù) 34
2.5.1 向量 34
2.5.2 矩陣基本運算 35
2.5.3 四元數(shù) 39
2.5.4 MVP矩陣與3D成像 39
2.6 認(rèn)識攝像機 41
2.6.1 正交與投影 41
2.6.2 攝像機控制 42
2.7 基本圖形繪制 43
2.7.1 繪制一個點 43
2.7.2 繪制一條線 45
2.7.3 繪制三角形與四邊形 47
2.7.4 繪制一個立方體 50
第3章 Shader入門與實踐 56
3.1 GLSL語法入門 56
3.1.1 GLSL基本流程 56
3.1.2 GLSL基本語法 57
3.2 GLSL 2D圖效處理實踐 63
3.2.1 基本顏色處理 63
3.2.2 過濾器效果 70
3.2.3 過渡變化效果 72
3.3 GLSL 3D圖效處理實踐 85
3.3.1 基本頂點動畫 85
3.3.2 基本材質(zhì)處理 93
3.3.3 簡單霧效實現(xiàn) 103
第4章 動畫原理與實踐 111
4.1 動畫的基本原理 111
4.1.1 序列幀動畫 111
4.1.2 插值動畫 113
4.1.3 攝像機動畫 122
4.1.4 骨骼蒙皮動畫 127
4.2 動畫過程實踐 130
播放序列幀動畫 130
第5章 模型原理與實踐 138
5.1 認(rèn)識模型 138
5.1.1 模型與材質(zhì) 138
5.1.2 骨骼模型 143
5.1.3 動作的融合與混合 145
5.1.4 模型LOD 147
5.2 模型解析實踐 148
5.2.1 加載OBJ模型 148
5.2.2 加載FBX模型 155
5.2.3 加載PMM模型 168
5.3 模型觀察器 171
5.3.1 工具界面設(shè)計與實現(xiàn) 171
5.3.2 模型的加載處理 175
5.3.3 觀察攝像機控制 178
5.3.4 模型材質(zhì)編輯 180
5.3.5 骨骼與動畫 184
第6章 認(rèn)識光和影 186
6.1 光照原理入門 186
6.1.1 基礎(chǔ)光照模型 186
6.1.2 延遲光照原理 194
6.2 光照編程實踐動態(tài)點光源 197
6.3 影子原理入門 202
6.3.1 面片影子 203
6.3.2 ShadowMap 204
6.3.3 體積陰影 206
6.4 影子編程實踐實現(xiàn)模型的ShadowMap 207
第7章 粒子系統(tǒng)入門 215
7.1 粒子系統(tǒng)原理 215
7.1.1 粒子的基本結(jié)構(gòu) 215
7.1.2 粒子發(fā)射器 217
7.2 粒子系統(tǒng)編程實踐 221
7.2.1 點精靈粒子:下雪啦! 221
7.2.2 模型粒子:彩球發(fā)射器 223
7.3 粒子編輯器入門 227
7.3.1 編輯器的界面實現(xiàn) 227
7.3.2 粒子效果編輯 233
7.3.3 效果加載與保存 235
第8章 場景渲染入門 238
8.1 天空渲染 238
8.1.1 天空盒 238
8.1.2 公告板云 240
8.1.3 場景霧的渲染 241
8.1.4 風(fēng)、雨、雪 242
8.2 地表渲染 245
8.2.1 認(rèn)識地表網(wǎng)格 245
8.2.2 高度圖 252
8.2.3 多紋理混合 257
8.2.4 地表LOD 261
8.3 水面渲染 264
8.3.1 水體的生成 264
8.3.2 反射與折射 268
8.3.3 波浪動畫 268
8.4 植被與建筑 271
8.4.1 草體渲染 272
8.4.2 樹木與建筑 277
8.5 場景編輯器 288
8.5.1 編輯器的界面框架 288
8.5.2 地表編輯 290
8.5.3 模型擺放 299
8.5.4 特效擺放 302
8.5.5 環(huán)境設(shè)置 302
8.5.6 光照烘焙 302
8.5.7 場景保存與加載 303
第9章 畫面后期效果 306
9.1 后期效果基本原理 306
9.2 后期效果實踐 308
第10章 UI系統(tǒng)入門 312
10.1 UI系統(tǒng)設(shè)計原理 312
10.1.1 基本控件設(shè)計 312
10.1.2 鼠標(biāo)事件處理 323
10.1.3 復(fù)合控件設(shè)計 329
10.1.4 文字輸入處理 335
10.2 UI系統(tǒng)編程實踐編寫一個簡單的登錄界面 340
10.3 UI編輯器入門 344
10.3.1 編輯器界面設(shè)計 345
10.3.2 控件的創(chuàng)建 347
10.3.3 控件的選中與拖動 353
10.3.4 控件列表與屬性編輯 357
10.3.5 界面保存與加載 364
第11章 圖形引擎設(shè)計與優(yōu)化 370
11.1 框架設(shè)計 一個簡單的圖形引擎框架 370
11.2 無盡的優(yōu)化 371
11.2.1 模型批次 371
11.2.2 頂點優(yōu)化 373
11.2.3 紋理優(yōu)化 373
11.2.4 渲染狀態(tài)優(yōu)化 374
11.2.5 Shader優(yōu)化 374
11.2.6 計算壓力優(yōu)化 374
11.2.7 UI渲染優(yōu)化 374
11.2.8 設(shè)計優(yōu)化 375
附錄A 小白的成長路線 376