做惯了2D的平面web设计,我突然对3D技术产生了浓厚的技术,不仅仅是因为那炫酷的效果,更是因为它用途的广泛性,随着软件编程的社会分工越来越细化,以后3D开发也有可能会从前端的大范畴里独立出来,作为一个很吃香的职业.这也不是不可能的.诚然,3D必然比web设计复杂,很多,多了一个维度的嘛.有人说,我2D开发都在做不好,怎么去做3D的开发那,但我想问你一句,你炒菜不行,就能代表你饭煮的也很差吗? 我看未必吧...... 而且随着信息技术的深入,一些传统行业的改造在使用现有的web技术以及显得很吃力了,必然工业组装的可视化,物联网.在线模型编辑....随着信息技术不断对传统行业的渗入,那么必然会有一场对现有web技术的考验,是故步自封,还是从现在开始迎接改变...势必会成为web前端开发的分水岭.未雨绸缪,现在和我一起开始学习3D技术吧.

初学Three.js没有啥好方法,因为这东西不是学几个api一时半会就能做出很符合实际使用的案例.所以如果你抱着像学jquery那样学习Three.js 必然会遭受大挫.甚至一蹶不振.下面介绍一下我学习Three.js的历程,已供各位参考.

首先,github仓库上下载最新的版本.使用vscode编辑器打开.了解这个库都包含哪些内容

以上就是从github下载的库,目录如上.

其中build是用于库编译的目录,用于生产,没有注释.

docs是Three.js的文档,

editor是一个官方的3D编辑器,运用于web浏览器

examples目录包含了很多案例,都是开发者提交到官方的,被收录的,我希望有一天我的 案例也能出现在这里,供人参考,学习

files目录是案例用到的一些文件,图片,字体,svg,css....

src目录存放的就是Three.js的模块,分散在各个文件夹中,使用typeScript编写,最后在打包到build以供使用.阅读源码其实阅读 的就是src中的代码.有注释,结构清晰,分层明确. 编译使用npm run build. 编译是使用到的是rollup这个库

test是一些测试案例.可以使用 npm run test 来运行测试用例

 "scripts": {"build": "rollup -c","build-test": "rollup -c test/rollup.unit.config.js","build-closure": "rollup -c && google-closure-compiler --warning_level=VERBOSE --jscomp_off=globalThis --jscomp_off=checkTypes --externs utils/build/externs.js --language_in=ECMASCRIPT5_STRICT --js build/three.js --js_output_file build/three.min.js","build-examples": "rollup -c rollup-examples.config.js","dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c -w -m inline\" \"http-server -c-1 -p 8080\"","dev-test": "concurrently --names \"ROLLUP,ROLLUPTEST,HTTP\" -c \"bgBlue.bold,bgRed.bold,bgGreen.bold\" \"rollup -c -w -m inline\" \"rollup -c test/rollup.unit.config.js -w -m inline\" \"http-server -p 8080\"","start": "npm run dev","lint": "eslint src --ext js --ext ts","test": "npm run build-test && qunit test/unit/three.source.unit.js","travis": "npm run lint && npm test"},"devDependencies": {"concurrently": "^4.1.0","eslint": "^5.16.0","eslint-config-mdcs": "^4.2.3","eslint-plugin-html": "^5.0.3","@typescript-eslint/parser": "^1.9.0","@typescript-eslint/eslint-plugin": "^1.9.0","typescript": "^3.4.5","google-closure-compiler": "20190415.0.0","http-server": "^0.11.1","qunit": "^2.9.2","rollup": "^1.10.1"}

如果对编译过程和具体使用的库感兴趣,可以再npm官网搜索devDependencies下的每一个库,了解每个库的作用,看看在哪里引用,又是怎么使用的.

剩下的文件就是一些,git,eslint,rollup...的配置这里不做一一解释.

了解了文件目录及其所包含的内容后,就会有个大概的轮廓

接下来如果有能力就去直接看src下的文件 了解大致模块,主要方法 这是对于有你能的人来说的.

那么源码理解能力弱一点的同学应该如何去学习那. 看文档和Demo吧

从github下载的文件里也是包含文档的,就是docs目录,可以将其整个目录放到web服务器中,进行访问,由于国外的地址一直很慢,我就把文档在我的服务器部署了一个,地址为国内Three.js文档(建议保存书签,以备查看)

学习思路就是看文档和demo

具体来做就是

文档大致浏览一遍,两遍,三遍,四五六七遍,头几篇看文档不需要逐字逐句去看.那么多文档,你也不能一下子记完.先去了解一些基本概念,比如摄像机,渲染器.点,光线....

文档看了几遍后,就去看demo了,example文件夹里有很多优秀的开发者提交的案例.能够帮助你快速了解api的使用,以及效果的预览.这里是官方的案例链接

如下图

demo也是 分门别类的. 动画,摄像机,裁剪,效果,多立方.......

研读一个demo的代码要比研读库的源码的要求低的多,

阅读demo代码时,不一定要句句理解透彻,但涉及到的每个api,它的参数,以及作用都要掌握住,要不然你看demo就是没有任何收获的.

举个例子,第一个例子草原上随风飘荡的白布 它的右上角有一块合适区域, 看到这里,我们既要向,这个东西是干嘛用的,

在胡乱操作后,我们发现这个黑色区域是用来控制是否有风,是否显示球,是否将白布调制成一个支点. 知道了作用之后我们就要去寻找相应的代码, 在寻找代码的过程中我们要注意页面内的所有<script>标签.

再拿上面这个例子分析一下

他在页面内引入了这么几个库,那么你就要进去看卡这些库,是一些什么库,有什么作用,或者直接百度一下,不难发现

stats.min.js     就是控制左上角的显示帧数以及页面渲染时间

有兴趣的同学可以搜索一下dat.gui.js 一个随时在页面上调整参数的js库 非常好用

本期学习的大致思路给大家讲解完了,下一期我就拿具体的案例来讲解学习demo,阅读文档的技巧和方法.demo的讲解 我打算从官方抽取几个简单和中层次的 来为大家一一讲解. 如果你有看不懂的案例,也可以发给我,我来为你分析解答.后续内容敬请关注.

稍后的demo讲解我会了一个清单出来. 谢谢阅读,如果对你有帮助,请点赞 收藏.如需讨论请在下方留言.

Three.js 学习历程与总结相关推荐

  1. 我的前端学习历程,你认同吗

    我的前端学习历程 很难想象一个半年前还在做后台开发,对前端知之甚少的我,现在也可以从事前端开发了.这半年的学习过程将会是我人生一笔宝贵的财富,这让我想到一句话"在成长的道路上,我们不要给自己 ...

  2. 详细:JAVA从入门到精通视频教程,后台学习历程

    详细:JAVA从入门到精通视频教程,后台学习历程 ==基础部分 由于百度分享有时效性 想要免费资源的请加645969403 1.java基础:高琪java开发300集 链接:https://pan.b ...

  3. 如何探索一门未知领域新技术?看腾讯前端高级工程师的学习历程

    作者:黄丹华,腾讯公司前端高级工程师,爱好Node.js研究开发,并基于自己的学习写一些心得体会,同时喜欢基于自己的一些所见所闻写一些互联网思考的博文.2011年进入腾讯做前端开发,现在主要是基于PH ...

  4. asp.net2.0学习历程 菜鸟到中级程序员的飞跃【月儿原创】

    asp.net2.0学习历程 菜鸟到中级程序员的飞跃 --30本好书点评 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.5.1 ...

  5. ArcGIS JS 学习笔记4 实现地图联动

    原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...

  6. backbone.js学习笔记

    backbone.js学习笔记 之前只接触过jQuery,看来Backbone是除了jQuery的第二大JS框架... backbone到底是个啥? 其实刚开始我也不知道=_=,我是这周二才听说居然还 ...

  7. 程序员的高速学习法——以JS学习为例,进行图解

    近期一直在忙着学习,感觉做总结的时间太少了,听起来挺好玩儿的,就像<倾城之恋>里面.范柳原说:那时候都忙着谈恋爱了哪里有时间恋爱.  学习和总结也是一样.不能一直忙着学习而导致自己没有时间 ...

  8. python学习历程-安装篇(一)

    python学习历程-安装篇 之前工作中数据量很少,每天也就是用excel发一下报表,函数已经足够应付工作内容,但心里一直渴望学习更深层次一点的数据分析(崇拜那些技术大神),网上看了很多有关数据分析挖 ...

  9. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

最新文章

  1. html站点相对路径,HTML的相对路径和绝对路径?
  2. WordPress添加前台注册功能
  3. 1.8 简单的文件输入输出
  4. wpf Visibility 动画
  5. Android_开发片段(Part 2)
  6. Google C++单元测试框架(Gtest)系列教程之一——入门
  7. 精讲23种设计模式-基于责任链模式~构建企业级风控系统
  8. linux 多个select,Linux select()和多个套接字的FIFO排序?
  9. selenium +chrome headless Adhoc模式渲染网页
  10. MySQL DEBUG_SYNC 的简单分析与测试
  11. android手机 ipad 同屏,iphone和ipad
  12. 今日头条算法及技术架构分析
  13. SqlServer NBU备份出现错误代码2
  14. nomogram,列线图,因素
  15. 转载_tolua之wrap文件的原理与使用_写的非常好!
  16. window下PC版 charles小程序抓包
  17. R语言建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、predict函数对cox模型进行新数据的预测、计算不同样本的风险比HR(hazard ratio)
  18. 整流-1.输入电压角度计算
  19. unity|火焰和烟效果(粒子系统)
  20. 为什么大型高难度工程的首选支模架是盘扣架?

热门文章

  1. “互联网+工业”下的大数据应用场景分析
  2. 2021.1知识图谱表示与推理综述(自己总结)
  3. 线条边框简笔画图片大全_植物简笔画素材大全赶紧收藏起来,一定用的上!
  4. element级联选择器城市3级联动三级联动json数据
  5. Mac下cmake使用
  6. 计算机图形学——八分法中点画圆
  7. cern ROOT 读取TXT文件数据并画一个简单的直方图
  8. 【论文笔记】Combining EfficientNet and Vision Transformers for Video Deepfake Detection
  9. java 获取meta-inf路径_【Java】WEB-INF目录与META-INF目录的作用
  10. 法国计算机高等工程师学院排名,法国人工智能专业大学排名(2020年USNEWS)_快飞留学...