首页 存档 技术 查看内容

【B06来分享】 || Three.js简介与入门

2018-3-30 13:00 |来自: 互联网 301 0

摘要: Three.js简介与入门内容Three.js简介_________1 简介...........1 Three.js 是一款运行在浏览器中的3D引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的 ...

Three.js简介与入门

内容

Three.js简介_________1

简介...........1

Three.js 是一款运行在浏览器中的3D引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。Three.js的代管托管在github面..........1

Three.js特点(此处引自《webgl入门指南》)...........1

Three.js_________3

联系信息________ 4


Three.js简介

简介


Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。three.js的代码托管在github上面。


Three.js是javascript的三维引擎,封装好了底层的图像接口,使程序猿可以用简单的代码实现三维场景渲染




Three.js特点(此处引自《webgl入门指南》)


1.THREEJS 掩盖了3d渲染细节

意思就是说你不用直接用webgl编程了,但是个人认为入门还是很难,尤其是像我这种软件工程,没学过计算机图形图像学的人。个人建议计算机图形图像入门直接从U3D开始,首先理解上层的基本概念,然后往下深入原理

2.THREEJS是面对对象的

对没错是面对对象,直接调用对象,我js就是个渣,然后意识到软件工程需要好好学时,从THREEJS模仿了很多类的学习

3.THREEJS 功能丰富

这个如果你想体验一下的话最好到github下载一下源码,跑一下里面的example,居然还有VR的demo,当时我跑demo的时候Oculus刚刚被收购没多久,当时我就震惊了,也不知道这个VR是不是支持Oculus的,没详细查查。

4.THREEJS 速度很快

速度很快,这个快,估计是相对于以前的速度吧,哪怕你使用了CSS3Drender,并且有很多dom操作,一样不顺畅。

5.THREEJS 支持交互

它补充了webgl,webgl自身不支持拾取(picking)

6.THREEJS 包含数学库

7.THREEJS 内置文件支持

支持的文件格式真的很多,甚至支持点云格式。还有json和二进制

8.THREEJS扩展性很强

开源的,,,,,你懂的,别说扩展了,就是你把他改个名字说是自主研发都没事,反正又不是没有公司这么干,就是把前面的THREE替换成了自己公司的名字缩写,貌似是这样的。

9.THREEJS 同时支持HTML5 2D Canvas

这个主要是增强了兼容性,毕竟有的地方获取3d上下文



Three.js入门


1.开发环境搭建

直接从git上面git clone下来到本地放在工程文件里面就好

2.进行实例开发

搭建一个三维场景包括下面几步

1.设置three.js渲染器

2.设置摄像机camera

3.设置场景scene

4.设置光源light

5.设置物体object


下面具体以代码演示每一步

1. 设置three.js渲染器

三维空间里的物体映射到二维平面的过程被称为三维渲染。 一般来说我们都把进行渲染操作的软件叫做渲染器。 具体来说要进行下面这些处理。

(0) 声明全局变量(对象);

(1) 获取画布「canvas-frame」的高宽;

(2) 生成渲染器对象(属性:抗锯齿效果为设置有效);

(3) 指定渲染器的高宽(和画布框大小一致);

(4) 追加 【canvas】 元素【canvas3d】 元素中;

(5) 设置渲染器的清除色(clearColor)。


2.设置摄像机camera

OpenGL(WebGL)中、三维空间中的物体投影到二维空间的方式中,存在透视投影和正投影两种相机。 透视投影就是、从视点开始越近的物体越大、远处的物体绘制的较小的一种方式、和日常生活中我们看物体的方式是一致的。 正投影就是不管物体和视点距离,都按照统一的大小进行绘制、在建筑和设计等领域需要从各个角度来绘制物体,因此这种投影被广泛应用。在 Three.js 也能够指定透视投影和正投影两种方式的相机。 本文按照以下的步骤设置透视投影方式。

(0) 声明全局的变量(对象);

(1) 设置透视投影的相机;

(2) 设置相机的位置坐标;

(3) 设置相机的上为「z」轴方向;

(4) 设置视野的中心坐标。


3.设置场景scene

场景就是一个三维空间。 用 [Scene] 类声明一个叫 [scene] 的对象。


4.设置光源light

OpenGL(WebGL)的三维空间中,存在点光源和聚光灯两种类型。 而且,作为点光源的一种特例还存在平行光源(无线远光源)。另外,作为光源的参数还可以进行 [环境光] 等设置。 作为对应, Three.js中可以设置 [点光源(Point Light)] [聚光灯(Spot Light)] [平行光源(Direction Light)],和 [环境光(Ambient Light)]。 和OpenGL一样、在一个场景中可以设置多个光源。 基本上,都是环境光和其他几种光源进行组合。 如果不设置环境光,那么光线照射不到的面会变得过于黑暗。 本文中首先按照下面的步骤设置平行光源,在这之后还会追加环境光。

(0) 声明全局变量(对象)

(1) 设置平行光源

(2) 设置光源向量

(3) 追加光源到场景

这里我们用「DirectionalLight」类声明一个叫 [light] 的对象来代表平行光源


5.设置物体object

这里,我们声明一个球模型

6.最后,我们写一个主函数执行以上五步:

附上全部源码

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部