简介什么是three.js
Three.js是一款开源的主流 3D绘图JS引擎 (名字Three就是3D的含义),原作者为Mr.Doob,项目地址为:github.com/mrdoob/thre…。它可以简化WebGL编程。
什么是WebGL呢 WebGL是一种3d绘图协议,简单来说WebGL是一种浏览器上显示3d效果的技术,或者说是在浏览器中实现三维效果的一套规范。
three.js和WebGL的关系 简单来讲Three.js是基于webgl的基础上的集成,优化了它的使用,Three.js是WebGL的一个封装库,它使WebGL的学习更为简单
Three.js的三大基本对象
创建WebGL程序本是一种面向过程的编程,但在Three.js中要使用面向对象的方式来构建程序。要渲染物体到网页中,我们需要3个组件,也就是3个基本对象:场景(scene)、相机(camera)和渲染器(renderer)。
场景scene
在Threejs中,场景就只有一种,用THREE.Scene来表示,要构件一个场景也很简单,只要new一个对象就可以了,当然一个页面中可以多个场景。
var scene = new THREE.Scene();
相机(camera)
在Three.js中有多种相机,最常用的主要是两种: (1) 透视相机PerspectiveCamera :离视点近的物体大,离视点远的物体小,远到极点即消失成为灭点,这就是人的眼睛观察世界的形式。 (2) 正投影相机OrthographicCamera :远处和近处一样大,投影到物体的大小不受距离的影响,我的个人理解就是上帝视角
透视相机var camera = new THREE.PerspectiveCamera(fov,aspect,near,far);
它有四个参数fov,aspect,near,far,
fov参数
是视野fov(field of view,即在任何给定时刻显示的场景范围,该值以度为单位,比如设置为75,相当于相机到物体最上面的平面之间的夹角为75度
aspect参数
相机拍摄平面的长宽比 ,即平面的宽除以高,一般会设置为页面的宽除以高(EF/FG),不然图形可能会变形
near和far
分别是 近剪裁平面(ABCD)和远剪裁平面(EFGH)到相机的距离,即图中的OC和OG。要注意near不能设置为负值,且near和far的值不能相同,不然相机就看不到了。
渲染器(renderer)
渲染器定义
创建渲染器对象
var renderer = new THREE.WebGLRenderer();
设置渲染程序大小
setSize的第三个参数updateStyle设置false时,大小不变,将以半分辨率呈现应用程序,但还有一个前提是 canvas画布 具有100%的宽度和高度
将render添加到html中
document.body.appendChild(renderer.domElement);
准备工作完成,下面进行demo的开发