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(2) views17370 comments0

发送私信

最新评论

请先 登录 再评论.
相关文章
  • CSS3人行走动作图解和动画实现

    对于人类而言,行走是一种很自然的想要前进并防止跌倒的一组动作重复。大部分人1岁就学会了走路,但至此以后的几十年间,或许我们从来没留意过自己行走姿势。当...

  • CSS3弹性布局内容对齐(justify-content)属性使用详解

    内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。该操作发生在弹性长度以及自动边距被确定后。 它用来在存...

  • 深入理解JS和CSS3动画性能问题和技术选择

    本文对比了JS及其框架和CSS3的动画性能,并深入剖析了其内在原因。技术结论大致如下:1. jQuery出于设计原因,在动画性能上表现最差2. CSS3由于把动画逻辑推给了...

  • Three.js 对象局部坐标转换为世界坐标

    在Three.js中进行顶点几何计算时,一个需要注意的地方是,需要统一坐标系。比如你通过Three.js提供的API创建了一个球体网孔对象,那么默认情况下,各网孔顶点的...

  • 如何使用Three.js加载obj和mtl文件

    OBJ和MTL是3D模型的几何模型文件和材料文件。在最新的three.js版本(r78)中,以前的OBJMTLLoader类已废弃。现在要加载OBJ和MTL文件,需要结合OBJLoader和MTLLoade...

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

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

  • WebGL入门教程1 - 3D绘图基础知识

    现代浏览器努力使得Web用户体验更为丰富,而WebGL正处于这样的技术生态系统的中心位置。其应用范围覆盖在线游戏、大数据可视化、计算机辅助设计、虚拟现实以及数...

  • 使用Canvas绘制完美的不完美圆形

    真实世界是不完美的,当我们需要模拟真实世界时,经常需要引入不完美/不规则的形状。比如陨石、雨滴、行星、树叶、绵延的海岸线、云朵等。本文介绍如何基于Canva...

  • HTML网页布局:静态、自适应、流式、响应式

    静态布局(Static Layout)即传统Web设计,对于PC设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分;对于移动设备,单独设计一个布...

  • div 、section 、article的区别和使用场景

    div 、section 、article的区别和使用场景
    主要区别,以及适用场合如下:
    1、div在html早期版本就支持了,section和article是html5提出的两个雨衣话标...

  • 使用CSS3实现流星雨动画教程

    很多营销页面中需要实现类似流星雨的动画背景,营造节日浪漫的气氛。要实现这样的效果,有两种方法,一个是使用Canvas,一个是使用纯CSS3,我们这里介绍第2种方...

  • 如何使用CSS3/SCSS实现逼真的车窗雨滴效果

    在天气预报类的Web移动应用中,常常需要实现屏幕的雨滴效果,表示阴雨天气。感觉上比较神奇,其实想通了,这个效果的实现只需要一点物理知识和CSS3的简单变换。实现一个小雨滴首先雨滴是一个个小的椭圆形元素:.raindrop

  • 更多...