Hello Three.js

98 阅读1分钟

代码地址:code.juejin.cn/pen/7204996…

原文地址:threejs.org/docs/index.…

涉及名词

  • Renderer:渲染器
  • Scene:场景
  • Camera:相机
  • Geometry:几何体
  • Material:材质
  • Mesh:网格

代码理解

WebGLRenderer

const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

renderer.render( scene, camera );

渲染器分为两个部分,一是关联 WebGL 和 Canvas 元素,二是渲染(调用 render 更新渲染结果)。

初始化有两种方式,一是 WebGLRenderer 实例化时传入 Canvas 元素(推荐方式),二是不传 Canvas 元素,WebGLRenderer 会自动创建一个 Canvas,需要手动的将该元素插入到 DOM 树之中。

渲染时两个参数,scene 和 camera。

Scene

场景允许你设置 three.js 渲染内容和位置。这是放置物体、灯光和相机的地方。

const scene = new THREE.Scene();
scene.add( cube );

疑问:显示内容通过 scene.add 方法增加到场景中,但是相机是 renderer 渲染的时候进行关联的,好像并不是放置在场景中的。

Cammera

PerspectiveCamera:模拟人眼的效果,近大远小。

const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
camera.position.z = 5;

Geometry

const geometry = new THREE.BoxGeometry( 1, 1, 1 );

Material

材质是线段属性或者物体表面的一些颜色、贴图、光亮程度、反光特性、粗糙程度等属性。

const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );

Mesh

网格包含的内容为几何体、几何体的材质、几何体的自身网格坐标体系。

const cube = new THREE.Mesh( geometry, material );

cube.rotation.x = step;
cube.rotation.y = step;

一个几何体或材质,可以被多个网格使用,一个场景内可以添加多个网格。

参考文档: