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.最后,我们写一个主函数执行以上五步: 附上全部源码 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|