Three.js是一个3D JavaScript库。Three.js封装了底层的图形接口,使得程序员可以在无需掌握繁冗的图形学知识的状况下,也能用简单的代码实现三维场景的渲染。 javascript
一个典型的Three.js程序至少要包括渲染器(Renderer)、场景(Scene)、照相机(Camera),以及你在场景中建立的物体。java
渲染器将和Canvas元素进行绑定,在HTML中手动定义了id为mainCanvas的Canvas元素,那么Renderer能够这样写:程序员
var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('mainCanvas') });
将背景色(用于清除画面的颜色)设置为黑色:canvas
renderer.setClearColor(0x000000);
在Three.js中添加的物体都是添加到场景中的,所以它至关于一个大容器。通常说,场景里没有很复杂的操做,在程序最开始的时候进行实例化,而后将物体添加到场景中便可。函数
var scene = new THREE.Scene();
咱们使用Three.js建立的场景是三维的,而一般状况下显示屏是二维的,那么三维的场景如何显示到二维的显示屏上呢?照相机就是这样一个抽象,它定义了三维空间到二维屏幕的投影方式。
WebGL和Three.js使用的坐标系是右手坐标系。spa
var camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100); //咱们把 camera 放在 XYZ 坐标为 (50, 50, 50) 的位置上,而且朝向坐标原点。 camera.position.set(50, 50, 50); camera.lookAt(new THREE.Vector3(0, 0, 0)); scene.add(camera);
正交投影照相机(Orthographic Camera)的构造函数是:code
THREE.OrthographicCamera(left, right, top, bottom, near, far)
这六个参数分别表明正交投影照相机拍摄到的空间的六个面的位置,这六个面围成一个长方体,咱们称其为视景体(Frustum)。只有在视景体内部(下图中的灰色部分)的物体才可能显示在屏幕上,而视景体外的物体会在显示以前被裁减掉。
为了保持照相机的横竖比例,须要保证(right - left)与(top - bottom)的比例与Canvas宽度与高度的比例一致。
near与far都是指到照相机位置在深度平面的位置,而照相机不该该拍摄到其后方的物体,所以这两个值应该均为正值。为了保证场景中的物体不会由于太近或太远而被照相机忽略,通常near的值设置得较小,far的值设置得较大,具体值视场景中物体的位置等决定。blog
在定义了场景中的物体,设置好的照相机以后,渲染器就知道如何渲染出二维的结果了。这时候,咱们只须要调用渲染器的渲染函数,就能使其渲染一次了。接口
renderer.render(scene, camera);