官方提供的编辑器https://threejs.org/editor/
场景(scene)
通俗的说,场景其实就是一个容器,我们可以在这个容器中,放入我们想放入的三维世界的内容,当然要放入内容,我们就需要坐标系,在Three.js中,采用的是右手笛卡尔坐标系
2d 坐标系一般来说大家都有默认: x轴朝右递增,朝左递减,y轴朝上递增,朝下递减。
而对于三维坐标系,一般有两种习俗,左手坐标系和右手坐标系,通过左手右手的组合可以很方便的说明这个情况:

简单来说,右手笛卡尔坐标系,其实就是X轴往右变大,往左变小,Y轴网上越来越大,往下越小,既然是3D,当然还有纵深的Z轴,Z轴是往屏幕外的方向越来越大,往屏幕里的方向越来越小

摄像机(camera)
另外我们要能够看到三维世界里面的东西,就需要一双眼睛,这个眼睛就是摄像机(camera)

camera基本就两种,一种叫正交相机(OrthographicCamera),一种是透视相机(PerspectiveCamera)。相机又有自己的可视角度,也有自己坐标的位置和看向的方向
其中,PerspectiveCamera这一投影模式被用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式

PerspectiveCamera通过四个属性来定义一个视锥。near定义了视锥的前端,far定义了后端,fov是视野,通过计算正确的高度来从摄像机的位置获得指定的以near为单位的视野,定义的是视锥的前端和后端的高度。aspect间接地定义了视锥前端和后端的宽度,实际上视锥的宽度是通过高度乘以 aspect 来得到的。

所以,相关的API就是由这4个参数组成的。
const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
scene.add( camera );
PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )fov — 摄像机视锥体垂直视野角度 aspect — 摄像机视锥体长宽比 near — 摄像机视锥体近端面 far — 摄像机视锥体远端面
这些参数一起定义了摄像机的viewing frustum(视锥体)。
当然现在我们只是有了眼睛(摄像机),什么内容都还没有,接下来就需要三维世界的几何体
几何体(geometry)
一个重要的知识点:
3D世界里的所有物体都是点组成面,面组成几何体。
面是由点构成的,面又可以组成各式各样的几何体
以球体举例,球体面上的点越多,球就越圆。但点越多,运算量也会越大

灯光(light)
3d引擎在没有手动创建光的情况下会默认有个
环境光,不然你什么都看不到。常见的灯光有以下几种类型
常用的灯光有下面几种类型:
- AmbientLight(环境光,没有方向全局打亮,不会产生明暗)
- DirectionLight(平行光,参考日光来理解)

- PointLight(点光源,参考灯泡来理解)

- SpotLight(聚光灯,参考舞台聚光灯)

贴图(texture)
想象一下你手里有一个立方体,你用一张A4纸包裹上立方体的所有面,并在上面画画。你画的内容就是
贴图。

材质(material)
延续贴图里的想象,你用白卡纸画画,还是用油纸画画,呈现出来的质感是不同的对不对,这就是
材质!下面五个球的颜色都是一样的,而材质从左至右分别是

MeshBasicMaterial(基础材质,不受光照影响)
MeshStandardMaterial(PBR标准材质)
MeshPhongMaterial(高光材质,适用于陶瓷,烤漆类质感)
MeshToonMaterial(卡通材质)
MeshStandardMaterial(PBR标准材质模拟金属反射)




