Three.js入门和基础动画

用Three.js绘制3D图形的步骤包括:定义场景、相机、渲染器、光线、物体。

### 定义场景

var scene = new THREE.Scene();

scene相当于一个容器,用来包容我们想渲染的物体。

### 定义相机

var camera = new THREE.PerspectiveCamera(fov, aspect, near, far);

### 定义渲染器

var webGLRenderer = new THREE.WebGLRenderer();

webGLRenderer.setClearColor(new THREE.Color(0x000, 1.0));

webGLRenderer.setSize(window.innerWidth, window.innerHeight);

webGLRenderer.shadowMapEnabled = true;

### 定义光源

var spotLight = new THREE.SpotLight(0xffffff); //设置光源颜色

spotLight.position.set(-20, 30, 40); //设置光源颜色

spotLight.intensity = 1.5 //设置光源亮度;

光线包括:AmbientLight(环境光)、PointLight(点光源)、SpotLight(聚光灯光源)、DirectionalLight(方向光)、HemisphereLight(半球光)、AreaLight(面光源)、LensFlare(镜头眩光)。

定义物体

Three.js提供了基本几何图形,包括二维和三维图形。

创建几何体只需要:

new THREE.PlaneGeometry(width, height, widthSegments, heightSegments);

二维图形包括:PlaneGeometry(平面),CircleGeometry(平面圆)、ShapeGeometry(自定义二维图形)。

三维图形包括:CubeGeometry(立方体)、SphereGeometry(球体)、CylinderGeometry(圆柱)、TotusGeometry(圆环)……

如果是外部模型,则通过

loader.load(path, function(result){}

加载到场景中。

### 动画

动画包括改变位置、缩放、旋转。

obj.position.x=stepX; obj.position.y=stepY;obj.position.z=stepZ;

obj.scale.set(scaleX, scaleY, scaleZ)

obj.rotation.x = rotationX; obj.rotation.y = rotationY; obj.rotation.z = rotationZ;

通过requestAnimatinoFrame来安排下一次渲染:

requestAnimatinoFrame(render);

如果要让几何体在垂直于Y轴的平面上沿着圆环运动,用sin、cos改变位置:

obj.position.x = r*Math.cos(t);

obj.position.z = r*Math.sin(t) - r;