譯者序
前言
第1章 使用Three.js創(chuàng)建你的個三維場景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 創(chuàng)建場景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 高級屬性73
4.2 從簡單的網格材質開始74
4.2.1 THREE.MeshBasicMaterial75
4.2.2 THREE.MeshDepthMaterial77
4.2.3 聯(lián)合材質79
4.2.4 THREE.MeshNormalMaterial80
4.2.5 在單幾何體上使用多種材質82
4.3 高級材質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創(chuàng)建自己的著色器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章 高級幾何體和二元操作122
6.1 THREE.ConvexGeometry122
6.2 THREE.LatheGeometry124
6.3 通過拉伸創(chuàng)建幾何體125
6.3.1 THREE.ExtrudeGeometry126
6.3.2 THREE.TubeGeometry127
6.3.3 從SVG拉伸129
6.4 THREE.ParametricGeometry131
6.5 創(chuàng)建三維文本133
6.5.1 渲染文本133
6.5.2 添加自定義字體136
6.6 使用二元操作組合網格137
6.6.1 subtract函數(shù)139
6.6.2 intersect函數(shù)142
6.6.3 union函數(shù)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 從高級幾何體創(chuàng)建THREE.Points163
7.7 總結165
第8章 創(chuàng)建、加載高級網格和幾何體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 展示蛋白質數(shù)據(jù)銀行中的蛋白質190
8.3.5 從PLY模型中創(chuàng)建粒子系統(tǒng)192
8.4 總結194
第9章 創(chuàng)建動畫和移動攝像機195
9.1 基礎動畫195
9.1.1 簡單動畫196
9.1.2 選擇對象197
9.1.3 使用Tween.js實現(xiàn)動畫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 用變形目標創(chuàng)建動畫209
9.3.2 用骨骼和蒙皮創(chuàng)建動畫217
9.4 使用外部模型創(chuàng)建動畫220
9.4.1 使用Blender創(chuàng)建骨骼動畫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 使用凹凸貼圖創(chuàng)建褶皺238
10.1.3 使用法向貼圖創(chuàng)建更加細致的凹凸和褶皺239
10.1.4 使用移位貼圖來改變頂點位置240
10.1.5 用環(huán)境光遮擋貼圖實現(xiàn)細節(jié)陰影241
10.1.6 用光照貼圖產生假陰影243
10.1.7 金屬光澤度貼圖和粗糙度貼圖244
10.1.8 Alpha貼圖246
10.1.9 自發(fā)光貼圖247
10.1.10 高光貼圖248
10.1.11 使用環(huán)境貼圖創(chuàng)建偽鏡面反射效果250
10.2 紋理的高級用途255
10.2.1 自定義UV映射255
10.2.2