学习three.js入门简介(1)

63 阅读2分钟

简介什么是three.js

Three.js是一款开源的主流 3D绘图JS引擎 (名字Three就是3D的含义),原作者为Mr.Doob,项目地址为:github.com/mrdoob/thre…。它可以简化WebGL编程。

什么是WebGL呢 WebGL是一种3d绘图协议,简单来说WebGL是一种浏览器上显示3d效果的技术,或者说是在浏览器中实现三维效果的一套规范。

three.js和WebGL的关系 简单来讲Three.js是基于webgl的基础上的集成,优化了它的使用,Three.js是WebGL的一个封装库,它使WebGL的学习更为简单

Three.js的三大基本对象

创建WebGL程序本是一种面向过程的编程,但在Three.js中要使用面向对象的方式来构建程序。要渲染物体到网页中,我们需要3个组件,也就是3个基本对象:场景(scene)、相机(camera)和渲染器(renderer)。

image.png

场景scene

在Threejs中,场景就只有一种,用THREE.Scene来表示,要构件一个场景也很简单,只要new一个对象就可以了,当然一个页面中可以多个场景。

var scene = new THREE.Scene();

相机(camera)

在Three.js中有多种相机,最常用的主要是两种: (1) 透视相机PerspectiveCamera :离视点近的物体大,离视点远的物体小,远到极点即消失成为灭点,这就是人的眼睛观察世界的形式。 (2) 正投影相机OrthographicCamera :远处和近处一样大,投影到物体的大小不受距离的影响,我的个人理解就是上帝视角

透视相机var camera = new THREE.PerspectiveCamera(fov,aspect,near,far);

它有四个参数fov,aspect,near,far,

fov参数

是视野fov(field of view,即在任何给定时刻显示的场景范围,该值以度为单位,比如设置为75,相当于相机到物体最上面的平面之间的夹角为75度

image.png

aspect参数

相机拍摄平面的长宽比 ,即平面的宽除以高,一般会设置为页面的宽除以高(EF/FG),不然图形可能会变形

near和far

分别是 近剪裁平面(ABCD)和远剪裁平面(EFGH)到相机的距离,即图中的OC和OG。要注意near不能设置为负值,且near和far的值不能相同,不然相机就看不到了。

渲染器(renderer)

image.png

渲染器定义

创建渲染器对象

var renderer = new THREE.WebGLRenderer();

设置渲染程序大小

setSize的第三个参数updateStyle设置false时,大小不变,将以半分辨率呈现应用程序,但还有一个前提是 canvas画布 具有100%的宽度和高度

将render添加到html中

document.body.appendChild(renderer.domElement); 准备工作完成,下面进行demo的开发