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(0) views16740 comments0

发送私信

最新评论

请先 登录 再评论.
相关文章
  • ARCore基本概念和工作原理简介

    谷歌的WebAROnARCore项目基于Android手机提供的ARCore增强现实引擎,要了解WebAROnARCore,需要先了解ARCore的工作原理。基本上ARCore做了两件事,首先跟踪手机...

  • HTML5 And Canvas 2D Specs Are Now Feature Complete, First HTML 5.1 Working Draft Published

    We’ve been writing about HTML5 for quite a while, but, until today, the actual HTML5 specs and standards were still moving targets. Now, however, the...

  • 踏得网精选2016年度10大最佳HTML5动画

    踏得网精选2016年度最酷最新的HTML5动画集,评选标准为:创意新颖度+实现技术难度+趣味程度。使用一些在线H5生成工具的作品,因其主要使用图片和CSS3套路动画,...

  • WebAssembly工作原理和JavaScript语言性能对比分析

    本文简单说明WebAssembly(简称wasm)工作原理和高性能的原由(和JavaScript相比)。不过需要提醒的是Wasm并非设计来完全替代JS,而是对JS的一个强大补充,JS中...

  • WebGL、Asm.js和WebAssembly概念简介

    随着HTML技术的发展,网页要解决的问题已经远不止是简单的文本信息,而包括了更多的高性能图像处理和3D渲染方面。这正是要引入WebGL、Asm.js和WebAssembly这些技...

  • React JSX语法简介

    JSX是一种类似XML的标签语法,用来简化代码,我们可以不使用JSX,但了解并使用也没什么坏处:)在React中,JSX是一个使用 React.createElement() API的快捷方式...

  • 三维向量的简单运算和实用意义

    在WebGL的实际应用中我们广泛使用向量的几何运算来计算角度、距离,判断点线、点面之间的关系,比如物体之间的碰撞检测。本文简要介绍三维计算机图形学中常用的...

  • Three.js入门教程2 - 着色器(下)

    这是WebGL着色器教程的后半部分,如果你没看过前一篇,阅读这一篇教程可能会使你感到困惑,建议你翻阅前面的教程。

  • Processing.js和P5.js的功能简介和区别

    什么是ProcessingProcessing是关于数字艺术的编程语言,支持跨平台,语言本身是一个类Java语言,程序文件的后缀为.pde。
    什么是Processing.js为了能让Proce...

  • 如何使用CSS3实现一个3D商品标签

    使用3D缎带形状的标签是常见的一个设计模式,用在商品折扣、文章标题或网站推荐信息上,来突出显示重点内容,吸引用户视觉焦点。实现的方法有2种,一种是使用背...

  • 如何使用CSS3实现书页(书本)卷角效果

    我们有时候想在页面显示一个公告或用户提示信息。一个常用设计是使用书签形状。我们可以给书签添加卷角效果,以使其更为逼真。所谓的“卷角”实际上可以用小角度...

  • SVG过滤器feColorMatrix矩阵变换效果用法详解

    在计算机图形学(数学)中,矩阵乘法可用于把空间向量进行几何变换。我们可以把颜色的值(RGBA)表示成一个四维空间向量:color = (r, g, b, a);那么就可以应用...

  • 更多...