龙空技术网

惊艳WEB的3D动画

展谊科技 132

前言:

此刻你们对“js旋转动画”大体比较关心,大家都想要知道一些“js旋转动画”的相关文章。那么小编也在网摘上搜集了一些对于“js旋转动画””的相关内容,希望看官们能喜欢,朋友们快快来了解一下吧!

lero

随着AR、VR的火爆,3D技术也逐渐被人们所广泛使用。随着浏览器,手机性能的提高,随着用户对炫酷页面追求,许多3D效果也日渐诞生在web领域。

在2011年上半年公开发布的WebGL技术就是这样一门技术,它可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏。

WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

而3D开发的本身是复杂的,是具有高成本,低回报的。为了解决这种复杂性,诞生了许多底层开发的引擎。而今天要分享的Three.js就是其中一个,他是开源并且被众多浏览器广泛支持的技术。

接下了我们来制作一个3D立方体旋转动画。

1.开发环境准备

调试建议使用 Chrome 或者 Firefox 浏览器,仅此而已。不需要额外的插件支持。(建议升级到最新版本)

2.下载Three.js

传送门:github.com/mrdoob/three.js/tree/master

下载好后我们可以在源码中找到three.js,在使用 Three.js 之前,我们需要在 HTML 文件中引用该文件。

伪代码片段如下:

<script type="text/javascript" src="three.js"></script>

然后就能通过全局变量THREE访问到所有属性和方法了。

3.开发第一个3D立方体网格旋转动画

开发一个Three.js至少要包括渲染器(Renderer)、场景(Scene)、照相机(Camera),以及你在场景中创建的物体。

场景(Scene)

在 Three.js 中添加的物体都是添加到场景中的,因此它相当于一个大容器。相当于HTML中canvas中的画布。

伪代码:var scene = new THREE.Scene();

接下来需要一个相机(Camera)。

Camera 是三维世界中的观察者,为了观察这个世界,首先我们要描述空间中的位置

X,Y,Z.

在三维世界里:

如果我们正对着电脑而坐,以电脑屏幕中心点为参考:

那么 x轴正方向:水平向右

那么Y轴正方向:垂直于x轴向上

那么z轴正方形:垂直于屏幕向外

伪代码:

Var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );

camera.position.z = 1000;

说明:其中PerspectiveCamera代表正交相机,它的5个参数分别代表:

第一个参数: fov 指明相机的可视角度,可选参数,如果未指定,初始化为50°

第二个参数:aspect指明相机可视范围的长宽比,可选参数,如果未指定,初始化为1

第三个参数: near指明相对于深度剪切面的近的距离,必须为正数,可选参数,如果未指定,初始化为0.1

第四个参数: far指明相对于深度剪切面的远的距离,必须为正数,可选参数,如果未指定,初始化为2000

注意:以上单位除了第一个参数为度以外,其余的均为米。

再接下来我们需要创建一个物体(Object),物体是场景中可以通过相机观察到的事物。

物体具有形状,材质。

物体形状的定义有很多种,其中立方体的定义

伪代码:var geometry = new THREE.BoxGeometry( 200, 200, 200 );

代表定义了一个200米长宽深的立方体

物体材质的定义:

伪代码:var material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );

接下来需要描述物体的模型并添加到场景中:我们用了一个3D经典模型网格模型。这个模型需要物体的形状和材质作为参数

伪代码:var mesh = new THREE.Mesh( geometry, material );

Scene.add(mesh)

再次:我们需要浏览器渲染这种模型,因此需要一个渲染器(Renderer)

伪代码为:

renderer = new THREE.WebGLRenderer();

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

document.body.appendChild( renderer.domElement );

最后,想要看动画:我们需要使用js提供的一个动画API来完成动画的渲染:

function animate() {

requestAnimationFrame( animate );

mesh.rotation.x += 0.01;

mesh.rotation.y += 0.02;

renderer.render( scene, camera );

}

在这个动画渲染中,我们让模型绕X,y旋转。

最后的动画效果如下所示:

该项目的源码为:

至此 一个入门级3d动画就完成了,后续将继续深入讲解该系列。喜欢的就关注吧。

标签: #js旋转动画