Three.js 开发基础知识 - 绘制3D对象

techbrood 发表于 2016-05-18 18:34:29

标签: webgl, 三维, three.js, html5

- +

Three.js是一个用来简化WebGL开发的JavaScript库,比如绘制一个三维立方体,

使用WebGL需要100多行,那Three.js只要10几行就能够完成。

本文通过创建一个立方体来简单介绍Three.js的基础知识。

Three.js中的基本概念

Three.js包含3个基本概念:场景(Scene)、相机(Camera)和渲染器(Renderer)。

场景就是需要绘制的对象,相机代表取景的视角,渲染器是绘制的载体(可以挂靠到浏览器的DOM元素中),

也就是我们通过相机拍摄场景然后绘制到目标介质中去。

创建场景、相机和渲染器
var scene = new THREE.Scene();  
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );  
  
var renderer = new THREE.WebGLRenderer();  
renderer.setSize( window.innerWidth, window.innerHeight );  
document.body.appendChild( renderer.domElement );

上述代码首先创建一个场景,然后创建一个PerspectiveCamera(立体感的相机),

接着创建了一个WebGL的渲染器(注意Three.js也支持非3D的Canvas 2D的渲染器),然后挂靠为HTML文档body的DOM子元素。

创建立方体 
var geometry = new THREE.BoxGeometry( 1, 1, 1 );  
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );  
var cube = new THREE.Mesh( geometry, material );  
scene.add( cube );  
  
camera.position.z = 5;

有了场景,我们就可以在场景上添加实际几何对象,上述代码首先创建一个BoxGeometry(盒状几何)对象,

接着创建了一个色彩为绿色的材料,然后通过Mesh(图元装配函数)方法把颜色应用到几何对象上,这样就构建了一个绿色的立方体。

最后把该立方体对象添加到场景(scene)中,并设置视觉深度。

绘制场景

编写了上述代码后,我们就已经有了可以绘制的对象、视角、渲染器;接下来就是把对象实际绘制出来。

function render() {  
    requestAnimationFrame( render );  
    renderer.render( scene, camera );  
}  
render();

上面的代码实际是一个循环操作,每60秒绘制一下场景。之所以使用requestAnimationFrame方法,

而不是setInterval是因为前者更能节省资源(在浏览器页面切换时,会暂停执行)。

实现动画

接下来我们尝试让这个立方体旋转起来,这样更有趣一些。在render函数中添加如下代码:

cube.rotation.x += 0.1;  
cube.rotation.y += 0.1;

也就是通过动态改变立方体的x和y的径向坐标来实现旋转。

完整代码和最终效果:Three.js 旋转的立方体

possitive(13) views19122 comments0

发送私信

最新评论

请先 登录 再评论.
相关文章