一、前言
Three.js (github) 是一个纯 JavaScript 实现的 3D 渲染库,其在前端 3D 渲染的地位不言而喻,看其在 github 上的 start 4.6 k,fork 1.7 k 这个量级便知道了。准确来说 ThreeJs 是一个基于 WebGL 的封装,而 WebGL 就是前端界的 OpenGL。
二、Github 首页解读
1.简介
该项目的目的是创建一个易于使用,轻量级的3D库。该库提供Canvas 2D,SVG,CSS3D和WebGL渲染器。
Examples: 真的是史上见过最全的例程,良心良心啊,不过没有文档说明,也没有注释。捂脸.jpg
Document: 文档也是非常的齐全了,同样是良心作品。
其他链接有兴趣的可以自己去探求一下。
2.使用
首先在自己的页面中安装或者以模块的方式进行导入,再或者自己可以进行源码编译并导入。
<script src="js/three.min.js"></script>
下面是github首页给的一个小例子,有兴趣的可以拿来运行一下,改改里面的参数,感受一下 3D 的世界。
var camera, scene, renderer;
var geometry, material, mesh;
init();
animate();
function init() {
// 创建一个相机
camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
camera.position.z = 1;
// 创建场景
scene = new THREE.Scene();
// 创建一个3D Box 几何体
geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 );
material = new THREE.MeshNormalMaterial();
// 创建 mesh 并添加到场景中
mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
// 创建一个 WebGLRenderer 并加入到上下文中
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
}
function animate() {
requestAnimationFrame( animate );
mesh.rotation.x += 0.01;
mesh.rotation.y += 0.02;
renderer.render( scene, camera );
}
不想自己敲代码的,也可以看看 github 中提供的 jsfiddle 中绘制出来的效果。没法搞出一个 gif 出来,只得到一个 jpg,凑合着看看?

除了 GitHub 首页,其还提供了一个官网 https://threejs.org/,官网提供了 document 入口,源码下载地址或者直接下载,同时也有许多非常炫丽的产品展示。尤其亮瞎我钛金眼的法拉第FF,真是吃了好大一个鲸 —— ff 91 vr

三、源码基本结构
1.本地调试源码
(1) npm install 安装依赖
(2) npm run dev 在本地起一个服务
成功后,如下会在本机开启一个 8080 端口,然后你就可以愉快的在本机体验所有的 demo 效果了。
控制台输出
[HTTP] Starting up http-server, serving ./
[HTTP] Available on:
[HTTP] http://127.0.0.1:8080
[HTTP] http://192.168.31.175:8080
[HTTP] Hit CTRL-C to stop the server
2.基本结构
浏览器输出上面的 http 地址,如 http://127.0.0.1:8080,注意必须要用 http/https 协议,否则例程里面的模型是不能下载的,即,不支持 ftp。

然后再来看一下 src 里面都有哪一些模块

模块名 | 说明 |
---|---|
animation | 动画模块 |
audio | 音频 |
cameras | 3D 相机 |
extras | 其他 |
geometrics | 基础几何对象 |
helpers | 帮助类 |
lights | 光源 |
loaders | 3D 模型加载器 |
materials | 材质 |
textures | 纹理 |
objects | 用于加入到场景中的对象 |
renderers | WebGL渲染,glsl 定义 |
scenes | 场景 |
core | 属性,几何,3D对象,光线跟踪等 |
math | 向量,矩阵等 |
网友评论