TypeScript图形渲染实战:基于WebGL的3D架构与实现

相关资料

[

《TypeScript图形渲染实战:基于WebGL的3D架构与实现》从图形基础算法原理出发,用非常浅显易懂的语言讲解相关知识点,然后深入浅出地分析经典案例,一步步带带领读者领略3D图形算法及架构的精彩世界。
——中国工业设计研究院西南中心院长 覃霁
作者通过通俗易懂的讲解,将他十几年图形编程经验的精华浓缩至《TypeScript图形渲染实战:基于WebGL的3D架构与实现》中。书中对TypeScript编程语言、3D图形及其数学基础都有较为全面的剖析,能够让广大读者较为系统地掌握HTML 5 WebGL图形开发的核心技术。
——上海灵禅网络科技股份有限公司CEO 兰海文
《TypeScript图形渲染实战:基于WebGL的3D架构与实现》涉猎广泛,内容深刻,讲解深入浅出,囊括了TypeScript基本语法、图形渲染机制、图形学、数据结构、设计模式等内容,是一本不可多得的HTML 5图形开发书籍。
——上海凯英网络科技有限公司副总裁 何鑫
《TypeScript图形渲染实战:基于WebGL的3D架构与实现》带给读者多个WebGL绘图API开发案例。对于热衷于图形学或游戏开发的相关读者而言,《TypeScript图形渲染实战:基于WebGL的3D架构与实现》不仅是一本通俗易懂的TypeScript入门书,更是一本优秀的3D图形学工具书。
——成都手领科技有限公司创始人兼CTO、迷雾侦探/AI-LIMIT游戏技术负责人 张锐
一本优秀的计算机图书,能够让读者从其文字中感受到作者的态度。相信读者也能够从《TypeScript图形渲染实战:基于WebGL的3D架构与实现》中体会到作者多年来所坚持的技术钻研精神。
——《全局光照技术》作者 秦春林
传统图形编程都是基于DirectX/OpenGL。而Web时代,HTML 5 Canvas2D/WebGL TypeScript的组合才是*的图形编程方案。作者基于多年的实战经验编写了《TypeScript图形渲染实战:基于WebGL的3D架构与实现》,让读者能够较为轻松地理解图形编程的奥秘和编写技巧。阅读完《TypeScript图形渲染实战:基于WebGL的3D架构与实现》后,不但能让萌新程序员一览大佬庖丁解牛的风姿,从而获得巨大的提升,而且也能让老的图形程序员巩固提升,收获满满。
——《Go语言从入门到进阶实战》作者、慕课网讲师、资深全栈游戏开发者 徐波
《TypeScript图形渲染实战:基于WebGL的3D架构与实现》介绍的TypeScript与WebGL相关技术可以构建你梦想中的3D WebApplication。全书通过8个完整的图形编程案例,可以让你了解并掌握3D图形编程的数学基础与核心技术。
—— 跨平台开源UI引擎FairyGUI作者 萧应棠

]

本书特色

[

为了让广大3D图形爱好者能够快速地学习WebGL图形编程,《TypeScript图形渲染实战:基于WebGL的3D架构与实现》按照循序渐进的方式,由浅入深地讲解了WebGL图形编程的相关知识点。《TypeScript图形渲染实战:基于WebGL的3D架构与实现》理论结合实践,可以让3D图形爱好者少走弯路,直击3D图形开发中的核心要点。
《TypeScript图形渲染实战:基于WebGL的3D架构与实现》共10章,分为3篇。第1、2章为数据结构基础篇,主要介绍如何构建TypeScript开发调试环境,并以范型编程方式实现和封装了动态类型数组、关联数组、双向链表、队列、栈和树等数据结构。第3~7章为WebGL图形编程基础篇,围绕着如何建立一个WebGLApplication框架应用体系和WebGLUtilLib渲染体系而展开,并且详细介绍了3D图形编程中的一些常用数学基础知识。第8~10章为开发实战篇,在使用WebGLApplication框架和WebGLUtilLib框架的基础上实现了对Id Software公司开源的Quake3 BSP及Doom3 PROC场景的解析和渲染,并且介绍了Doom3 MD5骨骼蒙皮动画原理、解析与渲染的相关知识点。
《TypeScript图形渲染实战:基于WebGL的3D架构与实现》特别适合对3D图形开发、WebGL图形编程、游戏开发等感兴趣的技术人员阅读,还适合JavaScript程序员及想从C、C 、Java、C#等强类型语言转HTML 5开发的程序员阅读。另外,编程爱好者、高校学生及培训机构的学员也可以将《TypeScript图形渲染实战:基于WebGL的3D架构与实现》作为兴趣读物。

]

内容简介

[

本书共10章, 分为3篇。第1、2章为数据结构基础篇, 主要介绍如何构建TypeScript开发调试环境, 并以范型编程方式实现和封装了动态类型数组、关联数组、双向链表、队列、栈和树等数据结构。第3-7章为WebGL图形编程基础篇, 围绕着如何建立一个WebGLApplication框架应用体系和WebGLUtilLib渲染体系而展开, 并且详细介绍了3D图形编程中的一些常用数学基础知识。第8-10章为开发实战篇, 在使用WebGLApplication框架和WebGLUtilLib框架的基础上实现了对Id Software公司开源的Quake3 BSP及Doom3 PROC场景的解析和渲染, 并且介绍了Doom3 MD5骨骼蒙皮动画原理、解析与渲染的相关知识点。

]

作者简介

[

步磊峰 计算机图形编程资深爱好者。有超过15年的程序开发经验。擅长C/C 、C#、Java、Objective-C、JavaScript和TypeScript等编程语言。在作者的程序人生中,曾经编写过3D程序、跨平台UI引擎、Java页游服务器和微信服务器,并为国内的多个大型国营金融机构开发过多款移动端App。个人最大的成就是通过内部培训,为公司培养了20多个C语言、C 及移动端的开发人才。

]

目录

第1篇 数据结构基础
第1章 SystemJS与Webpack 2
1.1 准备工作 3
1.1.1 安装Node.js 3
1.1.2 安装Viusal Studio Code 4
1.2 安装和配置SystemJS 5
1.2.1 安装SystemJS 5
1.2.2 使用SystemJS 7
1.2.3 **个TypeScript程序 8
1.3 安装和配置Webpack 9
1.3.1 安装Webpack 9
1.3.2 配置Webpack 11
1.3.3 调用build命令 12
1.3.4 配置tsconfig.json文件 12
1.3.5 调用build和dev命令 13
1.3.6 使用watch命令 14
1.3.7 联合使用watch和dev命令 15
1.3.8 使用Webpack压缩打包源码 16
1.4 SysemJS VS. Webpack 16
1.5 编译(Compile)VS.转义(Transpile) 18
1.6 断点调试 19
1.6.1 安装及配置Debugger for Chrome扩展 19
1.6.2 断点调试TypeScript程序 20
1.6.3 VS Code Debug快捷键 21
1.7 本章总结 21
第2章 TypeScript封装和实现常用容器 22
2.1 ArrayBuffer、DataView及类型数组实现原理 23
2.1.1 C/C 模拟JS/TS中的ArrayBuffer对象 23
2.1.2 C/C 模拟JS/TS中的DataView对象 24
2.1.3 C/C 版CDataView VS. JS/TS版DataView 25
2.1.4 C/C 模拟JS/TS中的Float32Array对象 26
2.1.5 C/C 版CFloat32Array VS. JS/TS版Float32Array 28
2.1.6 JS/TS中的类型数组对象 30
2.2 封装动态类型数组 31
2.2.1 TypedArrayList的成员变量及构造函数 31
2.2.2 TypedArrayList的push方法 32
2.2.3 TypedArrayList的slice方法和subarray方法 33
2.2.4 TypedArrayList的其他方法和属性 35
2.2.5 capacityChangedCallback回调函数 36
2.3 封装关联数组 36
2.3.1 JS/TS中的关联数组 37
2.3.2 TypeScript索引签名 37
2.3.3 ES 6 Map对象 38
2.3.4 封装成Dictionary字典对象 39
2.3.5 测试Dictionary对象 42
2.3.6 红黑树还是哈希表 42
2.4 实现SGI STL风格双向循环链表 44
2.4.1 泛型的ListNode结构 45
2.4.2 List中的头节点 45
2.4.3 双向循环概念 46
2.4.4 List的查询与遍历操作 46
2.4.5 List的插入操作 48
2.4.6 List的删除操作 50
2.4.7 List的push / pop / push_front / pop_front操作 51
2.5 封装队列与栈 51
2.5.1 声明IAdapter泛型接口 52
2.5.2 实现AdapterBase抽象基类 52
2.5.3 实现Queue子类和Stack子类 53
2.6 实现通用树结构 54
2.6.1 树结构的内存表示 54
2.6.2 树节点添加时的要点 55
2.6.3 树节点isDescendantOf和remove方法的实现 56
2.6.4 实现addChild等方法 58
2.6.5 查询树结构的层次关系 59
2.6.6 广度/深度优先遍历算法 60
2.6.7 队列及栈在广度/深度优先遍历中的应用 62
2.6.8 广度/深度线性遍历枚举器 63
2.6.9 树结构枚举器的实现 63
2.6.10 测试树结构迭代器 67
2.6.11 深度优先的递归遍历 71
2.7 本章总结 73
第2篇 WebGL图形编程基础
第3章 WebGLApplication框架 76
3.1 Application体系结构概述 77
3.2 **个WebGL Demo 78
3.2.1 技术要点描述 78
3.2.2 Demo的成员变量与构造函数 80
3.2.3 资源同步加载 82
3.2.4 立方体、坐标系、三角形及文字渲染 83
3.2.5 更新操作 85
3.2.6 键盘输入事件处理 86
3.2.7 总结Application框架的使用流程 87
3.3 Application框架实现 87
3.3.1 成员变量与构造函数 88
3.3.2 启动/查询/停止Application 89
3.3.3 不间断地更新操作 90
3.3.4 CanvasInputEvent及其子类 92
3.3.5 DOM中的getBoundingRect方法 93
3.3.6 实现viewportToCanvasCoordinate方法 94
3.3.7 将DOM Event事件转换为CanvasInputEvent事件 95
3.3.8 实现EventListenerObject接口进行事件分发 96
3.3.9 让事件起作用 97
3.3.10 定时器Timer系统 97
3.3.11 增删定时器对象 98
3.3.12 触发多个定时任务的操作 100
3.3.13 WebGLApplication子类 101
3.3.14 CameraApplication子类 102
3.4 HTML页面系统 103
3.4.1 HTML页面系统简介 103
3.4.2 HTML页面源码 104
3.4.3 入口文件main.ts 105
3.5 异步资源加载及同步操作 107
3.5.1 使用Promise封装HTTP异步请求 107
3.5.2 实现AsyncLoadTestApplication类 109
3.5.3 异步run函数的覆写(override)与测试 110
3.5.4 Promise.all异步并发加载及同步操作 111
3.5.5 本书后续的资源加载及同步策略 114
3.6 本章总结 114
第4章 WebGL基础 116
4.1 WebGL中的类 116
4.2 准备工作 117
4.2.1 创建WebGLRenderingContext对象 117
4.2.2 WebGLContextAttributes对象与帧缓冲区 118
4.2.3 渲染状态 120
4.2.4 WebGLContextEvent事件 121
4.3 基本几何图元绘制Demo 122
4.3.1 视矩阵、投影矩阵、裁剪和视口 122
4.3.2 GLSL ES着色语言 123
4.3.3 WebGLShader对象 126
4.3.4 GLSL ES精度限定符与WebGLShaderPrecisionFormat对象 128
4.3.5 WebGLProgram对象 130
4.3.6 WebGLActiveInfo对象 132
4.3.7 WebGLUniformLocation对象 134
4.3.8 WebGLBuffer对象 137
4.3.9 渲染数据存储思考 140
4.3.10 Interleaved数组的存储、寻址及绘制 141
4.3.11 drawArrays绘制基本几何图元 144
4.3.12 详解基本几何图元 146
4.3.13 drawElements绘制方法 149
4.4 本章总结 152
第5章 WebGLUtilLib渲染框架 153
5.1 WebGLUtilLib框架类结构体系 153
5.2 GLAttribState类的实现 155
5.2.1 预定义顶点属性常量值 156
5.2.2 GLAttribState类的bit位操作 157
5.2.3 getInterleavedLayoutAttribOffsetMap方法 158
5.2.4 getSequencedLayoutAttribOffsetMap方法 160
5.2.5 getSepratedLayoutAttribOffsetMap方法 161
5.2.6 getVertexByteStride方法 162
5.2.7 setAttribVertexArrayPointer方法 163
5.2.8 setAttribVertexArrayState方法 164
5.3 GLProgram相关类的实现 166
5.3.1 常用的VS和FS uniform变量 166
5.3.2 GLProgram的成员变量和构造函数 167
5.3.3 loadShaders方法 168
5.3.4 绑定和解绑GLProgram 169
5.3.5 载入uniform变量 170
5.3.6 GLProgramCache类 171
5.3.7 GLShaderSource对象 172
5.3.8 初始化常用的着色器 173
5.4 GLMesh相关类的实现 174
5.4.1 VAO对象与GLMeshBase类 174
5.4.2 GLStaticMesh类实现细节 175
5.4.3 GLMeshBuilder类成员变量 178
5.4.4 GLMeshBuilder类构造方法 179
5.4.5 GLMeshBuilder类的color、texcoord、normal和vertex方法 181
5.4.6 GLMeshBuilder类的begin和end方法 184
5.5 GLTexture类的实现 187
5.5.1 GLTexture的成员变量和构造函数 187
5.5.2 GLTexture类的upload方法 188
5.5.3 mipmap相关的静态方法 189
5.5.4 GLTexture的bind / unbind、wrap和filter方法 190
5.5.5 GLTexture的createDefaultTexture静态方法 191
5.6 本章总结 192
第6章 3D图形中的数学基础 193
6.1 坐标系 193
6.1.1 OpenGL / WebGL中的坐标系 193
6.1.2 左手坐标系与右手坐标系 194
6.2 TSM数学库 196
6.3 向量 197
6.3.1 向量的概念 197
6.3.2 向量的大小(或长度) 198
6.3.3 两个向量之间的距离 199
6.3.4 单位向量 199
6.3.5 向量的加法 199
6.3.6 向量的减法 200
6.3.7 向量的缩放 201
6.3.8 负向量 202
6.3.9 向量的点乘 202
6.3.10 向量的叉乘 203
6.4 矩阵 204
6.4.1 矩阵的定义 205
6.4.2 矩阵的乘法 205
6.4.3 单位矩阵 206
6.4.4 矩阵的转置 207
6.4.5 矩阵的行列式与求逆 207
6.5 仿射变换 208
6.5.1 平移矩阵 209
6.5.2 缩放矩阵 209
6.5.3 绕任意轴旋转矩阵 210
6.6 视图矩阵与投影矩阵 211
6.6.1 视图(摄像机)矩阵 212
6.6.2 投影矩阵 213
6.7 四元数 214
6.8 平面 215
6.8.1 构造平面 216
6.8.2 平面的单位化 217
6.8.3 点与平面的距离与关系 217
6.9 矩阵堆栈 218
6.9.1 构造函数与worldMatrix属性 219
6.9.2 矩阵的入栈、出栈及load方法 219
6.9.3 仿射变换操作 220
6.10 摄像机 220
6.10.1 成员变量和构造函数 221
6.10.2 摄像机的移动和旋转 222
6.10.3 摄像机的更新 224
6.10.4 摄像机的相关属性 225
6.11 WebGLCoordSystem类 227
6.12 本章总结 228
第7章 多视口渲染基本几何体、坐标系及文字 230
7.1 使用GLMeshBuilder多视口渲染基本几何体 230
7.1.1 Demo的需求描述 230
7.1.2 Demo的成员变量和构造函数 231
7.1.3 drawByMatrixWithColorShader方法绘制流程 233
7.1.4 使用INTERLEAVED顶点存储格式绘制三角形 234
7.1.5 使用SEQUENCED顶点存储格式绘制四边形 235
7.1.6 使用SEPARATED顶点存储格式绘制立方体 236
7.1.7 创建多视口的方法 239
7.1.8 WebGL中的纹理坐标系 240
7.1.9 drawByMultiViewportsWithTextureShader方法绘制流程 240
7.1.10 绘制纹理立方体 242
7.1.11 实现Atlas纹理贴图效果 243
7.1.12 收尾工作 245
7.2 坐标系、文字渲染及空间变换Demo 246
7.2.1 Demo的需求描述 246
7.2.2 Demo的成员变量和构造函数 247
7.2.3 生成单视口或多视口坐标系数组 248
7.2.4 覆写(override)更新和渲染虚方法 249
7.2.5 覆写(override)键盘事件处理虚方法 250
7.2.6 drawFullCoordSystem方法 250
7.2.7 drawFullCoordSystemWithRotatedCube方法 252
7.2.8 DrawHelper类的drawFullCoordSystem方法 254
7.2.9 深度测试对坐标系绘制的影响 255
7.2.10 drawText方法 256
7.2.11 MathHelper类的obj2GLViewportSpace方法 258
7.2.12 3D图形中的数学变换流水线 258
7.3 本章总结 259
第3篇 开发实战
第8章 解析与渲染Quake3 BSP场景 262
8.1 Q3BspApplication入口类 262
8.2 解析Quake3 BSP二进制文件 264
8.2.1 Quake3BspParser类的常量定义 264
8.2.2 Q3BSPLump结构定义 265
8.2.3 解析BSP文件头 266
8.2.4 解析实体字符串数据 267
8.2.5 解析材质数据 269
8.2.6 解析顶点数据 270
8.2.7 解析顶点索引数据 273
8.2.8 解析渲染表面数据 273
8.2.9 Quake3与WebGL坐标系转换 276
8.3 渲染Quake3 BSP场景 277
8.3.1 Quake3BspScene的初始化 278
8.3.2 DrawSurface对象 278
8.3.3 封装Promise加载所有纹理 279
8.3.4 生成GLStaticMesh对象 280
8.3.5 绘制整个BSP场景 282
8.4 本章总结 283
第9章 解析和渲染Doom3 PROC场景 285
9.1 Doom3Application入口类 285
9.2 解析Doom3 PROC场景 286
9.2.1 Doom3词法解析规则 287
9.2.2 IDoom3Tokenizer词法解析器 287
9.2.3 Doom3 PROC文件格式总览 288
9.2.4 Doom3ProcParser的parse方法 289
9.2.5 Doom3Area、Doom3Surface及Doom3Vertex类 290
9.2.6 Doom3ProcParser的_readArea方法 292
9.2.7 Doom3ProcParser的_readSurface方法 293
9.2.8 Doom3ProcParser的_readPortals方法 295
9.2.9 Doom3ProcParser的_readNodes方法 297
9.3 使用Doom3ProcScene加载和渲染PROC场景 298
9.3.1 RenderSurface对象 299
9.3.2 Doom3ProcScene的draw方法 299
9.3.3 Doom3ProcScene类的loadTextures方法 300
9.3.4 Doom3ProcScene的parseDoom3Map方法 301
9.4 AABB包围盒 303
9.4.1 AABB包围盒与OBB包围盒的特点 304
9.4.2 构建AABB包围盒 304
9.4.3 计算AABB包围盒的9个顶点坐标值 306
9.4.4 计算变换后的AABB包围盒 307
9.4.5 AABB包围盒的两个常用碰检算法 307
9.5 摄像机视截体 308
9.5.1 摄像机视截体的概念 308
9.5.2 Frustum类的成员变量和构造函数 309
9.5.3 buildFromCamera方法的实现 310
9.5.4 让Camera类支持Frustum 312
9.5.5 Frustum与包围盒及三角形的可见行测试 313
9.5.6 让GLStaticMesh支持包围盒 314
9.5.7 更新Doom3ProcScene的draw方法 314
9.5.8 将Frustum绘制出来 315
9.5.9 Doom3ProcScene类增加包围盒绘制方法 316
9.6 本章总结 316
第10章 解析和渲染Doom3 MD5骨骼蒙皮动画 318
10.1 骨骼蒙皮动画原理 318
10.1.1 骨骼蒙皮动画效果演示 319
10.1.2 骨骼蒙皮动画中的各种坐标系 320
10.1.3 骨骼蒙皮动画数学关键点的问答 321
10.2 解析和渲染.md5mesh文件格式 322
10.2.1 .md5mesh文件解析流程 323
10.2.2 .md5mesh中的绑定姿态 324
10.2.3 解析绑定姿态 325
10.2.4 .md5mesh中的蒙皮数据 326
10.2.5 解析蒙皮数据 329
10.2.6 计算顶点*终位置 330
10.2.7 加载和生成纹理 331
10.2.8 绘制绑定姿态(BindPose) 332
10.3 解析和渲染.md5anim文件格式 333
10.3.1 .md5anim的解析流程 333
10.3.2 解析.md5anim中的关节层次信息 334
10.3.3 解析.md5anim中的包围盒数据 336
10.3.4 解析.md5anim中的baseframe数据 337
10.3.5 解析.md5anim中的frame数据 338
10.3.6 帧动作姿态结构 339
10.3.7 MD5Anim类的buildLocalSkeleton方法 340
10.3.8 MD5Anim类的updateToModelSpaceSkeleton方法 342
10.3.9 MD5SkinedMesh类的playAnim方法 342
10.3.10 MD5SkinedMesh的drawAnimPose方法 343
10.4 实现MD5SkinedMeshApplication Demo 344
10.5 本章总结 346

封面

TypeScript图形渲染实战:基于WebGL的3D架构与实现

书名:TypeScript图形渲染实战:基于WebGL的3D架构与实现

作者:步磊峰编著

页数:15,346页

定价:¥109.0

出版社:机械工业出版社

出版日期:2020-01-01

ISBN:9787111642664

PDF电子书大小:150MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注