第1章 入门篇 1
1.1 什么是WebGL 2
1.2 WebGL的运行环境 3
1.3 Three.js引擎 3
1.4 Sim.js框架 4
1.5 关于Canvas标记 5
1.6 本书的配套资源 6
课后练习 6
第2章 基础篇 7
2.1 Three.js引擎中的基本概念 7
2.1.1 三维坐标系 7
2.1.2 透视摄像机 7
2.1.3 正交投影摄像机 8
2.1.4 基本3D元素 9
2.1.5 动画原理 10
2.2 基于Three.js引擎的网页 10
2.2.1 加载Three.js引擎 10
2.2.2 完整的Three.js网页 11
2.3 基于Sim.js框架的网页 12
2.3.1 加载Sim.js框架 12
2.3.2 完整的Sim.js网页 13
2.4 综合实例 14
2.4.1 地月系模拟动画 15
2.4.2 雪花飘飘 19
2.5 自定义几何体与UV坐标 21
2.5.1 自定义几何体 21
2.5.2 UV坐标 21
2.5.3 创建土星环 22
2.5.4 合并几何体 23
2.6 本地矩阵和世界矩阵 24
2.6.1 本地矩阵和世界矩阵的作用 24
2.6.2 Three.js中的本地矩阵和世界矩阵 24
2.7 深入了解材质 25
2.7.1 基本材质 25
2.7.2 Lambert材质 25
2.7.3 Phong材质 26
2.7.4 贴图材质 26
2.8 深入了解灯光 27
2.8.1 环境光 27
2.8.2 点光源 28
2.8.3 平行光 28
2.8.4 聚光灯 29
2.8.5 阴影 29
2.9 编程方法指导 33
2.9.1 JavaScript面向对象编程方法 33
2.9.2 JavaScript异步编程方法 35
2.9.3 AJAX异步网页更新方法 37
2.9.4 JSON数据交换格式 38
课后练习 40
第3章 交互篇 41
3.1 目标拾取 42
3.1.1 目标拾取的工作原理 42
3.1.2 目标拾取实例 42
3.2 目标拖动 45
3.2.1 拖动操作的工作原理 45
3.2.2 目标拖动实例 46
3.2.3 深入了解Raycaster类 47
3.3 法线运算 47
3.3.1 法线运算的工作原理 47
3.3.2 法线运算实例 48
3.4 键盘事件处理 49
3.4.1 键盘事件处理的一般方法 49
3.4.2 键盘事件处理实例 49
3.5 场景控制 50
3.5.1 第一人称漫游 50
3.5.2 轨迹球漫游 52
3.5.3 鼠标锁定漫游 53
3.5.4 路径漫游 54
3.5.5 其他场景控制类 56
3.6 场景音乐 56
3.6.1 网页音频 56
3.6.2 场景音乐 57
3.7 视频纹理 59
3.7.1 网页视频 59
3.7.2 视频纹理 60
3.8 综合案例——虚拟库房 62
3.8.1 需求分析 62
3.8.2 系统实现 62
课后练习 66
第4章 动画篇 67
4.1 计算机动画的基本概念 67
4.1.1 帧动画 67
4.1.2 时间动画 68
4.1.3 插值动画与关键帧 68
4.1.4 层级动画 68
4.1.5 蒙皮动画 69
4.1.6 几何变形动画 69
4.2 目标变形动画 69
4.2.1 目标变形动画原理 69
4.2.2 目标变形动画实例 70
4.3 补间动画 72
4.3.1 Tween.js补间动画库 72
4.3.2 利用Tween.js创建线性补间动画 72
4.3.3 利用Tween.js创建缓动补间动画 73
4.4 几何变形动画 74
4.4.1 几何变形动画原理 74
4.4.2 海浪效果 74
4.5 关键帧动画 75
4.5.1 关键帧动画原理 75
4.5.2 滚动的地球 76
4.6 骨骼动画 78
4.6.1 骨骼动画原理 78
4.6.2 手指骨骼动画 78
4.7 综合案例 81
4.7.1 机器人模型动画 81
4.7.2 连续关键帧动画 88
课后练习 91
第5章 应用篇 92
5.1 模型导入 92
5.1.1 Obj模型 93
5.1.2 Dae模型 95
5.1.3 Json模型 95
5.2 点云模型 96
5.2.1 点云数据 96
5.2.2 点云汽车模型 96
5.3 全景图 98
5.3.1 全景图的作用 98
5.3.2 全景图制作技巧 98
5.4 Canvas文本纹理 100
5.4.1 使用Canvas 2D纹理 100
5.4.2 Canvas文本文理 101
5.5 场景巡游 102
5.5.1 模型分析 102
5.5.2 碰撞检测 103
5.5.3 建筑模型场景巡游 104
5.6 赛车游戏 108
5.6.1 场景设计 108
5.6.2 主脚本文件 109
5.6.3 指南针脚本文件 116
5.7 基于模型的关键帧动画 117
5.7.1 模型动画的关键技术问题 118
5.7.2 赛车模型动画 118
5.8 JavaScript加密技术 128
课后练习 131
第6章 基于WebGL的MIS系统开发 132
6.1 BIM管理信息系统 132
6.1.1 模型导入与场景初始化 134
6.1.2 子类定义 136
6.1.3 数据处理 139
6.1.4 系统实现 141
6.2 BIM服务器中间件技术 145
6.2.1 关键问题 145
6.2.2 基于Obj模型的中间件 146
6.3 UBSP系统 153
6.3.1 中间件设计 153
6.3.2 数据库设计 154
6.3.3 用户面板 155
6.3.4 UBSP系统主界面 155
6.3.5 开发环境与关键代码 156
课后练习 160
参考文献 161