2021-puxiao-《Three.js 系列教程》
threejs-tutorial
从今天
以下内容更新于
2021.04.16
特别提醒:
本教程最开始使用的是
Geometry 类已被废弃,不建议继续使用
然后使用
但是文章中讲解的代码思路、原理、用法是不会有太大的差异。
目前最新版本为
对于某个具体的类,
说一声抱歉:我在写第
以上内容更新于
2021.04.16
以下内容更新于
2021.05.22
因为本系列暂停了本系列教程的更新,所以就暂时在这里补充上关于
3D 坐标系的相关知识吧。
直角坐标系与球极坐标系:
-
左右手坐标系统他们都是 直角坐标系,使用
(x,y,z) 来表示空间某个点的坐标,webgl/three.js 采用右手坐标系。 -
除 右手坐标系 用来确定
xyz 轴朝向外,还有一个 “右手螺旋法则” 用来判定旋转方向。 -
球极坐标系,又称 空间极坐标,使用
(r,φ,θ) 来表示空间某个点的坐标。Three.js 的球极坐标 对应的类是:Spherical
只有真正了解
Three.js 的这2 套坐标系,同时理解Vector2( 二维向量) 、Vector3( 三维向量) 、Raycaster( 光线投射) ,才有可能晋级为Three.js 空间高手。
我在学习的过程中也向
几乎每天都有新的
以上内容更新于
2021.05.22
我的学习资料
我刚开始学习
- threejsfundamentals.org:官方教程
( 该教程只有前几篇是有中文翻译的) - threejs.org:官方中文文档
除此之外,还有其他几个值得推荐的、国内博主写的
-
强烈推荐看一下 图解
WebGL&Three.js 工作原理可惜该作者近几年都没再更新
Three.js 相关文章。
特别说明
- 教程内容版本有些老化,使用的并不是最新版
three.js - 教程基于网页,而不是基于
React ,更不是基于React + TypeScript
但是这两个网站教程作者编写的时候,非常用心,里面讲述的大量关于
综上所述
- 我会以官方教程
( https://threejsfundamentals.org/threejs/lessons/zh_cn/) 为主线。 - 我会在以上教程、文档,以及我搜集到的其他相关教程基础上,来编写本系列
Three.js 教程。 - 我会以一个新手的视角,心路历程,来编写本系列
Three.js 教程。
Three.js 官方文档的补充说明
当
这就会造成 中文版文档 落后于 英文版文档。
比如AxesHelper
新增加了 .setColors()
方法,而此时的中文文档中,还未有人相应增加这个方法。
因此当你想要查找某个 类 的用法时,你应该最优先选择去看 英文 的官方文档。
https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene
我曾经也翻译过好几处地方,提交
因为实在是太多,更新太频繁,没有那么多精力去搞文档。
关于国内有些Three.js 示例中代码过时的补充说明
我加了一些
看别人遇到的问题,也特别能够提高自己的一些所见所闻,知识面。
经常发生一些这样的情景:对方说是照着某个示例敲的代码,可就是运行不起来。
首先我会去官网文档中,查一下他们代码中用到的 类、属性、方法,但是很多时候根本查不到。
这说明他们用的类,属性,方法已发生变更、修改、废弃等。
此时,我都会到Pull requests
中搜索该属性或方法。
搜索时请注意要把
is:open 删除掉,因为既然都被废弃了,那肯定PR 已经是被并入过的了,状态肯定是close ,不可能是open 。
通常情况下,都可以检索出和废弃的 类、属性、方法相关
至此,原因和结果都知道了,就很容易修复代码了。
总结一下,想把
- 看 英文
/ 中文 文档 - 去
Github 仓库看源码 - 去
Pull requests
中看最新或之前的PR 改动 - 使用、查看源码过程中,发现可以改进的地方,勇敢、大胆得去提交
PR
相关书籍推荐
事实上,目前我个人并没有购买过任何
因为我认为最好的
我购买了很多和
如果没有
推荐的第
购买地址:http://product.dangdang.com/28552828.html
这本书系统全面得介绍了
笛卡尔坐标系、极坐标系、向量、点乘、叉乘、欧拉角、四元数、矩阵转换… 等等这些概念,你都需要了解,否则你后期根本无法理解和写出 复杂点的
Three.js 交互代码。
简直就该人手
1 本
不要被书名中的 数学 二字吓到,书中的数据公式,根本不需要你去记忆。
尽量在 当当或京东 做活动时候购买,比如
5折
或满100减50
时购买,比较划算。
推荐的第
购买地址:http://product.dangdang.com/23933108.html
这本书系统全面介绍了 基于
可以让你在大脑中快速构建出
注意,是基于
webgl ,而不是基于three.js
推荐的第
第四版英文下载地址:
这本书系统全面得介绍了
需要有梯子才可以访问。
由于这本书的封面是一只老虎,所以这本书才被称为 “虎书”
这本书只有第
2 版有简体中文,不过第2 版已经过时,第三版和第四版差别不是太大。
其他书籍
除此之外,我还购买了其他书籍,但是,这些书籍并不属于 强烈推荐 的那种。
这些书我个人认为看一下可以,不看也无所谓。
假设满星为
5 颗星
- 本人推荐指数
2 颗星: 《深入理解OpenGL 、WebGL 和OpenGL ES 》 - 本人推荐指数
1 颗星: 《计算机图形学——几何体数据结构》 - 本人推荐指数
0 颗星: 《3D 图形系统设计与实现》
WebGL 相关教程
首先说明一下,如果学想对
WebGL 又分为:WebGL1、WebGL2
假设你不想学习
你还需要掌握的技术栈
- JS、ES6
- CSS、SCSS
- React、hooks
- TypeScript
- 包管理工具
Yarn 或NPM
以上是本系列文章使用的技术栈。
若将来要将开发的项目发布到线上,你可能还需要掌握:
Git 代码管理Koa 创建简单web 服务器Nginx 配置静态服务器Docker 创建容器服务
关于3D 建模
但是,建模并不是
因此学习
以上纯粹目前个人观点,仅供参考
传统3D 软件
多数场景下
虽然
因此,若想学好、用好
第
优点:轻量级
缺点:软件收费,当然你可以自己网上搜到
第
优点:开源免费、也属于轻量级
缺点:国内使用人群数量较少,教程和资源较少
对于完全不懂
补充说明
即使在你的项目团队中,有专门的人负责
如果你不曾使用过
例如:场景、网格、材质、灯光 等等。
本教程的缺点
1、是Three.js 教程,但不是Three.js 文档
我们只是从一个初学者的角度来讲解
本教程可以带你入门,但你依然需要不断地查阅官方文档,来弥补本教程中没有提及的属性或方法。
2、没有配图
无论是相关知识点,纹理、示例运行效果,都没有配图。
没有别的原因,就是因为我懒,打字已经够占用时间了,真的没更多精力去配图。
不过我的每个示例都有详细完整的代码,你只需要复制到本地,实际调试一下就能看到效果。
3、所有的示例基本上都是独立的,没有抽离出公共的类或组件
在实际的项目中一定会把某些创建过程、处理函数、逻辑进行抽离,单独成为一个类、函数或组件。
但是本系列教程中,为了避免比较绕,每个示例基本上都是完全独立的,包括样式
这既是优点,也是缺点。
优点是你在查看某个示例时,代码独立而完整。
缺点是由于没有代码抽离,所以代码量会比较多,阅读起来略显麻烦。
我只在刚开始的几个示例中添加了代码注释,后面的示例中就因为懒,所以没有添加代码注释。
4、本文没有讲解图形学相关知识
因为我在写本系列教程时,我自己都未曾学习过图形学,所以肯定无法站在 图形学或 webgl
的维度来讲解
即使学完本系列教程,你也只是
因为如果没有图形学知识作为基础,你很难完成复杂点的
我现在正在学习图形学,只有掌握图形学后,才会更加容易理解
尽管我目前也只是学习了图形学一点点基础的东西,但是此刻再回头去看
three.js 中的很多属性和方法,相对容易很多。
除了本文上面推荐的基本书籍之外,强烈推荐大家观看这个视频。
闫令琪:现代计算机图形学入门
https://www.bilibili.com/video/BV1X7411F744
大家都是