three.js入门系列之视角和辅助线
假设你已经创建好了three.js的开发环境(我是写在vue项目中的),那么接下来,从头开始演示是如何用three.js来构建3D图形的。(笔记本写的代码,屏幕小,所以为了能够整屏看到完整代码,就将字体缩小了,如果觉得看不清的,可以另行放大)
一、页面DOM结构
正如你所见,这就是一个vue的模板页面,一个简单的dom,我们的3D图形都是渲染在这个名为container的div中的,接下来,开始吧。
二、初始化三要素
场景、相机、渲染器,将绘好的场景渲染到渲染器中,将渲染器通过相机的视角传达给用户;
三、往场景中添加mesh模型以及其他
你应该看到上面中间有一个函数是添加mesh的,那我们具体来看看这个函数:
在这里,只向场景中添加了辅助线和一个立方体;
注意这个立方体的添加过程,第一句是声明立方体的形状(怎样的立方体),第二句是立方体的材质(材质决定最终看到的物体样子,可能会因为色差的原因,导致物体不见了)。
这里我的物体是法向量网孔材料(MeshNormalMaterial)的盒状立方体(BoxGeometry),立方体的位置也会决定我们看到的最终效果。
四、最终效果
五、camera以及辅助线
我用的是three.js的r99版本,所以API上的有些代码直接拿来用是会出现错误的。
这里用的是透视相机、除此之外还有立方体相机和正交相机,但是透视相机更符合人类看物体的视角,所以后面也会一直使用透视相机;
相机的x,y,z这就不用多说了,上面那个150其实和z效果差不多,都是用来决定相机的远近(间接决定所见物体的远近/大小),如有兴趣,可以自己调试各种值,r99版本中,x、y、z调试的时候,一次+1,突然加多了,你就发现物体不见了(TT)
上面的代码是立方体的一些参数,包括形状和材质,x、y、z轴偏移量;
尤其注意,r99版本中有很多值都是以1为上限,比如立方体的大小(长宽高),1就等于渲染器的大小,0.5表示渲染器大小的一半,物体的3轴偏移量也是以0.1为步长改变,所以老版本可能(是以像素为单位)动辄加减个几百的,到r99版本上,直接就看不到图形了,这点切记。
three.js入门系列之视角和辅助线的更多相关文章
- Vue.js入门系列(一)
Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一) http://www.cnblogs.com/gdsblog/p/78 ...
- 【 D3.js 入门系列 — 11 】 入门总结
D3 新专题首页 一转眼,这个入门系列已经积累了二十二篇文章之多,我想作为 D3.js 这款数据可视化工具的入门来说已经足够了.相信仅仅要看完本系列.以后全然能够在辅以查询的情况下完毕大部分可视化工作 ...
- 01-Vue.js入门系列
1.1. Vue简介 Vue是一个前端的双向绑定类的框架,发音[读音 /vjuː/, 类似于 view].新的Vue版本参考了React的部分设计,当然也有自己独特的地方,比如Vue的单文件组件开发方 ...
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...
- 【 D3.js 入门系列 --- 7 】 理解 update, enter, exit 的使用
在前面几节中反复出现了如下代码: svg.selectAll("rect") .data(dataset) .enter() .append("rect") 当 ...
- 【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表
前面几节讲解了图标.坐标轴.比例等等,这一节整合这些内容做一个实用的图表.结果图如下: 代码如下所示: <html> <head> <meta charset=" ...
- 【 D3.js 入门系列 --- 5 】 如何添加坐标轴
第3节中做了一个图标,但没有为它添加一个相应的坐标轴,这样不知道每一个柱形到底有多长.这一节做一个坐标轴. D3中的坐标轴都是以 svg 图的形式出现的,这也是为什么在第3节中要使用 svg 的方法做 ...
- 【 D3.js 入门系列 --- 3 】 做一个简单的图表!
前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...
- 【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素
在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同 ...
随机推荐
- powershell 设置环境变量 -- go 单元测试 exit status 3221225781
执行单元测试时出错 go test -run TestImage 错误提示如下: exit status 3221225781 这个错误的意思是需要加载对应的库文件找不到,加载对应的库文件就习. 但是 ...
- Net_Prop 之 CTerrorPlayer 属性
Sub-Class Table (1 Deep): DT_TerrorPlayer Sub-Class Table (2 Deep): DT_CSPlayer Sub-Class Table (3 D ...
- hadoop 3.1.1 安装
以下是本次搭建说使用的服务器 服务器IP分配 IP 节点名称 说明 192.168.172.130 master 主服务器 192.168.172.131 slave1 从服务器1 192.168.1 ...
- docker 修改 mysql 5.7 sql_mode
docker exec -ti {容器ID} /bin/bash 进入容器 apt-get install vim 安装vim 找到 vim /etc/mysql/my.cnf 在 [mysqld ...
- 使用淘宝的npm代理下载模块
npm install node-sass --registry=http://registry.npm.taobao.org
- Object.defineProperties——MEAN开发后台的Model层
Object.defineProperties是什么?有什么用? 这个问题比较听起来可能比较难以理解,确实我也是在项目中遇到的才会去想.以前看到<高级程序设计>的时候,有这么一种东西,定义 ...
- Java并发之synchronized深入
一句话总结synchronized: JVM会自动通过使用monitor来加锁和解锁,保证了同时只有一个线程可以执行指定代码,从而保证了线程安全,同时具有可重入和不可中断的性质. 一.synchron ...
- spark 性能优化
1.内存 spark.storage.memoryFraction:很明显,是指spark缓存的大小,默认比例0.6 spark.shuffle.memoryFraction:管理executor中R ...
- HTML符号大全
HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码中加入以&开头的字母组合或以&#开头的数字.下面就是以字母或数字表示的特殊符号大全. ...
- em和px的区别一次彻底搞清楚!
在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ...