本書將介紹如何直接在流覽器中創建漂亮的3D場景和動畫,並且充分發揮WebGL和現代流覽器的潛能。首先介紹基本概念和基礎元件,然後通過逐漸擴展示例代碼逐步深入講解更多高級技術。
在本書中讀者將學到如何從外部載入3D模型和具有真實效果的材質紋理、學習使用Three.js提供的攝像機元件來實現在3D場景中飛行和走動、如何將HTML5視頻和畫布作為材質貼在3D模型表面。此外還將學習變形動畫和骨骼動畫,甚到還會涉及在場景中使用物理類比的方法,例如重力、碰撞檢測等等。
目錄
前言
第1章 使用Three.js創建你的第壹個三維場景1
1.1 準備工作3
1.2 獲取源碼5
1.2.1 通過Git獲取代碼倉庫5
1.2.2 下載並解壓縮檔案檔5
1.2.3 測試示例6
1.3 搭建HTML框架9
1.4 渲染並查看三維物件10
1.5 添加材質、光源和陰影效果14
1.6 讓你的場景動起來16
1.6.1 引入requestAnimationFrame()方法16
1.6.2 旋轉立方體18
1.6.3 彈跳球19
1.7 使用dat.GUI簡化試驗流程20
1.8 場景對流覽器的自我調整22
1.9 總結23
第2章 構建Three.js應用的基本組件24
2.1 創建場景24
2.1.1 場景的基本功能25
2.1.2 給場景添加霧化效果29
2.1.3 使用overrideMaterial屬性30
2.2 幾何體和網格32
2.2.1 幾何體的屬性和方法32
2.2.2 網格物件的屬性和方法36
2.3 選擇合適的攝像機40
2.3.1 正交投影攝像機和透視投影攝像機41
2.3.2 將攝像機聚焦在指定點上45
2.4 總結46
第3章 學習使用Three.js中的光源47
3.1 Three.js中不同種類的光源47
3.2 基礎光源48
3.2.1 THREE.AmbientLight48
3.2.2 THREE.SpotLight53
3.2.3 THREE.PointLight58
3.2.4 THREE.DirectionalLight62
3.3 特殊光源63
3.3.1 THREE.HemisphereLight64
3.3.2 THREE.AreaLight65
3.3.3 鏡頭光暈67
3.4 總結69
第4章 使用Three.js的材質70
4.1 理解材質的共有屬性71
4.1.1 基礎屬性71
4.1.2 融合屬性73
4.1.3 高ji屬性73
4.2 從簡單的網格材質開始74
4.2.1 THREE.MeshBasicMaterial75
4.2.2 THREE.MeshDepthMaterial77
4.2.3 聯合材質79
4.2.4 THREE.MeshNormalMaterial80
4.2.5 在單幾何體上使用多種材質82
4.3 高ji材質84
4.3.1 THREE.MeshLambertMaterial85
4.3.2 THREE.MeshPhongMaterial86
4.3.3 THREE.MeshStandardMaterial88
4.3.4 THREE.MeshPhysicalMaterial89
4.3.5 用THREE.ShaderMaterial創建自己的著色器89
4.4 線性幾何體的材質95
4.4.1 THREE.LineBasicMaterial95
4.4.2 THREE.LineDashedMaterial97
4.5 總結97
第5章 學習使用幾何體99
5.1 Three.js提供的基礎幾何體101
5.1.1 二維幾何體101
5.1.2 三維幾何體109
5.2 總結120
第6章 高ji幾何體和二元操作122
6.1 THREE.ConvexGeometry122
6.2 THREE.LatheGeometry124
6.3 通過拉伸創建幾何體125
6.3.1 THREE.ExtrudeGeometry126
6.3.2 THREE.TubeGeometry127
6.3.3 從SVG拉伸129
6.4 THREE.ParametricGeometry131
6.5 創建三維文本133
6.5.1 渲染文本133
6.5.2 添加自訂字體136
6.6 使用二元操作組合網格137
6.6.1 subtract函數139
6.6.2 intersect函數142
6.6.3 union函數143
6.7 總結143
第7章 粒子和精靈145
7.1 理解粒子145
7.2 THREE.Points和THREE.PointsMaterial148
7.3 使用HTML5畫布樣式化粒子151
7.3.1 在THREE.CanvasRenderer中使用HTML5畫布151
7.3.2 在WebGLRenderer中使用HTML5畫布152
7.4 使用紋理樣式化粒子155
7.5 使用精靈貼圖160
7.6 從高ji幾何體創建THREE.Points163
7.7 總結165
第8章 創建、載入高ji網格和幾何體166
8.1 幾何體組合與合併166
8.1.1 物件組合166
8.1.2 將多個網格合併成一個網格168
8.2 從外部資源載入幾何體170
8.2.1 以Three.js的JSON格式保存和載入171
8.2.2 使用Blender177
8.3 導入三維格式檔181
8.3.1 OBJ和MTL格式181
8.3.2 載入Collada模型185
8.3.3 從其他格式的檔中載入模型186
8.3.4 展示蛋白質資料銀行中的蛋白質190
8.3.5 從PLY模型中創建粒子系統192
8.4 總結194
第9章 創建動畫和移動攝像機195
9.1 基礎動畫195
9.1.1 簡單動畫196
9.1.2 選擇物件197
9.1.3 使用Tween.js實現動畫198
9.2 使用攝像機201
9.2.1 軌跡球控制器202
9.2.2 飛行控制器204
9.2.3 第壹視角控制器205
9.2.4 軌道控制器207
9.3 變形動畫和骨骼動畫208
9.3.1 用變形目標創建動畫209
9.3.2 用骨骼和蒙皮創建動畫217
9.4 使用外部模型創建動畫220
9.4.1 使用Blender創建骨骼動畫220
9.4.2 從Collada模型載入動畫223
9.4.3 從雷神之錘模型中載入動畫225
9.4.4 使用gltfLoader225
9.4.5 利用fbxLoader顯示動作捕捉模型動畫227
9.4.6 通過xLoader載入古老的DirectX模型228
9.4.7 利用BVHLoader顯示骨骼動畫230
9.4.8 如何重用SEA3D模型231
9.5 總結232
第10章 載入和使用紋理233
10.1 將紋理應用於材質233
10.1.1 載入紋理並應用到網格233
10.1.2 使用凹凸貼圖創建褶皺238
10.1.3 使用法向貼圖創建更加細緻的凹凸和褶皺239
10.1.4 使用移位貼圖來改變頂點位置240
10.1.5 用環境光遮擋貼圖實現細節陰影241
10.1.6 用光照貼圖產生假陰影243
10.1.7 金屬光澤度貼圖和粗糙度貼圖244
10.1.8 Alpha貼圖246
10.1.9 自發光貼圖247
10.1.10 高光貼圖248
10.1.11 使用環境貼圖創建偽鏡面反射效果250
10.2 紋理的高ji用途255
10.2.1 自訂UV映射255
第1章 使用Three.js創建你的第壹個三維場景1
1.1 準備工作3
1.2 獲取源碼5
1.2.1 通過Git獲取代碼倉庫5
1.2.2 下載並解壓縮檔案檔5
1.2.3 測試示例6
1.3 搭建HTML框架9
1.4 渲染並查看三維物件10
1.5 添加材質、光源和陰影效果14
1.6 讓你的場景動起來16
1.6.1 引入requestAnimationFrame()方法16
1.6.2 旋轉立方體18
1.6.3 彈跳球19
1.7 使用dat.GUI簡化試驗流程20
1.8 場景對流覽器的自我調整22
1.9 總結23
第2章 構建Three.js應用的基本組件24
2.1 創建場景24
2.1.1 場景的基本功能25
2.1.2 給場景添加霧化效果29
2.1.3 使用overrideMaterial屬性30
2.2 幾何體和網格32
2.2.1 幾何體的屬性和方法32
2.2.2 網格物件的屬性和方法36
2.3 選擇合適的攝像機40
2.3.1 正交投影攝像機和透視投影攝像機41
2.3.2 將攝像機聚焦在指定點上45
2.4 總結46
第3章 學習使用Three.js中的光源47
3.1 Three.js中不同種類的光源47
3.2 基礎光源48
3.2.1 THREE.AmbientLight48
3.2.2 THREE.SpotLight53
3.2.3 THREE.PointLight58
3.2.4 THREE.DirectionalLight62
3.3 特殊光源63
3.3.1 THREE.HemisphereLight64
3.3.2 THREE.AreaLight65
3.3.3 鏡頭光暈67
3.4 總結69
第4章 使用Three.js的材質70
4.1 理解材質的共有屬性71
4.1.1 基礎屬性71
4.1.2 融合屬性73
4.1.3 高ji屬性73
4.2 從簡單的網格材質開始74
4.2.1 THREE.MeshBasicMaterial75
4.2.2 THREE.MeshDepthMaterial77
4.2.3 聯合材質79
4.2.4 THREE.MeshNormalMaterial80
4.2.5 在單幾何體上使用多種材質82
4.3 高ji材質84
4.3.1 THREE.MeshLambertMaterial85
4.3.2 THREE.MeshPhongMaterial86
4.3.3 THREE.MeshStandardMaterial88
4.3.4 THREE.MeshPhysicalMaterial89
4.3.5 用THREE.ShaderMaterial創建自己的著色器89
4.4 線性幾何體的材質95
4.4.1 THREE.LineBasicMaterial95
4.4.2 THREE.LineDashedMaterial97
4.5 總結97
第5章 學習使用幾何體99
5.1 Three.js提供的基礎幾何體101
5.1.1 二維幾何體101
5.1.2 三維幾何體109
5.2 總結120
第6章 高ji幾何體和二元操作122
6.1 THREE.ConvexGeometry122
6.2 THREE.LatheGeometry124
6.3 通過拉伸創建幾何體125
6.3.1 THREE.ExtrudeGeometry126
6.3.2 THREE.TubeGeometry127
6.3.3 從SVG拉伸129
6.4 THREE.ParametricGeometry131
6.5 創建三維文本133
6.5.1 渲染文本133
6.5.2 添加自訂字體136
6.6 使用二元操作組合網格137
6.6.1 subtract函數139
6.6.2 intersect函數142
6.6.3 union函數143
6.7 總結143
第7章 粒子和精靈145
7.1 理解粒子145
7.2 THREE.Points和THREE.PointsMaterial148
7.3 使用HTML5畫布樣式化粒子151
7.3.1 在THREE.CanvasRenderer中使用HTML5畫布151
7.3.2 在WebGLRenderer中使用HTML5畫布152
7.4 使用紋理樣式化粒子155
7.5 使用精靈貼圖160
7.6 從高ji幾何體創建THREE.Points163
7.7 總結165
第8章 創建、載入高ji網格和幾何體166
8.1 幾何體組合與合併166
8.1.1 物件組合166
8.1.2 將多個網格合併成一個網格168
8.2 從外部資源載入幾何體170
8.2.1 以Three.js的JSON格式保存和載入171
8.2.2 使用Blender177
8.3 導入三維格式檔181
8.3.1 OBJ和MTL格式181
8.3.2 載入Collada模型185
8.3.3 從其他格式的檔中載入模型186
8.3.4 展示蛋白質資料銀行中的蛋白質190
8.3.5 從PLY模型中創建粒子系統192
8.4 總結194
第9章 創建動畫和移動攝像機195
9.1 基礎動畫195
9.1.1 簡單動畫196
9.1.2 選擇物件197
9.1.3 使用Tween.js實現動畫198
9.2 使用攝像機201
9.2.1 軌跡球控制器202
9.2.2 飛行控制器204
9.2.3 第壹視角控制器205
9.2.4 軌道控制器207
9.3 變形動畫和骨骼動畫208
9.3.1 用變形目標創建動畫209
9.3.2 用骨骼和蒙皮創建動畫217
9.4 使用外部模型創建動畫220
9.4.1 使用Blender創建骨骼動畫220
9.4.2 從Collada模型載入動畫223
9.4.3 從雷神之錘模型中載入動畫225
9.4.4 使用gltfLoader225
9.4.5 利用fbxLoader顯示動作捕捉模型動畫227
9.4.6 通過xLoader載入古老的DirectX模型228
9.4.7 利用BVHLoader顯示骨骼動畫230
9.4.8 如何重用SEA3D模型231
9.5 總結232
第10章 載入和使用紋理233
10.1 將紋理應用於材質233
10.1.1 載入紋理並應用到網格233
10.1.2 使用凹凸貼圖創建褶皺238
10.1.3 使用法向貼圖創建更加細緻的凹凸和褶皺239
10.1.4 使用移位貼圖來改變頂點位置240
10.1.5 用環境光遮擋貼圖實現細節陰影241
10.1.6 用光照貼圖產生假陰影243
10.1.7 金屬光澤度貼圖和粗糙度貼圖244
10.1.8 Alpha貼圖246
10.1.9 自發光貼圖247
10.1.10 高光貼圖248
10.1.11 使用環境貼圖創建偽鏡面反射效果250
10.2 紋理的高ji用途255
10.2.1 自訂UV映射255
網路書店
類別
折扣
價格
-
新書87折$517