《Three. js开发指南》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)JOSDIRKSEN著;李鹏程译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111488323
  • 页数:259 页
图书介绍:首部全面讲解Three.js开发的实用指南,循序渐进讲解Three.js的各种功能,通过大量交互示例,深入探索使用开源的Three.js库创建绚丽三维图形的实用方法和技巧。 在过去的两年里,浏览器变得更加强大了,而且能够作为平台来运行复杂的应用和图形。但大部分的图形都是二维的。现在大部分的浏览器已经实现了WebGL,它们不仅可以创建二维图形和应用,还可以充分利用GPU,创建漂亮的、高性能的三维应用。 直接使用WebGL编程非常复杂。你需要了解WebGL的内部细节,学习复杂的着色器语法,才能用好WebGL。Three.js库提供了一套基于WebGL的、非常易用的JavaScript API,这样你不必学习WebGL的细节就可以创建漂亮的三维图形。 Three.js库提供了大量功能和API,你可以通过它们直接在浏览器中创建三维场景。本书提供了大量的交互式示例和代码,从中你可以学习到Three.js提供的所有API。 本书内容 第1章讲述使用Three.js库的基本步骤。到这章结束的时候,你就可以创建出第一个Three.js场景。你可以直接在浏览器中创建三维场景,并制作动画。 第2章将会讲解

第1章 用Three.js创建你的第一个三维场景 1

1.1 使用Three.js的前提条件 3

1.2 获取源代码 4

1.2.1 用Git克隆代码仓库 4

1.2.2 下载并解压压缩包 5

1.2.3 测试示例 6

1.3 创建HTML页面框架 7

1.4 渲染并展示三维对象 9

1.5 添加材质、灯光和阴影 13

1.6 用动画扩展你的首个场景 15

1.6.1 引入requestAnimation-Frame()方法 15

1.6.2 转动方块 17

1.6.3 弹跳球 17

1.7 使用dat.GUI库简化试验 18

1.8 使用ASCII效果 19

1.9 总结 20

第2章 使用构建Three.js场景的基本组件 22

2.1 创建场景 22

2.1.1 场景的基本功能 23

2.1.2 在场景中添加雾化效果 27

2.1.3 使用材质覆盖属性 28

2.2 使用几何和网格对象 29

2.2.1 几何对象的属性和函数 29

2.2.2 网格对象的函数和属性 33

2.3 选择合适的相机 37

2.3.1 正投影相机和透视相机 37

2.3.2 让相机在指定点上聚焦 41

2.4 总结 41

第3章 使用Three.js里的各种光源 43

3.1 探索Thee.js库提供的光源 43

3.2 学习基础光源 44

3.2.1 AmbientLight——影响整个场景的光源 44

3.2.2 PointLight——照射所有方向的光源 47

3.2.3 SpotLight——具有锥形效果的光源 49

3.2.4 DirectinalLight——模拟远处类似太阳的光源 53

3.2.5 使用特殊光源生成高级光照效果 54

3.3 总结 61

第4章 使用Three.js的材质 62

4.1 理解共有属性 63

4.1.1 基础属性 63

4.1.2 融合属性 64

4.1.3 高级属性 64

4.2 从简单的网格材质(基础、深度和面)开始 65

4.2.1 简单表面的MeshBasic-Material 65

4.2.2 基于深度着色的MeshDepthMaterial 67

4.2.3 联合材质 68

4.2.4 计算法向颜色的MeshNormalMaterial 70

4.2.5 为每个面指定材质的MeshFaceMaterial 72

4.3 学习高级材质 73

4.3.1 用于暗淡、不光亮表面的MeshLambertMaterial 74

4.3.2 用于光亮表面的MeshPhongMaterial 75

4.3.3 用ShaderMaterial创建自己的着色器 76

4.4 线段几何体的材质 81

4.4.1 LineBasicMaterial 81

4.4.2 LineDashedMaterial 83

4.5 总结 84

第5章 学习使用几何体 85

5.1 Three.js提供的基础几何体 86

5.1.1 二维几何体 86

5.1.2 三维几何体 92

5.2 总结 100

第6章 使用高级几何体和二元操作 102

6.1 ConvexGeometry 102

6.2 LatheGeometry 104

6.3 通过拉伸创建几何体 105

6.3.1 ExtrudeGeometry 106

6.3.2 TubeGeometry 107

6.3.3 从SVG拉伸 109

6.3.4 ParametricGeometry 110

6.4 创建三维文本 112

6.4.1 渲染文本 113

6.4.2 添加自定义字体 114

6.5 使用二元操作组合网格 115

6.5.1 subtract函数 117

6.5.2 intersect函数 120

6.5.3 union函数 121

6.6 总结 121

第7章 粒子和粒子系统 123

7.1 理解粒子 123

7.2 粒子、粒子系统和BasicParticleMaterial 125

7.3 使用HTML5画布格式化粒子 128

7.3.1 在CanvasRenderer类里使用HTML5画布 128

7.3.2 在WebGLRenderer中使用HTML5画布 129

7.4 使用纹理格式化粒子 131

7.5 从高级几何体中创建粒子系统 139

7.6 总结 141

第8章 创建、加载高级网格和几何体 143

8.1 几何体组合和合并 143

8.1.1 对象组合 143

8.1.2 将多个网格合并成一个网格 145

8.2 从外部资源中加载几何体 147

8.3 以Three.js的JSON格式保存和加载 147

8.3.1 保存和加载几何体 147

8.3.2 保存和加载场景 149

8.4 使用Blender 151

8.4.1 在Blender中安装Three.js导出器 152

8.4.2 在Blender里加载和导出模型 153

8.5 导入三维格式文件 155

8.5.1 OBJ和MTL格式 156

8.5.2 加载Collada模型 159

8.5.3 加载STL、CTM和VTK模型 160

8.5.4 展示蛋白质数据银行中的蛋白质 161

8.5.5 从PLY模型中创建粒子系统 163

8.6 总结 164

第9章 创建动画和移动相机 166

9.1 基础动画 166

9.1.1 简单动画 167

9.1.2 选择对象 168

9.1.3 用Tween.js做动画 170

9.2 使用相机 172

9.2.1 轨迹球控件 172

9.2.2 飞行控件 174

9.2.3 翻滚控件 175

9.2.4 第一人称控件 175

9.2.5 轨道控件 177

9.2.6 路径控件 178

9.3 变形动画和骨骼动画 180

9.3.1 用变形目标制作动画 181

9.3.2 用骨骼和蒙皮制作动画 184

9.4 使用外部模型创建动画 186

9.4.1 用Blender创建骨骼动画 186

9.4.2 从Collada模型中加载动画 190

9.4.3 从雷神之锤模型中加载动画 191

9.5 总结 192

第10章 加载和使用纹理 194

10.1 在材质中使用纹理 194

10.1.1 加载纹理并应用到网格 194

10.1.2 使用凹凸贴图创建皱纹 197

10.1.3 使用法向贴图创建更加细致的凹凸和皱纹 198

10.1.4 使用光照贴图创建假阴影 199

10.1.5 用环境贴图创建虚假的反光效果 201

10.1.6 高光贴图 204

10.2 纹理的高级用途 205

10.2.1 定制UV映射 205

10.2.2 重复映射 207

10.2.3 在画布上绘制图案并作为纹理 209

10.3 总结 213

第11章 定制着色器和渲染后期处理 215

11.1 设置后期处理 215

11.1.1 创建EffectComposer对象 216

11.2 后期处理通道 218

11.2.1 简单后期处理通道 218

11.2.2 使用掩膜的高级效果组合器 223

11.2.3 用ShaderPass定制效果 226

11.3 创建自定义的后期处理着色器 231

11.3.1 定制灰度图着色器 232

11.3.2 定制位着色器 235

11.4 总结 237

第12章 用Physijs在场景中添加物理效果 238

12.1 创建可用Physijs的基本Three.js场景 238

12.2 材质属性 243

12.3 基础图形 244

12.4 使用约束限制对象移动 248

12.4.1 用PointConstraint限制两点间的移动 249

12.4.2 用HingeConstraint创建类似门的约束 250

12.4.3 用SliderConstraint将移动限制到一个轴 252

12.4.4 用ConeTwistConstraint创建类似球销的约束 254

12.4.5 用DOFConstraint实现细节的控制 255

12.5 总结 259