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 是选择指定元素的全部(以用于后面同 ...
随机推荐
- java基础笔试题二(集合关系)
知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...
- UVA 1393 Highways(数学思想)
题意:给你n.m(n,m<=200),问你有多少条非水平.非垂直的直线有多少条经过至少两个点 题解:我们需要枚举的是只画一条线的矩形,对于大小a*b的矩形必须保证gcd(a,b)=1才能不重复 ...
- Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused (Connection refused)
一.linux中配置redis,使用java连接测试时报错: Exception in thread "main" redis.clients.jedis.exceptions.J ...
- NPM Scripts -- onchange parallelshell
Watch for changes to the styles.scss file and automatically compile it to the css file. Run multiple ...
- centos mysql忘记密码
1.停止mysql 服务:service mysqld stop; 2.vim命令打开mysql配置文件my.cnf(位置一般为:/etc/my.cnf) 3.在mysqld进程配置文件中添加skip ...
- Android开发-网络通信2
调试了三种通信方法:HttpClient.AsyncHttpClient 和 Volley . HttpClient 测试代码[1]: public class HttpUtil { public s ...
- 一致性hash演示
看到点关于一致性hash的说明,觉得挺有意思,就想体验一下. 上代码看看,体会一下在一致性hash环境下的cache和获取. 因为是小代码演示,没有很细致,包括hash函数就是用取余操作,但活生生的显 ...
- poj 2528 Mayor's posters 线段树+离散化 || hihocode #1079 离散化
Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the ...
- 使用cxf调用webservice
1.引入maven包 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt ...
- JSP 表达式语言
JSP 表达式语言 JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP EL表达式内可以使用整型数,浮点 ...